@ytsaurus/ui 1.79.0 → 1.79.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 +14 -14
- package/dist/public/build/js/{1879.962838b9.chunk.js → 1879.f4465fb8.chunk.js} +3 -3
- package/dist/public/build/js/1879.f4465fb8.chunk.js.map +1 -0
- package/dist/public/build/js/{cluster-page-wrapper.02c253fb.chunk.js → cluster-page-wrapper.be34909b.chunk.js} +2 -2
- package/dist/public/build/js/{cluster-page-wrapper.02c253fb.chunk.js.map → cluster-page-wrapper.be34909b.chunk.js.map} +1 -1
- package/dist/public/build/js/main.1b9bcd0d.js +3 -0
- package/dist/public/build/js/main.1b9bcd0d.js.map +1 -0
- package/dist/public/build/js/navigation.224699d1.chunk.js +2 -0
- package/dist/public/build/js/navigation.224699d1.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.7d6e2b08.js → runtime.9ef80b86.js} +2 -2
- package/dist/public/build/js/{runtime.7d6e2b08.js.map → runtime.9ef80b86.js.map} +1 -1
- package/dist/public/build/manifest.json +10 -10
- package/package.json +2 -2
- package/dist/public/build/js/1879.962838b9.chunk.js.map +0 -1
- package/dist/public/build/js/main.ecd81ac9.js +0 -3
- package/dist/public/build/js/main.ecd81ac9.js.map +0 -1
- package/dist/public/build/js/navigation.28d88abf.chunk.js +0 -2
- package/dist/public/build/js/navigation.28d88abf.chunk.js.map +0 -1
- /package/dist/public/build/js/{1879.962838b9.chunk.js.LICENSE.txt → 1879.f4465fb8.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.ecd81ac9.js.LICENSE.txt → main.1b9bcd0d.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"js/navigation.224699d1.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/shared/tablet-errors-manager.ts","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/ClickableAttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/histogram.js","webpack://@ytsaurus/ui/./src/ui/components/Histogram/HistogramChart.tsx","webpack://@ytsaurus/ui/./src/ui/components/Histogram/Histogram.js","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/info-icon2.svg","webpack://@ytsaurus/ui/./src/ui/components/Info/Info.tsx","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/compression.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/erasure-replication.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/main.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/RowsCount/RowsCount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/AutomaticModeSwitch.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/presets.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/commonFields.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/size.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/ttl.tsx","webpack://@ytsaurus/ui/./src/ui/components/SchemaDataType/SchemaDataType.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/react.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/ErrorBoundary/ErrorBoundary.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/getErrorMessage.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/Loader/Loader.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/ChartKit.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/plugins/yagr/index.js","webpack://@ytsaurus/ui/./src/ui/components/YagrChartKit/YagrChartKit.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/YTTimeline.tsx","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedTextOrLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedId/FormattedId.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/index.js","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/constants/pagination.ts","webpack://@ytsaurus/ui/./src/ui/containers/ACL/RequestPermissions/RequestPermissions.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/modals/cell-preview.ts","webpack://@ytsaurus/ui/./src/ui/containers/CellPreviewModal/CellPreviewModal.tsx","webpack://@ytsaurus/ui/./src/ui/containers/Host/Host.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/useResizeObserver.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountLink.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/helpers/pathToFileName.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editing-popup.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/path-editing-popup.js","webpack://@ytsaurus/ui/./src/ui/hocs/components/Modal/withScope.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-hotkeysjs-scope.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/PathEditorModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/copy-object.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/CopyObjectModal/CopyObjectModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-directory.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/CreateDirectoryModal/CreateDirectoryModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/move-object.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/MoveObjectModal/MoveObjectModal.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/restore-object.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/restore-object.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/RestoreObjectModal/RestoreObjectModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/ACL/ACL.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table-rum-id.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/columns-preset.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table.js","webpack://@ytsaurus/ui/./src/ui/components/FilePicker/FilePicker.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/UploadManager/UploadManager.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/map-node-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/dyn-tables-state-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableActions.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/TableMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTableSettings.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/replicated-table.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTable.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTableMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Link/Link.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/file.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/file.js","webpack://@ytsaurus/ui/./src/ui/containers/NavigationExtraActions/NavigationExtraActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/File/File.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/DataTableWrapper/DataTableWrapper.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/ColumnsPresetButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/ColumnSelectorButton.tsx","webpack://@ytsaurus/ui/./node_modules/screenfull/index.js","webpack://@ytsaurus/ui/./src/ui/components/FullScreen/FullScreen.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/FullScreenButton.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/SettingsButton.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/jupyter-logo.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/JupyterButton.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/pagination.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/OffsetSelectorButton.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/OffsetInput.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/Paginator.js","webpack://@ytsaurus/ui/./src/ui/containers/YQLKitButton/YQLKitButton.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/settings/navigation.ts","webpack://@ytsaurus/ui/./src/ui/containers/OpenQueryButtons/OpenQueryButtons.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.tsx","webpack://@ytsaurus/ui/./src/ui/constants/navigation/modals/attributes-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/attributes-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/attributes-editor.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/delete-object.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/table-erase-modal.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/map-nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/map-node.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/Chooser.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/remote-copy-modal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MultipleActions.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/map-node.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/link-to-modal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/PathActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/EditTableActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/DatalensButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableOverview.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/OffsetSelectorModal/OffsetSelectorModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableColumnsPresetNotice.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/Table.js","webpack://@ytsaurus/ui/./src/ui/components/TTLInfo/TTLInfo.tsx","webpack://@ytsaurus/ui/./src/ui/navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/UploadManager/UploadManagerCreate.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/NodesTypes/NodesTypes.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-aco.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNode.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/document.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/document.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentBody.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentEditModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/Document.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentWithRum.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/transaction.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Transaction/Transaction.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/transaction-map/transaction.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/transaction-map.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/transaction-map/table.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/transaction-map.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/TransactionMap/TransactionMap.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/getComponentByContentType.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/queue.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/consumer.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/filters.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/TargetQueue/TargetQueue.tsx","webpack://@ytsaurus/ui/./src/ui/components/Multimeter/BarChart.tsx","webpack://@ytsaurus/ui/./src/ui/components/Multimeter/Multimeter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Meta/Meta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Toolbar/Toolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/utils/column-builder.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/Partitions/Partitions.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/partitions.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/Partitions/PartitionsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Consumer.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/ConsumerMetrics/ConsumerMetrics.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/status.ts","webpack://@ytsaurus/ui/./src/ui/components/Alerts/Alerts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Meta/Meta.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/filters.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Toolbar/Toolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/QueueMetrics/QueueMetrics.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/Consumers.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/ConsumersExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Partitions/Partitions.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/partitions.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Partitions/PartitionsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Queue.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/status.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/locks.js","webpack://@ytsaurus/ui/./src/ui/utils/clusters.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/locks.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Locks/Locks.js","webpack://@ytsaurus/ui/./src/ui/components/ErrorIcon/ErrorIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/MarkdownLinePreview/MarkdownLinePreview.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Schema/Schema.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/schema.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/tables.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablets-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Tablets/Tablets.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/attributes.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/attributes/attributes.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Attributes/Attributes.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/Timeline/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/access-log.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/access-log/access-log.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccountsLogTransactionInfo.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogError.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/access-log.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/abbr-sql.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogOpenQtButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogFilters.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrorsBackground.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablet-errors-by-path.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablet-errors/tablet-errors-by-path.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrorsByPath/TabletErrorsByPathTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrorsByPath/TabletErrorsByPath.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrors.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/user-attributes.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/user-attributes.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/UserAttributes/UserAttributes.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TableMountConfig/TableMountConfig.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Flow/index.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/getComponentByMode.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/checkContentIsSupported.ts","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withKeyboardNavigation.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNodesTable.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/DeleteObjectModal/DeleteObjectModal.tsx","webpack://@ytsaurus/ui/./src/shared/constants/settings-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/AnnotationWithPartial.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/ActionButtons.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/NavigationDescription.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/ContentViewer.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/NavigationErrorImage.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/500.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/901.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/ACL/RequestPermissions/RequestPermissions.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/RequestPermission/RequestPermissionIsNotAllowed.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/RequestPermission/RequestPermission.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/helpers/helpers.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/NavigationError.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationPermissionsNotice.tsx","webpack://@ytsaurus/ui/./src/ui/utils/accounts/accounts.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/AttributesEditor.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/remote-copy-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/RemoteCopyModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/table-erase-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableEraseModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableMergeSortModal/TableSortModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableMergeSortModal/TableMergeModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/dyn-tables-state-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/DynTablesStateModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/link-to-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/LinkToModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/create-aco-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/CreateACOModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/Navigation.js","webpack://@ytsaurus/ui/./src/ui/components/Editor/Editor.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/acl.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/readDynamicTable.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/readStaticTable.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/format.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/dynamic-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/static-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl-filters.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chaos_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/favourites.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/attributes-to-filter.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/expanded-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool-child.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overview.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/table/table-ts.ts","webpack://@ytsaurus/ui/./src/ui/components/YqlValue/YqlValue.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/ColumnCell.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/prepareColumns.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/detailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overviewTable.js","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/utils/yql-types.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/chartkit-error/chartkit-error.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/mergeSettingStrategy.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/settings.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/eventEmitter.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/cn.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/common.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronLeft.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronRight.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Ellipsis.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/useAlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertAction.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContextProvider.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertIcon.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmarkFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmark.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleInfoFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleCheckFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/TriangleExclamationFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ThunderboltFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/Alert.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertTitle.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertActions.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenu.classname.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/moveBack.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/moveForward.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuNavigationContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/isSeparator.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/shouldSkipItemNavigation.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/stringifyNavigationPath.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuPopup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/useListNavigation.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/isSubmenuOpen.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/useSubmenu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/toItemList.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/usePopupVisibility.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useConditionallyControlledState/useConditionallyControlledState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useStateWithCallback/useStateWithCallback.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/utils/typeCheckers.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/useScrollHandler.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/MenuGroup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/MenuItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/Menu.js"],"sourcesContent":["import axios, {AxiosResponse, CancelToken} from 'axios';\nimport {YTError} from '../@types/types';\n\nexport const TABLET_ERRORS_MANAGER_POST_ACTIONS = new Set([\n 'tablet_errors_by_bundle',\n 'tablet_errors_by_table',\n 'tablet_errors_by_table_and_timestamp',\n] as const);\n\nexport type TabletErrorsManagerPostActionType = Parameters<\n (typeof TABLET_ERRORS_MANAGER_POST_ACTIONS)['add']\n>[0];\n\nexport type MethodCount = {\n method: string;\n count: number;\n};\n\nexport type TableMethodErrorsCount = {\n table_path: string;\n last_error_timestamp: number;\n method_counts: Record<string, number>;\n};\n\nexport type TabletErrorsByBundleResponse = {\n all_methods: Array<string>;\n presented_methods: Array<string>;\n errors: Array<TableMethodErrorsCount>;\n fixed_end_timestamp: unknown;\n total_row_count: number;\n};\n\nexport type TabletErrorsBaseParams = {\n start_timestamp: number;\n end_timestamp: number;\n methods?: Array<string>;\n count_limit: number;\n offset: number;\n fixed_end_timestamp?: unknown;\n};\n\nexport type TabletMethodError = {\n tablet_id: string;\n timestamp: number;\n method: string;\n error: YTError;\n};\n\nexport type MethodErrors = {\n method: string;\n errors: Array<TabletError>;\n fixed_end_timestamp: number;\n total_row_count: number;\n all_methods: Array<string>;\n};\n\nexport type TabletError = {\n tablet_id: string;\n timestamp: number;\n error: YTError;\n method: string;\n host: string;\n};\n\nexport type TabletErrorsApi = {\n tablet_errors_by_bundle: {\n body: TabletErrorsBaseParams & {tablet_cell_bundle: string; table_path?: string};\n response: TabletErrorsByBundleResponse;\n };\n tablet_errors_by_table: {\n body: TabletErrorsBaseParams & {table_path: string; table_id: string; tablet_id?: string};\n response: MethodErrors;\n };\n tablet_errors_by_table_and_timestamp: {\n body: TabletErrorsBaseParams & {table_id: string};\n response: Array<TabletMethodError>;\n };\n};\n\nexport function fetchFromTabletErrorsApi<K extends keyof TabletErrorsApi>(\n action: K,\n cluster: string,\n params: TabletErrorsApi[K]['body'],\n cancelToken: CancelToken,\n): Promise<AxiosResponse<TabletErrorsApi[K]['response']>> {\n type ApiMethod = TabletErrorsApi[K];\n\n return axios.post<\n ApiMethod['response'],\n AxiosResponse<ApiMethod['response']>,\n ApiMethod['body']\n >(`/api/tablet-errors/${cluster}/${action}`, {...params, cluster}, {cancelToken});\n}\n","import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nexport interface AttributesButtonProps extends ButtonProps {}\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport AttributesButton, {AttributesButtonProps} from './AttributesButton';\n\nimport {openAttributesModal} from '../../store/actions/modals/attributes-modal';\nimport {ButtonProps} from '../Button/Button';\n\ninterface Props extends Omit<AttributesButtonProps, 'onClick' | 'title'> {\n title: React.ReactNode;\n\n // The function is called inside click handler, and overrides path and exactPath\n getPathProps?: () => Pick<Partial<Props>, 'path' | 'exactPath'>;\n path?: string;\n exactPath?: string;\n\n attribute?: string;\n attributes?: object;\n\n size?: ButtonProps['size'];\n view?: ButtonProps['view'];\n}\n\nfunction ClickableAttributesButton({\n title,\n getPathProps = () => {\n return {};\n },\n path,\n exactPath,\n attribute,\n attributes,\n openAttributesModal,\n withTooltip = true,\n tooltipProps = {placement: 'bottom-end', content: 'Show attributes'},\n ...rest\n}: Props & ConnectedProps<typeof connector>) {\n return (\n <AttributesButton\n {...rest}\n tooltipProps={tooltipProps}\n withTooltip={withTooltip}\n onClick={() => {\n const pathProps = {\n path,\n exactPath,\n ...getPathProps(),\n };\n\n openAttributesModal({\n title,\n ...pathProps,\n attribute,\n attributes,\n });\n }}\n />\n );\n}\n\nconst connector = connect(null, {openAttributesModal});\n\nexport default connector(ClickableAttributesButton);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport templates from '../templates/templates';\n\nimport {Popup} from '@gravity-ui/uikit';\n\nconst block = cn('elements-dropdown');\n\nclass Dropdown extends Component {\n static propTypes = {\n button: PropTypes.oneOfType([PropTypes.element, PropTypes.object]).isRequired,\n className: PropTypes.string,\n popup: PropTypes.object,\n directions: PropTypes.array,\n trigger: PropTypes.oneOf(['click', 'hover']).isRequired,\n template: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n data: PropTypes.object,\n }),\n ]).isRequired,\n zIndexGroupLevel: PropTypes.number,\n };\n\n static defaultProps = {\n zIndexGroupLevel: 1,\n directions: ['bottom-end', 'top-end'],\n };\n\n state = {\n popupVisible: false,\n };\n\n anchor = React.createRef();\n\n toggle = () =>\n this.setState((prevState) => ({\n popupVisible: !prevState.popupVisible,\n }));\n\n open = () => this.setState({popupVisible: true});\n\n close = () => this.setState({popupVisible: false});\n\n renderButton() {\n const {button, trigger} = this.props;\n\n const actionProps = {\n onClick: trigger === 'click' ? this.toggle : undefined,\n onMouseEnter: trigger === 'hover' ? this.open : undefined,\n onMouseLeave: trigger === 'hover' ? this.close : undefined,\n };\n\n return React.cloneElement(button, actionProps);\n }\n\n renderTemplate() {\n const {template} = this.props;\n const {key, data} = this.props.template;\n const renderer = templates.get(key).__default__;\n\n return React.isValidElement(template)\n ? React.cloneElement(template)\n : renderer.call(this, data);\n }\n\n renderPopup() {\n const {popup, directions} = this.props;\n\n return (\n <Popup\n placement={directions}\n onClose={this.close}\n open={true}\n anchorRef={this.anchor}\n hasArrow\n {...popup}\n >\n {this.renderTemplate()}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n\n return (\n <span className={block(null, className)} ref={this.anchor}>\n {this.renderButton()}\n {this.state.popupVisible && this.renderPopup()}\n </span>\n );\n }\n}\n\nexport default Dropdown;\n","import React, {useCallback, useEffect} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../Icon/Icon';\n\nimport './EditableAsText.scss';\nimport Button, {ButtonProps} from '../Button/Button';\nconst block = cn('editable-as-text');\n\ninterface Props {\n className?: string;\n editorClassName?: string;\n\n text?: string;\n children: React.ReactNode;\n onChange: (v?: string) => void;\n disableEdit?: boolean;\n withControls?: boolean;\n cancelOnClose?: boolean;\n openOnClick?: boolean;\n size?: 's' | 'm' | 'l' | 'xl';\n saveButtonView?: ButtonProps['view'];\n cancelButtonView?: ButtonProps['view'];\n\n renderEditor?: (props: {\n value?: string;\n onBlur: () => void;\n onChange: (value?: string) => void;\n className?: string;\n onApply: (value?: string) => void;\n }) => React.ReactNode;\n onModeChange?: (isEdit: boolean) => void;\n}\n\nexport function EditableAsText(props: Props) {\n const {\n children,\n onChange,\n text,\n className,\n withControls,\n size,\n disableEdit,\n cancelOnClose,\n openOnClick,\n renderEditor,\n onModeChange,\n saveButtonView = 'normal',\n cancelButtonView = 'normal',\n } = props;\n const [editMode, setEditMode] = React.useState(false);\n const [input, setInput] = React.useState(text || '');\n\n useEffect(() => {\n setInput(text || '');\n }, [text]);\n\n const handleChangeMode = useCallback(\n (isEdit: boolean) => {\n if (onModeChange) onModeChange(isEdit);\n setEditMode(isEdit);\n },\n [onModeChange],\n );\n\n const closeEditMode = React.useCallback(() => {\n handleChangeMode(false);\n if (cancelOnClose) setInput(text || '');\n }, [cancelOnClose, handleChangeMode, text]);\n\n const startTextEdit = useCallback(() => {\n handleChangeMode(true);\n }, [handleChangeMode]);\n\n const handleWrapClick = () => {\n if (!editMode && openOnClick) {\n startTextEdit();\n }\n };\n\n const handleChange = React.useCallback((val?: string) => setInput(val ?? ''), [setInput]);\n\n const applyValue = useCallback(() => {\n handleChangeMode(false);\n onChange(input);\n }, [onChange, handleChangeMode, input]);\n\n const closeAndResetValue = useCallback(() => {\n handleChangeMode(false);\n setInput(text || '');\n }, [handleChangeMode, text]);\n\n const onApply = useCallback(\n (value?: string) => {\n handleChangeMode(false);\n onChange(value);\n },\n [handleChangeMode, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if (evt.key === 'Enter') {\n applyValue();\n }\n if (evt.key === 'Escape') {\n closeAndResetValue();\n }\n },\n [applyValue, closeAndResetValue],\n );\n\n const controlSize = size ? size : 'm';\n\n return (\n <div\n className={block(null, [className || '', editMode ? 'edit' : ''])}\n onClick={handleWrapClick}\n >\n {editMode ? (\n <>\n {renderEditor ? (\n renderEditor({\n value: input,\n onChange: handleChange,\n className: block('control'),\n onBlur: closeEditMode,\n onApply,\n })\n ) : (\n <TextInput\n className={block('control')}\n autoFocus\n size={controlSize}\n value={input}\n onUpdate={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={closeEditMode}\n />\n )}\n {withControls && (\n <>\n <Button\n className={block('control')}\n view={saveButtonView}\n extraProps={{onMouseDown: applyValue}}\n size={controlSize}\n >\n <Icon awesome={'check'} size={controlSize} />\n </Button>\n <Button\n className={block('control')}\n view={cancelButtonView}\n extraProps={{onMouseDown: closeAndResetValue}}\n size={controlSize}\n >\n <Icon awesome={'times'} size={controlSize} />\n </Button>\n </>\n )}\n </>\n ) : (\n <React.Fragment>\n {children}\n {!disableEdit && (\n <Button\n className={block('control', {type: 'edit'})}\n view=\"outlined\"\n onClick={startTextEdit}\n size={controlSize}\n >\n <Icon awesome={'pencil'} size={controlSize} />\n </Button>\n )}\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport function EditButton({\n onClick,\n size = 'm',\n}: {\n onClick: () => void;\n size?: ButtonProps['size'];\n}) {\n return (\n <Button className={block('edit-btn')} onClick={onClick} size={size}>\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import hammer from '../../common/hammer';\nimport {createSelector} from 'reselect';\n\nconst getHistogram = (state, props) => props.histogram;\n\nexport const createGetQuartiles = () =>\n createSelector(getHistogram, (histogram) => hammer.stat.quartiles(histogram.data));\n\nexport const createGetPDF = () =>\n createSelector(getHistogram, (histogram) => hammer.stat.pdf(histogram.data));\n\nexport const createGetECDF = () =>\n createSelector([getHistogram, createGetPDF()], (histogram, pdf) => {\n const ecdf = hammer.stat.ecdf(histogram.data);\n\n // Create fake points\n ecdf.steps.unshift({\n x: pdf.min,\n y: 0,\n });\n ecdf.steps.push({\n x: pdf.min + pdf.bucketNumber * pdf.bucketSize,\n y: 100,\n });\n\n return ecdf;\n });\n\nexport const createGetIsDataGood = () =>\n createSelector(\n [createGetPDF(), createGetECDF(), createGetQuartiles()],\n (pdfData, ecdfData, quartiles) => {\n if (pdfData.min === pdfData.max) {\n // All points are the same\n return false;\n } else if (ecdfData.steps.length < 5) {\n // We have got too few different points in data (including fake points)\n return false;\n } else if (quartiles.q75 - quartiles.q25 === 0) {\n // All points are almost the same\n return false;\n } else {\n return true;\n }\n },\n );\n","import compact_ from 'lodash/compact';\nimport React from 'react';\nimport YagrChartKit, {\n RawSerieData,\n YagrWidgetData,\n getSerieColor,\n} from '../YagrChartKit/YagrChartKit';\n\nimport formatLib from '../../common/hammer/format';\n\nexport interface HistogramChartProps {\n className: string;\n format: 'Number' | 'Bytes';\n ecdf: ECDFData;\n pdf: PDFData;\n dataName: string;\n lineOnly?: boolean;\n}\n\ninterface ECDFData {\n min: number;\n max: number;\n steps: Array<XY>;\n}\n\ntype XY = [X, Y] | {x: X; y: Y};\n\ninterface PDFData {\n bucketNumber: number;\n bucketSize: number;\n buckets: Array<[X, Y]>;\n min: X;\n max: X;\n}\n\ntype X = number;\ntype Y = number;\n\nfunction HistogramChart({className, pdf, ecdf, format, dataName, lineOnly}: HistogramChartProps) {\n const yagrData = React.useMemo(() => {\n const xFormat = format === 'Bytes' ? formatLib.Bytes : formatLib.Number;\n const {timeline, graphs, step} = lineOnly\n ? getLineOnlyData(pdf, ecdf)\n : getColumnData(pdf, ecdf);\n const res: YagrWidgetData = {\n data: {\n timeline,\n graphs,\n },\n libraryConfig: {\n axes: {\n x: {\n values: (_d, x) => x.map(xFormat),\n side: 'bottom',\n grid: {\n show: false,\n },\n },\n y1: {\n side: 'right',\n show: false,\n },\n y: {\n side: 'left',\n show: false,\n },\n },\n scales: {\n y1: {\n min: 0,\n max: 100,\n },\n y: {\n min: 0,\n },\n },\n tooltip: {\n render: (tooltipData) => {\n const {\n x,\n scales: [first, second],\n } = tooltipData;\n const columnValue = lineOnly ? undefined : first?.rows?.[0]?.originalValue;\n const lineValue = lineOnly\n ? first?.rows?.[0]?.originalValue\n : second?.rows?.[0]?.originalValue;\n\n return (\n renderDefaultTooltip({\n colValue:\n columnValue !== undefined\n ? formatLib.Number(columnValue)\n : undefined,\n colX0: xFormat(x - step / 2),\n colX1: xFormat(x + step / 2),\n lineValue:\n lineValue !== undefined\n ? formatLib.Number(lineValue, {digits: 2}) + '%'\n : undefined,\n lineX: xFormat(x),\n dataName,\n lineOnly,\n }) ?? '-'\n );\n },\n },\n },\n sources: {},\n };\n return res;\n }, [pdf, ecdf, format, lineOnly]);\n\n return (\n <div className={className}>\n <YagrChartKit type={'yagr'} data={yagrData} />\n </div>\n );\n}\n\nexport default React.memo(HistogramChart);\n\nfunction getColumnData(\n {buckets, min, bucketSize}: PDFData,\n {steps}: ECDFData,\n): YagrWidgetData['data'] & {step: number} {\n const timeline = [min - 0.1 * bucketSize];\n const data: Array<number> = [undefined!];\n const lineData: Array<number> = [undefined!];\n let j = 0;\n for (let i = 0; i < buckets.length; ++i) {\n const [x, y] = buckets[i];\n const bestX = x + bucketSize / 2;\n data.push(y);\n timeline.push(bestX);\n while (j < steps.length) {\n const item = steps[j];\n const itemX = getX(item);\n if (itemX === bestX) {\n lineData[i + 1] = Array.isArray(item) ? item[1] : item.y;\n break;\n } else if (itemX === undefined || itemX < bestX) {\n ++j;\n continue;\n } else {\n lineData[i + 1] = calcBestY(\n bestX,\n steps[Math.min(steps.length - 1, j - 1)],\n steps[j],\n )!;\n break;\n }\n }\n }\n timeline.push(min + (0.1 + bucketSize) * buckets.length);\n data.push(undefined!);\n lineData.push(undefined!);\n\n const graphs: RawSerieData[] = [\n {\n type: 'line' as const,\n data: lineData,\n scale: 'y1',\n color: getSerieColor(1),\n },\n {\n type: 'column' as const,\n data,\n color: getSerieColor(0),\n ...{\n renderOptions: {\n size: [1],\n gap: 1,\n },\n },\n },\n ];\n return {\n graphs,\n timeline,\n step: bucketSize,\n };\n}\n\nfunction getLineOnlyData(\n {min, buckets, bucketSize}: PDFData,\n {steps}: ECDFData,\n): ReturnType<typeof getColumnData> {\n const timeline: Array<number> = [min - 0.1 * bucketSize];\n const data: Array<number> = [NaN];\n\n for (const item of steps) {\n timeline.push(getX(item)!);\n data.push(getY(item)!);\n }\n\n timeline.push(min + (0.1 + bucketSize) * buckets.length);\n data.push(NaN);\n\n const graphs: Array<RawSerieData> = [\n {\n type: 'line' as const,\n data,\n color: getSerieColor(1),\n },\n ];\n\n return {\n timeline,\n graphs,\n step: NaN,\n };\n}\n\nfunction renderDefaultTooltip({\n colValue,\n colX0,\n colX1,\n lineValue,\n lineX,\n dataName,\n lineOnly,\n}: {\n colValue?: string;\n colX0: string;\n colX1: string;\n lineValue?: string;\n lineX: string;\n dataName: string;\n lineOnly?: boolean;\n}) {\n const lp = lineOnly ? '' : '~';\n return compact_([\n colValue !== undefined\n ? `<b>${colValue}</b> partitions contain in range from <b>${colX0}</b> to <b>${colX1}</b> - ${dataName}`\n : undefined,\n lineValue !== undefined\n ? `<b>${lp}${lineValue}</b> of tablets conains <b>${lp}${lineX}</b> or less`\n : undefined,\n ]).join('<br/>');\n}\n\nfunction getX(v?: XY) {\n return Array.isArray(v) ? v[0] : v?.x;\n}\n\nfunction getY(v?: XY) {\n return Array.isArray(v) ? v[1] : v?.y;\n}\n\nfunction calcBestY(bestX: number, left?: XY, right?: XY) {\n const ly = getY(left);\n const ry = getY(right);\n if (ly === undefined) {\n return ry;\n }\n\n if (ry === undefined) {\n return ly;\n }\n\n const lx = getX(left);\n const rx = getX(right);\n const k = (bestX - lx!) / (rx! - lx!);\n\n return ly + k * (ry - ly);\n}\n","import {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../common/hammer';\nimport cn from 'bem-cn-lite';\nimport React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {\n createGetECDF,\n createGetIsDataGood,\n createGetPDF,\n createGetQuartiles,\n} from '../../store/selectors/histogram';\nimport HistogramChart from './HistogramChart';\n\nimport './Histogram.scss';\nimport {Checkbox, Select} from '@gravity-ui/uikit';\n\nconst block = cn('histogram');\n\nHistogram.quartilesProps = PropTypes.shape({\n min: PropTypes.number,\n q25: PropTypes.number,\n q50: PropTypes.number,\n q75: PropTypes.number,\n max: PropTypes.number,\n});\n\nHistogram.pdfProps = PropTypes.shape({\n bucketNumber: PropTypes.number,\n bucketSize: PropTypes.number,\n max: PropTypes.number,\n min: PropTypes.number,\n valueMax: PropTypes.number,\n valueMin: PropTypes.number,\n quartiles: Histogram.quartilesProps,\n buckets: PropTypes.array,\n});\n\nHistogram.ecdfProps = PropTypes.shape({\n min: PropTypes.number,\n max: PropTypes.number,\n steps: PropTypes.array,\n});\n\nHistogram.propTypes = {\n // from parent\n activeHistogram: PropTypes.string.isRequired,\n handleHistogramChange: PropTypes.func.isRequired,\n histogramItems: PropTypes.object.isRequired,\n\n histogram: PropTypes.shape({\n data: PropTypes.array.isRequired,\n format: PropTypes.string.isRequired,\n dataName: PropTypes.string.isRequired,\n dataFormat: PropTypes.string.isRequired,\n }).isRequired,\n\n // from connect\n quartiles: Histogram.quartilesProps.isRequired,\n pdf: Histogram.pdfProps.isRequired,\n ecdf: Histogram.ecdfProps.isRequired,\n isDataGood: PropTypes.bool.isRequired,\n};\n\nfunction Histogram(props) {\n const {activeHistogram, handleHistogramChange, histogramItems} = props;\n const {histogram, quartiles, pdf, ecdf, isDataGood} = props;\n\n const params = {...histogram, pdf, ecdf};\n\n const [isDatailedLine, setDetailed] = React.useState(false);\n\n return (\n <div className={block()}>\n <div className={block('toolbar')}>\n <Select\n value={[activeHistogram]}\n onUpdate={(values) => handleHistogramChange(values[0])}\n options={map_(keys_(histogramItems), (value) => {\n return {value, content: value};\n })}\n width=\"max\"\n />\n <Checkbox\n className={block('detailed')}\n checked={isDatailedLine}\n onUpdate={setDetailed}\n >\n Detailed line\n </Checkbox>\n </div>\n\n {isDataGood ? (\n <HistogramChart className={block('chart')} {...params} lineOnly={isDatailedLine} />\n ) : (\n <div className={block('bad-data')}>\n <p className={block('bad-data-message')}>\n Could not draw a descriptive chart with given data.\n </p>\n </div>\n )}\n\n <ul className={block('quartiles')}>\n <li className={block('quartiles-item')}>\n Min –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.min)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q25% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q25)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q50% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q50)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q75% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q75)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Max –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.max)}\n </span>\n </li>\n </ul>\n </div>\n );\n}\n\n// https://github.com/reduxjs/reselect#sharing-selectors-with-props-across-multiple-component-instances\nconst makeMapStateToProps = () => {\n const getQuartiles = createGetQuartiles();\n const getPDF = createGetPDF();\n const getECDF = createGetECDF();\n const getIsDataGood = createGetIsDataGood();\n\n return (state, props) => {\n const quartiles = getQuartiles(state, props);\n const pdf = getPDF(state, props);\n const ecdf = getECDF(state, props);\n const isDataGood = getIsDataGood(state, props);\n\n return {quartiles, pdf, ecdf, isDataGood};\n };\n};\n\nexport default connect(makeMapStateToProps)(Histogram);\n","const SvgInfoIcon2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\" {...props}><path fill=\"#027BF3\" d=\"M7 .828C3.521.828.703 3.672.703 7.125A6.296 6.296 0 0 0 7 13.422c3.453 0 6.297-2.818 6.297-6.297C13.297 3.672 10.453.828 7 .828m0 11.375a5.06 5.06 0 0 1-5.078-5.078A5.077 5.077 0 0 1 7 2.047c2.793 0 5.078 2.285 5.078 5.078A5.077 5.077 0 0 1 7 12.203m0-8.582c-.61 0-1.066.483-1.066 1.067 0 .609.457 1.066 1.066 1.066.584 0 1.066-.457 1.066-1.066 0-.584-.482-1.067-1.066-1.067m1.422 6.45v-.61a.33.33 0 0 0-.305-.305h-.305V6.617a.33.33 0 0 0-.304-.304H5.883a.31.31 0 0 0-.305.304v.61c0 .177.127.304.305.304h.305v1.625h-.305a.31.31 0 0 0-.305.305v.61c0 .177.127.304.305.304h2.234a.31.31 0 0 0 .305-.305\" /></svg>;\nexport default SvgInfoIcon2;","import React, {ReactNode} from 'react';\nimport block from 'bem-cn-lite';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport infoIcon from '../../assets/img/svg/info-icon2.svg';\n\nimport './Info.scss';\n\nconst b = block('info-block');\n\ninterface InfoProps {\n children: ReactNode;\n className?: string;\n}\nexport function Info({children, className}: InfoProps) {\n return (\n <div className={b(null, className)}>\n <div className={b('icon')}>\n <Icon data={infoIcon} />\n </div>\n <div className={b('body')}>{children}</div>\n </div>\n );\n}\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Error from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\n\nconst toaster = new Toaster();\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded: boolean;\n error: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <Error error={errorData} />;\n }\n\n return children;\n }\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nexport default (attributes) => {\n const [compressionRatio, compressionCodec] = ypath.getValues(attributes, [\n '/compression_ratio',\n '/compression_codec',\n ]);\n\n return [\n {\n key: 'compression_ratio',\n value: hammer.format['Number'](compressionRatio, {digits: 5}),\n },\n {\n key: 'compression_codec',\n value: compressionCodec,\n },\n ];\n};\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\nexport default (attributes) => {\n const [erasureCodec, replicationFactor] = ypath.getValues(attributes, [\n '/erasure_codec',\n '/replication_factor',\n ]);\n\n const hideReplicationFactor = erasureCodec && erasureCodec !== 'none';\n return [\n {\n key: 'erasure codec',\n value: erasureCodec,\n helpUrl: docsUrl(UIFactory.docsUrls['storage:replication#erasure']),\n visible: erasureCodec !== 'none',\n },\n {\n key: 'replication factor',\n value: replicationFactor,\n visible: !hideReplicationFactor && replicationFactor !== 'none',\n },\n ];\n};\n","import React from 'react';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {Template} from '../../../components/MetaTable/templates/Template';\nimport {SubjectCard} from '../../SubjectLink/SubjectLink';\nimport AccountLink from '../../../pages/accounts/AccountLink';\nimport UIFactory from '../../../UIFactory';\nimport {makeTTLItems} from './ttl';\n\nexport default function metaTablePresetMain(attributes) {\n const [id, owner, account, creationTime, modificationTime, accessTime, yql_op_id] =\n ypath.getValues(attributes, [\n '/id',\n '/owner',\n '/account',\n '/creation_time',\n '/modification_time',\n '/access_time',\n '/_yql_op_id',\n ]);\n\n const yqlLink = yql_op_id ? UIFactory.yqlWidgetSetup?.renderYqlOperationLink(yql_op_id) : null;\n\n return [\n {\n key: 'id',\n value: <Template.Id id={id} />,\n },\n {\n key: 'owner',\n value: <SubjectCard name={owner} />,\n },\n {\n key: 'account',\n value: <AccountLink account={account} />,\n visible: Boolean(account),\n },\n {\n key: 'creation_time',\n value: <Template.Time time={creationTime} valueFormat=\"DateTime\" />,\n visible: Boolean(creationTime),\n },\n ...makeTTLItems(attributes, {showTTLLabel: true}),\n {\n key: 'modification_time',\n value: <Template.Time time={modificationTime} valueFormat=\"DateTime\" />,\n visible: Boolean(modificationTime),\n },\n {\n key: 'access_time',\n value: <Template.Time time={accessTime} valueFormat=\"DateTime\" />,\n visible: Boolean(accessTime),\n },\n {\n key: 'YQL operation',\n value: yqlLink,\n visible: Boolean(yqlLink),\n },\n ];\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Popover} from '@gravity-ui/uikit';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport hammer from '../../../../../../common/hammer';\n\nimport './RowsCount.scss';\n\nconst block = cn('rows-count');\n\nexport function RowsCount(props: {count: number; isDynamic: boolean}) {\n const {count, isDynamic} = props;\n return (\n <React.Fragment>\n {isDynamic ? '≈ ' : ''}\n {hammer.format['Number'](count)}\n {!isDynamic ? null : (\n <Popover\n content={\n <span>\n This value corresponds to the number of rows stored in the on-disk\n chunks. The actual value may be different: it may be either larger due\n to new rows residing only in memory or smaller due to unsynced deleted\n rows and multiple versions stored on disks. It is not possible to\n calculate the real value without reading all the rows.\n </span>\n }\n >\n <span className={block('question')}>\n <Icon awesome={'question-circle'} />\n </span>\n </Popover>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\n\nimport {Switch} from '@gravity-ui/uikit';\n\nimport StatusBulb from '../../../../../components/StatusBulb/StatusBulb';\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../components/Dialog';\nimport {YTError} from '../../../../../types';\n\nexport interface Props {\n value?: boolean;\n onEdit?: (currentValue?: Props['value']) => Promise<void>;\n}\n\ninterface FormValues {\n value?: string;\n}\n\nfunction AutomaticModeSwitchEditor({value, onEdit, onClose}: Props & {onClose: () => void}) {\n const [error, setError] = React.useState<YTError | undefined>(undefined);\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n const {values} = form.getState();\n try {\n await onEdit?.(values.value === 'enabled');\n } catch (e: any) {\n setError(e);\n throw e;\n }\n },\n [setError],\n );\n\n return (\n <YTDFDialog<FormValues>\n pristineSubmittable={true}\n headerProps={{\n title: 'Edit',\n }}\n onAdd={handleAdd}\n onClose={onClose}\n visible={true}\n initialValues={{\n value: value ? 'enabled' : 'disabled',\n }}\n fields={[\n {\n name: 'value',\n type: 'radio',\n caption: 'Automatic mode switch',\n extras: {\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n\nfunction AutomaticModeSwitch({value, onEdit}: Props) {\n const [showEditor, setShowEditor] = React.useState(false);\n\n const handleShow = React.useCallback(() => {\n setShowEditor(true);\n }, []);\n\n const handleClose = React.useCallback(() => {\n setShowEditor(false);\n }, []);\n\n if (onEdit) {\n return (\n <React.Fragment>\n <Switch\n checked={value}\n onUpdate={handleShow}\n title={value ? 'Enabled' : 'Disabled'}\n />\n {showEditor && (\n <AutomaticModeSwitchEditor\n value={!value}\n onEdit={onEdit}\n onClose={handleClose}\n />\n )}\n </React.Fragment>\n );\n }\n\n return (\n <React.Fragment>\n <StatusBulb theme={value ? 'enabled' : 'unknown'} />{' '}\n </React.Fragment>\n );\n}\n\nexport default React.memo(AutomaticModeSwitch);\n","import React from 'react';\nimport hammer from '../../../common/hammer';\nimport ypath from '../../../common/thor/ypath';\nimport {RowsCount} from '../../../pages/navigation/content/Table/TableMeta/RowsCount/RowsCount';\nimport {tabletActiveBundleLink} from '../../../utils/components/tablet-cells';\nimport Label, {LabelOnOff} from '../../Label/Label';\nimport Link from '../../Link/Link';\nimport {Template} from '../templates/Template';\nimport compression from './compression';\nimport erasureReplication from './erasure-replication';\nimport size from './size';\nimport {CypressNodeTypes} from '../../../utils/cypress-attributes';\nimport {main} from './index';\nimport {getCommonFields} from '../../../pages/navigation/content/Table/TableMeta/commonFields';\nimport {Props as AutomaticModeSwitchProps} from '../../../pages/navigation/content/Table/TableMeta/AutomaticModeSwitch';\n\nexport function replicatedTableTracker(attributes: any) {\n const value = ypath.getValue(\n attributes,\n '/replicated_table_options/replicated_table_tracker_enabled',\n );\n return {\n key: 'replicated_table_tracker',\n value: <LabelOnOff value={value} />,\n visible: value !== undefined,\n };\n}\n\nexport function tableSize(attributes: any, isDynamic: boolean, mediumList: string[]) {\n const [rowCount, chunkCount, dataWeight] = ypath.getValues(attributes, [\n '/chunk_row_count',\n '/chunk_count',\n '/data_weight',\n ]);\n return [\n {\n key: 'rowCount',\n label: 'Rows',\n value: <RowsCount isDynamic={isDynamic} count={rowCount} />,\n visible: Boolean(rowCount),\n },\n {\n key: 'chunkCount',\n label: 'Chunks',\n value: hammer.format['Number'](chunkCount),\n visible: Boolean(dataWeight),\n },\n ...size(attributes, mediumList),\n {\n key: 'dataWeight',\n label: 'Data weight',\n value: <Template.FormattedValue value={dataWeight} format=\"Bytes\" />,\n visible: Boolean(chunkCount),\n },\n ];\n}\n\nexport function tableStorage(attributes: any, tableType: string) {\n const optimizeFor = ypath.getValue(attributes, '/optimize_for');\n return [\n {\n key: 'tableType',\n label: 'Table type',\n value: tableType,\n },\n {\n key: 'optimizeFor',\n label: 'Optimize for',\n value: <Label text={hammer.format['ReadableField'](optimizeFor)} theme=\"info\" />,\n visible: optimizeFor !== 'undefined',\n },\n ...compression(attributes),\n ...erasureReplication(attributes),\n replicatedTableTracker(attributes),\n ];\n}\n\nexport function dynTableInfo(attributes: any, cluster: string, tabletErrorCount: number) {\n const [tabletCellBundle, tabletState, inMemoryMode] = ypath.getValues(attributes, [\n '/tablet_cell_bundle',\n '/tablet_state',\n '/in_memory_mode',\n ]);\n\n const tabletUrl = tabletActiveBundleLink(cluster, tabletCellBundle);\n return [\n {\n key: 'tabletCellBundle',\n label: 'Tablet cell bundle',\n value: (\n <Link theme={'primary'} routed url={tabletUrl}>\n {tabletCellBundle}\n </Link>\n ),\n },\n {\n key: 'tabletState',\n label: 'Tablet state',\n value: (\n <Label\n theme={tabletState === 'mounted' ? 'info' : 'default'}\n text={hammer.format['ReadableField'](tabletState)}\n />\n ),\n },\n {\n key: 'inMemoryMode',\n label: 'In memory mode',\n value: (\n <Label\n theme={inMemoryMode && inMemoryMode !== 'none' ? 'info' : 'default'}\n text={hammer.format['ReadableField'](inMemoryMode || 'none')}\n />\n ),\n },\n {\n key: 'tabletErrorCount',\n label: 'Tablet error count',\n value: hammer.format['Number'](tabletErrorCount),\n },\n ];\n}\n\nexport const makeMetaItems = ({\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList = [],\n tabletErrorCount = 0,\n onEditEnableReplicatedTableTracker,\n}: {\n cluster: string;\n attributes: any;\n mediumList?: string[];\n isDynamic: boolean;\n tableType: string;\n tabletErrorCount?: number;\n onEditEnableReplicatedTableTracker?: AutomaticModeSwitchProps['onEdit'];\n}) => {\n const cf = getCommonFields({\n cluster,\n attributes,\n isDynamic,\n tableType: attributes.type,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n });\n\n switch (attributes.type) {\n case CypressNodeTypes.REPLICATED_TABLE:\n case CypressNodeTypes.REPLICATION_LOG_TABLE:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n tableStorage(attributes, attributes.type),\n [\n cf.sorted,\n ...dynTableInfo(attributes, cluster, tabletErrorCount),\n cf.automaticModeSwitch,\n ],\n ];\n\n case CypressNodeTypes.CHAOS_REPLICATED_TABLE:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n [\n cf.tableType,\n replicatedTableTracker(attributes),\n cf.sorted,\n cf.chaosCellBundle,\n cf.automaticModeSwitch,\n ],\n ];\n\n default:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n tableStorage(attributes, tableType),\n [\n cf.sorted,\n ...(isDynamic ? dynTableInfo(attributes, cluster, tabletErrorCount) : []),\n ],\n ];\n }\n};\n","import React from 'react';\nimport ypath from '../../../../../common/thor/ypath';\nimport Link from '../../../../../components/Link/Link';\nimport AutomaticModeSwitch, {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\nimport reduce_ from 'lodash/reduce';\nimport {MetaTableItem} from '../../../../../components/MetaTable/MetaTable';\nimport {tabletActiveChaosBundleLink} from '../../../../../utils/components/tablet-cells';\n\nexport const getCommonFields = ({\n cluster,\n attributes,\n tableType,\n onEditEnableReplicatedTableTracker,\n}: {\n cluster: string;\n attributes: any;\n isDynamic: boolean;\n tableType: string;\n tabletErrorCount: number;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}) => {\n const [sorted, chaosCellBundle, enable_replicated_table_tracker] = ypath.getValues(attributes, [\n '/sorted',\n '/chaos_cell_bundle',\n '/replicated_table_options/enable_replicated_table_tracker',\n ]);\n\n const chaosUrl = tabletActiveChaosBundleLink(cluster, chaosCellBundle);\n\n const fields = [\n {\n key: 'tableType',\n label: 'Table type',\n value: tableType,\n },\n {\n key: 'sorted',\n value: sorted,\n visible: sorted !== undefined,\n },\n {\n key: 'chaosCellBundle',\n label: 'Chaos cell bundle',\n value: (\n <Link theme={'primary'} routed url={chaosUrl}>\n {chaosCellBundle}\n </Link>\n ),\n },\n {\n key: 'automaticModeSwitch',\n label: 'Table automatic mode switch',\n value: (\n <AutomaticModeSwitch\n value={enable_replicated_table_tracker}\n onEdit={onEditEnableReplicatedTableTracker}\n />\n ),\n },\n ] as const;\n\n type Fields = typeof fields;\n\n const commonFields = reduce_(\n fields,\n (acc, item) => {\n acc[item.key] = item;\n return acc;\n },\n {} as Record<Fields[number]['key'], MetaTableItem>,\n );\n\n return commonFields;\n};\n","import map_ from 'lodash/map';\n\nimport React from 'react';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {Template} from '../../../components/MetaTable/templates/Template';\n\nexport default function metaTablePresetSize(attributes, mediumList) {\n const [uncompressedDataSize, compressedDataSize, primaryMedium] = ypath.getValues(attributes, [\n '/uncompressed_data_size',\n '/compressed_data_size',\n '/primary_medium',\n ]);\n const [usageDiskSpace, diskSpace] = ypath.getValues(attributes, [\n '/resource_usage/disk_space',\n '/disk_space',\n ]);\n\n const mediumsTemplates = map_(mediumList, (medium) => {\n const usageMediumDiskSpace = ypath.getValue(\n attributes,\n `/resource_usage/disk_space_per_medium/${medium}`,\n );\n const mediumDiskSpace = ypath.getValue(attributes, `/disk_space_per_medium/${medium}`);\n\n return {\n key: medium + '_disk_space',\n value: (\n <Template.FormattedValue\n value={usageMediumDiskSpace || mediumDiskSpace}\n format=\"Bytes\"\n />\n ),\n visible: Boolean(usageMediumDiskSpace || mediumDiskSpace),\n };\n });\n\n return [\n {\n key: 'uncompressed_data_size',\n value: <Template.FormattedValue value={uncompressedDataSize} format=\"Bytes\" />,\n visible: Boolean(uncompressedDataSize),\n },\n {\n key: 'compressed_data_size',\n value: <Template.FormattedValue value={compressedDataSize} format=\"Bytes\" />,\n visible: Boolean(compressedDataSize),\n },\n {\n key: 'primary_medium',\n value: <Template.Readable value={primaryMedium} />,\n visible: Boolean(primaryMedium),\n },\n {\n key: 'disk_space',\n value: <Template.FormattedValue value={usageDiskSpace || diskSpace} format=\"Bytes\" />,\n visible: Boolean(usageDiskSpace || diskSpace),\n },\n ...mediumsTemplates,\n ];\n}\n","import React from 'react';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Label, LabelProps} from '@gravity-ui/uikit';\n\nimport ypath from '../../../common/thor/ypath';\n\nimport {formatTimeDuration} from '../../../components/TimeDuration/TimeDuration';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\nimport UIFactory from '../../../UIFactory';\n\nimport {MetaTableItem} from '../MetaTable';\nimport {Template} from '../templates/Template';\nimport {makeNavigationLink} from '../../../utils/app-url';\n\nconst block = cn('meta-table-ttl');\n\nexport function makeTTLItems(attrs: unknown, {showTTLLabel}: {showTTLLabel?: false} = {}) {\n const expiration_time = ypath.getValue(attrs, '/expiration_time');\n const expiration_timeout = ypath.getValue(attrs, '/expiration_timeout');\n const {time, timeout} = ypath.getValue(attrs, '/effective_expiration') ?? {};\n\n const res: Array<MetaTableItem> = [];\n\n const className = block('ttl');\n\n if (time && time.value !== expiration_time) {\n res.push({\n key: 'effective_expiration_time',\n value: withTTL(moment(time.value).format('DD MMM YYYY HH:mm:ss'), showTTLLabel),\n className,\n });\n res.push({\n key: 'effective_expiration_time_path',\n qa: 'expiration_timeout_path',\n value: <Template.Link url={makeNavigationLink({path: time.path})} text={time.path} />,\n });\n }\n if (expiration_time) {\n res.push({\n key: 'expiration_time',\n value: withTTL(moment(expiration_time).format('DD MMM YYYY HH:mm:ss'), showTTLLabel),\n className,\n });\n }\n\n if (timeout && timeout.value !== expiration_timeout) {\n res.push({\n key: 'effective_expiration_timeout',\n value: withTTL(formatTimeDuration(timeout.value), showTTLLabel),\n className,\n });\n res.push({\n key: 'effective_expiration_timeout_path',\n qa: 'expiration_timeout_path',\n value: (\n <Template.Link url={makeNavigationLink({path: timeout.path})} text={timeout.path} />\n ),\n });\n }\n if (expiration_timeout) {\n res.push({\n key: 'expiration_timeout',\n value: withTTL(formatTimeDuration(expiration_timeout), showTTLLabel),\n className,\n });\n }\n\n return res;\n}\n\nfunction withTTL(children: React.ReactNode, showTTLLabel = false) {\n return (\n <React.Fragment>\n {children}{' '}\n <Link\n className={block('ttl-info')}\n url={UIFactory.docsUrls['cypress:ttl']}\n theme=\"secondary\"\n >\n <Icon awesome={'question-circle'} />\n </Link>{' '}\n {showTTLLabel && <TTLLabel />}\n </React.Fragment>\n );\n}\n\nexport function TTLLabel({size}: {size?: LabelProps['size']}) {\n return (\n <Label theme={'warning'} size={size}>\n TTL\n </Label>\n );\n}\n","import React from 'react';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from 'react-redux';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\nimport {parseV3Type} from './dateTypesV3';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseV3Type(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt.cancel();\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\n}\n","import React from 'react';\n// For some reason React.memo drops the generic prop type and creates a regular union type\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087#issuecomment-542793243\nexport const typedMemo = React.memo;\n","import React from 'react';\nimport { CHARTKIT_ERROR_CODE } from '../../libs';\nimport { getErrorMessage } from '../../utils/getErrorMessage';\nexport class ErrorBoundary extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n error: undefined,\n };\n this.resetError = () => {\n if (this.state.error) {\n this.setState({ error: undefined });\n }\n };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n componentDidCatch() {\n var _a, _b;\n const { error } = this.state;\n if (error) {\n (_b = (_a = this.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, { error });\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.data !== this.props.data) {\n const { error } = this.state;\n if (error && 'code' in error && error.code === CHARTKIT_ERROR_CODE.NO_DATA) {\n this.resetError();\n }\n }\n }\n render() {\n const { error } = this.state;\n if (error) {\n const message = getErrorMessage(error);\n if (this.props.renderError) {\n return this.props.renderError({\n error,\n message,\n resetError: this.resetError,\n });\n }\n return React.createElement(\"div\", null, message);\n }\n return this.props.children;\n }\n}\n","import { i18n } from '../i18n';\nexport function getErrorMessage(error) {\n const code = 'code' in error && error.code;\n return (error.message || code || i18n('error', 'label_unknown-error')).toString();\n}\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { Loader as BaseLoader } from '@gravity-ui/uikit';\nimport { block } from '../../utils/cn';\nimport './Loader.css';\nconst b = block('loader');\nexport const Loader = (_a) => {\n var { renderPluginLoader } = _a, props = __rest(_a, [\"renderPluginLoader\"]);\n const pluginLoader = renderPluginLoader === null || renderPluginLoader === void 0 ? void 0 : renderPluginLoader();\n // React.Suspense complains about possible undefined in \"fallback\" property\n if (typeof pluginLoader !== 'undefined') {\n return pluginLoader;\n }\n return (React.createElement(\"div\", { className: b() },\n React.createElement(BaseLoader, Object.assign({}, props))));\n};\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { i18n } from '../i18n';\nimport { CHARTKIT_ERROR_CODE, ChartKitError, settings } from '../libs';\nimport { getRandomCKId, typedMemo } from '../utils';\nimport { cn } from '../utils/cn';\nimport { ErrorBoundary } from './ErrorBoundary/ErrorBoundary';\nimport { Loader } from './Loader/Loader';\nimport './ChartKit.css';\nconst b = cn('chartkit');\nconst ChartKitComponent = (props) => {\n const widgetRef = React.useRef();\n const { instanceRef, id: propsId, type, isMobile, renderPluginLoader } = props, restProps = __rest(props, [\"instanceRef\", \"id\", \"type\", \"isMobile\", \"renderPluginLoader\"]);\n const ckId = React.useMemo(() => getRandomCKId(), []);\n const id = propsId || ckId;\n const lang = settings.get('lang');\n const plugins = settings.get('plugins');\n const plugin = plugins.find((iteratedPlugin) => iteratedPlugin.type === type);\n if (!plugin) {\n throw new ChartKitError({\n code: CHARTKIT_ERROR_CODE.UNKNOWN_PLUGIN,\n message: i18n('error', 'label_unknown-plugin', { type }),\n });\n }\n const ChartComponent = plugin.renderer;\n React.useImperativeHandle(instanceRef, () => ({\n reflow(details) {\n var _a;\n if ((_a = widgetRef.current) === null || _a === void 0 ? void 0 : _a.reflow) {\n widgetRef.current.reflow(details);\n }\n },\n }), []);\n return (React.createElement(React.Suspense, { fallback: React.createElement(Loader, { renderPluginLoader: renderPluginLoader }) },\n React.createElement(\"div\", { className: b({ mobile: isMobile }, 'chartkit-theme_common') },\n React.createElement(ChartComponent, Object.assign({ ref: widgetRef, id: id, lang: lang }, restProps)))));\n};\nconst ChartKitComponentWithErrorBoundary = React.forwardRef(function ChartKitComponentWithErrorBoundary(props, ref) {\n return (React.createElement(ErrorBoundary, { onError: props.onError, data: props.data, renderError: props.renderError },\n React.createElement(ChartKitComponent, Object.assign({ instanceRef: ref }, props))));\n}) /* https://stackoverflow.com/a/58473012 */;\nexport const ChartKit = typedMemo(ChartKitComponentWithErrorBoundary);\n","import { ChartKit } from './components/ChartKit';\nimport { settings } from './libs';\nexport * from './types/widget-data';\nexport * from './libs/chartkit-error/chartkit-error';\nexport { settings };\nexport default ChartKit;\n","import React from 'react';\nexport * from './types';\nexport const YagrPlugin = {\n type: 'yagr',\n renderer: React.lazy(() => import('./renderer/YagrWidget')),\n};\n","import ChartKit, {settings} from '@gravity-ui/chartkit';\nimport {YagrPlugin} from '@gravity-ui/chartkit/yagr';\nexport type {RawSerieData, YagrWidgetData} from '@gravity-ui/chartkit/yagr';\n\nimport '@gravity-ui/yagr/dist/index.css';\n\nsettings.set({plugins: [YagrPlugin]});\n\nconst COLORS = ['rgb(77, 162, 241)', 'rgb(255, 61, 100)'];\n\nexport function getSerieColor(serieIndex: number) {\n return COLORS[serieIndex % COLORS.length];\n}\n\nexport default ChartKit;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport useResizeObserver from '../../hooks/useResizeObserver';\n\nimport {Timeline, TimelineProps} from './Timeline/Timeline';\nimport {calculateShortcutTime} from './Timeline/util';\n\nimport './YTTimeline.scss';\n\nconst block = cn('yt-timeline');\n\ninterface Props extends Omit<TimelineProps, 'padding' | 'hasPicker' | 'wrapper'> {\n className?: string;\n}\n\nconst DEFAULT_SHORTCUTS = [\n {\n title: '30m',\n time: '30m',\n },\n {\n title: '2h',\n time: '2h',\n },\n {\n title: '1d',\n time: '1d',\n },\n {\n title: '1w',\n time: '1w',\n },\n {\n title: '1mo',\n time: '1mo',\n },\n {\n time: 'custom',\n },\n];\n\nfunction YTTimelineImpl({className, topShortcuts, ...rest}: Props) {\n const [width, setWidth] = React.useState<number | undefined>();\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n\n const onResize = React.useCallback(\n ([item]: Array<ResizeObserverEntry>) => {\n const {width: w} = item?.contentRect || {};\n if (w !== width) {\n setWidth(w);\n }\n },\n [width, setWidth],\n );\n\n useResizeObserver({\n element: ref || undefined,\n onResize,\n });\n\n return (\n <Timeline\n {...rest}\n padding={0.05}\n hasPicker={true}\n topShortcuts={topShortcuts || DEFAULT_SHORTCUTS}\n wrapper={({ruler, picker}) => {\n return (\n <div className={block(null, className)} ref={setRef}>\n {picker}\n <div className={block('ruler')}>{ruler}</div>\n </div>\n );\n }}\n />\n );\n}\n\nexport type TimelineUpdateValue = Parameters<Required<TimelineProps>['onUpdate']>[0];\n\nexport const YTTimeline = React.memo(YTTimelineImpl);\n\nconst ONE_DAY_MS = 24 * 3600 * 1000;\n\nexport function calcFromTo(timeRange: {from?: number; to?: number; shortcutValue?: string}) {\n const {from = Math.floor(Date.now() - ONE_DAY_MS), to = Math.ceil(Date.now())} =\n timeRange.shortcutValue !== undefined\n ? calculateShortcutTime(timeRange.shortcutValue)\n : timeRange;\n\n return {...timeRange, from, to};\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {withRouter} from 'react-router';\n\nimport {computeStateQuery} from '../../utils/index';\nimport Link from '../../components/Link/Link';\nimport FormattedText from './FormattedText';\n\nfunction FormattedLink(props) {\n const {state, theme = 'ghost', className, text, match, onClick, ...rest} = props;\n const url = computeStateQuery({cluster: match.params.cluster, ...state});\n return (\n <Link routed url={url} theme={theme} onClick={onClick} className={className}>\n {React.isValidElement(text) ? text : <FormattedText text={text} {...rest} />}\n </Link>\n );\n}\nFormattedLink.propTypes = {\n state: PropTypes.shape({\n page: PropTypes.string.isRequired,\n cluster: PropTypes.string,\n tab: PropTypes.string,\n }).isRequired,\n text: PropTypes.oneOfType([PropTypes.node, PropTypes.string]).isRequired,\n className: PropTypes.string,\n theme: PropTypes.string,\n onClick: PropTypes.func,\n // from react-router\n match: PropTypes.shape({\n params: PropTypes.shape({\n cluster: PropTypes.string,\n }),\n }),\n};\nexport default withRouter(FormattedLink);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FormattedText from './FormattedText';\nimport FormattedLink from './FormattedLink';\n\nexport default function FormattedTextOrLink({asLink = false, ...props}) {\n return asLink ? <FormattedLink {...props} /> : <FormattedText {...props} />;\n}\nFormattedTextOrLink.propTypes = {\n asLink: PropTypes.bool,\n};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n\nimport './FormattedId.scss';\n\nconst block = cn('table-formatters-id');\n\nFormattedId.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n};\n\nexport default function FormattedId({id}) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n return (\n <div\n className={block({hovered: hovered ? 'yes' : 'no'})}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <span className=\"elements-ellipsis\">{id}</span>\n {hovered && (\n <div className={block('clipboard-button-wrapper')}>\n <ClipboardButton view=\"flat-secondary\" size=\"m\" text={id} />\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../common/hammer';\n\n// TODO: here are defiend reworked components from /templates/utils, drop original functions once we switch to\n// new components everywhere\nexport {default as FormattedText} from './FormattedText';\nexport {default as FormattedLink} from './FormattedLink';\nexport {default as FormattedTextOrLink} from './FormattedTextOrLink';\nexport {default as FormattedId} from './FormattedId/FormattedId';\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsFloatNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item), {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n}\n\nexport function printColumnAsProgress(item, columnName) {\n const column = this.props.columns[columnName];\n return <Progress {...column.get(item)} />;\n}\n\nexport function printColumnAsTimeDuration(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.props.columns[columnName];\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","export const ROWS_PER_PAGE = 100;\n","import {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport React, {useCallback, useMemo} from 'react';\nimport {DialogField, FormApi, YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport {Button, ButtonProps} from '@gravity-ui/uikit';\nimport PermissionsControl from '../RequestPermissions/PermissionsControl/PermissionsControl';\n\nimport withVisible, {WithVisibleProps} from '../../../hocs/withVisible';\n\nimport './RequestPermissions.scss';\nimport {YTError} from '../../../types';\nimport {AclMode, INHERITANCE_MODE_TYPES, IdmObjectType} from '../../../constants/acl';\n\nimport UIFactory from '../../../UIFactory';\nimport hammer from '../../../common/hammer';\nimport map_ from 'lodash/map';\n\nimport {docsUrl} from '../../../config';\nimport {makeLink} from '../../../utils/utils';\nimport {AclColumnGroup, IdmKindType} from '../../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../../utils/acl/acl-api';\nimport {PermissionToRequest} from '../../../store/actions/acl';\n\nconst block = cn('acl-request-permissions');\n\nconst FLAG_NAME_PREFIX = '##_flag_';\n\nexport type RequestPermissionsFieldsNames =\n | 'cluster'\n | 'path'\n | 'permissions'\n | 'subjects'\n | 'duration'\n | 'commentHeader'\n | 'comment'\n | 'inheritance_mode'\n | 'permissionFlags'\n | 'readColumns'\n | 'readColumnGroup';\n\nexport interface Props extends WithVisibleProps {\n className?: string;\n buttonClassName?: string;\n buttonProps?: ButtonProps;\n cluster?: string;\n normalizedPoolTree?: string;\n path: string;\n idmKind: IdmKindType;\n requestPermissions: (params: {\n values: PermissionToRequest;\n idmKind: IdmKindType;\n }) => Promise<void>;\n cancelRequestPermissions: (params: {idmKind: IdmKindType}) => unknown;\n error?: YTError;\n onSuccess?: () => void;\n columnGroups?: Array<AclColumnGroup>;\n aclMode?: AclMode;\n}\n\ntype FormValues = {\n path: string;\n cluster: string;\n permissions: {[x: string]: Array<YTPermissionTypeUI>} | null;\n subjects: Array<{\n value: string;\n type: 'users' | 'groups' | 'app';\n text?: string;\n }>;\n inheritance_mode?: string;\n duration?: Date;\n comment?: string;\n readColumnGroup?: string;\n} & Record<`${typeof FLAG_NAME_PREFIX}${string}`, boolean>;\n\nconst SHORT_TITLE: Partial<Record<IdmKindType, string>> = {\n access_control_object: 'ACO',\n};\n\nconst COLUMNS_FELDS = new Set<RequestPermissionsFieldsNames>(['readColumns', 'readColumnGroup']);\n\nfunction RequestPermissions(props: Props) {\n const {\n aclMode,\n visible,\n handleShow,\n handleClose,\n className,\n buttonClassName,\n path,\n idmKind,\n requestPermissions,\n cancelRequestPermissions,\n error,\n cluster,\n columnGroups,\n buttonProps,\n /*denyColumns,*/\n } = props;\n\n const onClose = useCallback(() => {\n handleClose();\n cancelRequestPermissions({idmKind});\n }, [handleClose, cancelRequestPermissions, idmKind]);\n\n const {\n requestPermissionsFields,\n requestPermissionsFlags = {},\n buttonsTitle,\n } = UIFactory.getAclApi();\n\n const onAdd = useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n const values = {...form.getState().values};\n const permissionFlags: Record<string, boolean> = {};\n Object.keys(requestPermissionsFlags).forEach((k) => {\n const key = `${FLAG_NAME_PREFIX}${k}` as keyof typeof values;\n permissionFlags[k] = Boolean(values[key]);\n\n delete values[key];\n });\n return requestPermissions({\n values: {...values, permissionFlags},\n idmKind,\n });\n },\n [requestPermissions, idmKind],\n );\n\n const currentCaption = `Current ${SHORT_TITLE[idmKind] ?? idmKind}`;\n const {permissionsToRequest, getAvailablePermissions} =\n UIFactory.getAclPermissionsSettings()[idmKind];\n\n const [availablePermissions, setAvailablePermissions] = React.useState<\n typeof permissionsToRequest | undefined\n >(undefined);\n\n const onShow = useCallback(async () => {\n try {\n const value = await getAvailablePermissions?.({path});\n setAvailablePermissions(value);\n } catch {\n setAvailablePermissions(undefined);\n } finally {\n handleShow();\n }\n }, [path, handleShow, getAvailablePermissions]);\n\n const firstItemDisabled = idmKind === IdmObjectType.ACCOUNT;\n\n const choices = availablePermissions ?? permissionsToRequest;\n const permissions = firstItemDisabled ? valueWithCheckedFirstChoice(choices) : null;\n\n const availableFields: Record<\n RequestPermissionsFieldsNames,\n Omit<DialogField, 'name'>\n > = useMemo(() => {\n const disabledChoices = idmKind === IdmObjectType.ACCOUNT ? [0] : undefined;\n return {\n cluster: {\n type: 'plain',\n caption: 'Cluster',\n extras: {\n className: block('cluster'),\n },\n },\n path: {\n type: 'text',\n caption: currentCaption,\n extras: {\n disabled: !error,\n },\n },\n permissions: {\n type: 'permissions',\n caption: 'Permissions',\n required: true,\n tooltip: (\n <>\n {docsUrl(\n makeLink(UIFactory.docsUrls['acl:permissions'], 'Permissions types'),\n 'Permissions types',\n )}\n </>\n ),\n extras: {\n choices: choices,\n disabledChoices,\n },\n },\n readColumns: {\n type: 'acl-columns',\n caption: 'Read columns',\n required: true,\n },\n readColumnGroup: {\n type: 'acl-column-group',\n caption: 'Read column group',\n required: true,\n extras: {\n columnGroups,\n },\n },\n subjects: {\n type: 'acl-subjects',\n caption: 'Subjects',\n required: false,\n extras: {\n placeholder: 'Enter group name, user name or login...',\n allowedTypes: ['users', 'groups', 'app'],\n },\n },\n duration: {\n type: 'before-date',\n caption: 'Duration',\n },\n commentHeader: {\n type: 'block',\n className: block('modal-comments-header'),\n extras: {\n children: (\n <React.Fragment>\n <div className={'is-dialog__label'}>Comment</div>\n <div className={block('comment-notice')}>\n Teams and people can be requested through the IDM after the access\n group is created. If you have a more complex case please describe it\n in the comments.\n </div>\n </React.Fragment>\n ),\n },\n },\n comment: {\n type: 'textarea',\n className: block('modal-comments'),\n },\n inheritance_mode: {\n type: 'yt-select-single',\n caption: 'Inheritance mode',\n extras: {\n items: map_(INHERITANCE_MODE_TYPES, (value) => ({\n value: value,\n text: hammer.format['ReadableField'](value),\n })),\n hideClear: true,\n hideFilter: true,\n with: 'max',\n },\n },\n permissionFlags: {\n type: 'block',\n caption: 'Permission flags',\n extras: {children: 'Not implemented'},\n },\n };\n }, [choices, currentCaption, error, idmKind]);\n\n const useColumns = aclMode === AclMode.COLUMN_GROUPS_PERMISSISONS;\n\n const dialogFields = useMemo(() => {\n let flagsIndex = -1;\n const res = requestPermissionsFields.reduce(\n (acc, field) => {\n const allowField = useColumns ? field !== 'permissions' : !COLUMNS_FELDS.has(field);\n if (!allowField) {\n return acc;\n }\n\n if (field === 'permissionFlags') {\n flagsIndex = acc.length;\n }\n\n acc.push({\n ...availableFields[field],\n name: field,\n } as DialogField<FormValues>);\n\n return acc;\n },\n [] as Array<DialogField<FormValues>>,\n );\n\n if (flagsIndex !== -1) {\n const flags: typeof res = Object.keys(requestPermissionsFlags ?? []).map((key) => {\n const flagInfo = requestPermissionsFlags[key];\n return {\n type: 'tumbler',\n caption: hammer.format.ReadableField(flagInfo?.title),\n name: `${FLAG_NAME_PREFIX}${key}`,\n tooltip: flagInfo.help,\n initialValue: flagInfo.initialValue,\n };\n });\n res.splice(flagsIndex, 1, ...flags);\n }\n return res;\n }, [availableFields, requestPermissionsFields, useColumns]);\n\n const {editAcl = 'Edit ACL', editColumnsAcl = 'Edit columns ACL'} = buttonsTitle ?? {};\n const title = useColumns ? editColumnsAcl : editAcl;\n\n return !choices?.length ? null : (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <Button className={buttonClassName} view=\"action\" {...buttonProps} onClick={onShow}>\n {title}\n </Button>\n\n <YTDFDialog<FormValues>\n pristineSubmittable\n onClose={onClose}\n className={block('modal')}\n visible={Boolean(visible)}\n onAdd={onAdd}\n headerProps={{\n title,\n }}\n initialValues={{\n path,\n permissions,\n cluster,\n inheritance_mode: INHERITANCE_MODE_TYPES.OBJECT_AND_DESCENDANTS,\n }}\n validate={(values) => {\n const subjects = values.subjects;\n const validationError: Record<\n keyof Pick<FormValues, 'subjects'>,\n string | undefined\n > = {\n subjects: undefined,\n };\n\n if (!subjects.length) {\n const errorMessage = 'At least one subject should be selected.';\n validationError.subjects = errorMessage;\n }\n\n return validationError;\n }}\n fields={[...dialogFields, ...makeErrorFields([error])]}\n />\n </div>\n </ErrorBoundary>\n );\n}\n\nexport default compose(withVisible)(RequestPermissions) as unknown as React.ComponentType<\n Omit<Props, keyof WithVisibleProps>\n>;\n\nfunction valueWithCheckedFirstChoice(choices: string | any[]) {\n if (!choices || choices.length < 1) {\n return {};\n }\n\n return {\n [PermissionsControl.getChoiceName(choices[0])]: choices[0],\n };\n}\n","import type {RootState} from '../../reducers';\n\nexport const selectCellPreviewVisible = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.visible;\nexport const selectCellPreviewLoading = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.loading;\nexport const selectCellPreviewData = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.data;\nexport const selectCellPreviewYtCliDownloadCommand = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.ytCliDownloadCommand;\nexport const selectCellPreviewNoticeText = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.noticeText;\nexport const selectErrorPreviewCellPath = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.error;\n","import React from 'react';\n\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Flex, Text} from '@gravity-ui/uikit';\n\nimport SimpleModal from '../../components/Modal/SimpleModal';\nimport {\n selectCellPreviewData,\n selectCellPreviewLoading,\n selectCellPreviewNoticeText,\n selectCellPreviewVisible,\n selectCellPreviewYtCliDownloadCommand,\n selectErrorPreviewCellPath,\n} from '../../store/selectors/modals/cell-preview';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport block from 'bem-cn-lite';\n\nimport Yson from '../../components/Yson/Yson';\nimport Error from '../../components/Error/Error';\nimport {type YsonSettings, getPreviewCellYsonSettings} from '../../store/selectors/thor/unipika';\nimport {closeCellPreviewAndCancelRequest} from '../../store/actions/modals/cell-preview';\nimport {isMediaTag} from '../../utils/yql-types';\n\nimport './CellPreviewModal.scss';\n\nconst b = block('cell-preview-modal');\n\nexport const CellPreviewModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const loading = useSelector(selectCellPreviewLoading);\n const data = useSelector(selectCellPreviewData);\n const visible = useSelector(selectCellPreviewVisible);\n const ytCliDownloadCommand = useSelector(selectCellPreviewYtCliDownloadCommand);\n const noticeText = useSelector(selectCellPreviewNoticeText);\n const error = useSelector(selectErrorPreviewCellPath);\n\n const unipikaSettings = useSelector(getPreviewCellYsonSettings);\n\n return (\n <SimpleModal\n title=\"Preview\"\n visible={visible}\n loading={loading}\n onCancel={() => dispatch(closeCellPreviewAndCancelRequest())}\n wrapperClassName={b('wrapper')}\n >\n <Flex\n qa=\"cell-preview-modal-content\"\n className={b('content')}\n gap={2}\n direction=\"column\"\n >\n <Flex gap={2} direction=\"column\">\n <Text variant=\"subheader-3\" color=\"secondary\">\n {noticeText}\n </Text>\n {ytCliDownloadCommand ? (\n <code className={b('command-wrapper')}>\n <div className={b('command')}>\n <div\n data-qa=\"cell-preview-command\"\n className={b('command-content')}\n title={ytCliDownloadCommand}\n >\n {ytCliDownloadCommand}\n </div>\n <ClipboardButton\n view={'flat-secondary'}\n text={ytCliDownloadCommand}\n size={'s'}\n />\n </div>\n </code>\n ) : null}\n </Flex>\n {error ? (\n <Error error={error} />\n ) : (\n <PreviewContent data={data} unipikaSettings={unipikaSettings} />\n )}\n </Flex>\n </SimpleModal>\n );\n};\n\ntype PreviewContentProps = {\n data: {$type?: string; $value?: any; $tag?: string} | undefined;\n unipikaSettings: YsonSettings;\n};\n\nfunction PreviewContent(props: PreviewContentProps) {\n const {data, unipikaSettings} = props;\n\n if (data?.$type === 'yql.string' || data?.$type === 'yql.json') {\n return <pre className=\"elements-code\">{data?.$value}</pre>;\n }\n\n if (data?.$type === 'yql.tagged' && data.$tag && isMediaTag(data.$tag)) {\n return <img src={`data:${data.$tag};base64,${data?.$value}`} alt=\"image-preview\" />;\n }\n\n return (\n <Yson\n className={b('yson-container')}\n folding={true}\n value={data?.$value}\n tableSettings={{dynamicRenderScrollParentGetter: undefined}}\n settings={unipikaSettings}\n customLayout={({toolbar, content}) => {\n return (\n <>\n <div className={b('toolbar')}>{toolbar}</div>\n {content}\n </>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {getCluster} from '../../store/selectors/global';\nimport Link from '../../components/Link/Link';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {uiSettings} from '../../config/ui-settings';\nimport {makeRegexpFromSettings} from '../../../shared/utils';\n\nimport './Host.scss';\n\nconst reShortName = makeRegexpFromSettings(uiSettings.reShortNameFromAddress);\nconst reTabletNodeShortName = makeRegexpFromSettings(uiSettings.reShortNameFromTabletNodeAddress);\n\nexport function calcShortNameByRegExp(address: string, asTabletNode?: boolean) {\n const re = asTabletNode ? reTabletNodeShortName : reShortName;\n if (re) {\n const res = re?.exec(address);\n if (res?.groups?.shortname) {\n return [res.groups.shortname, res.groups.suffix].filter(Boolean).join('');\n }\n }\n return undefined;\n}\n\nconst block = cn('yt-host');\n\ninterface Props {\n address: string;\n className?: string;\n copyBtnClassName?: string;\n onClick?: () => void;\n useText?: boolean;\n prefix?: React.ReactNode;\n asTabletNode?: boolean;\n inlineMargins?: boolean;\n}\n\nexport function Host({\n address = '',\n prefix,\n className,\n copyBtnClassName,\n onClick,\n useText,\n asTabletNode,\n inlineMargins,\n}: Props) {\n const host = React.useMemo(() => {\n return calcShortNameByRegExp(address, asTabletNode) || address;\n }, [address, asTabletNode]);\n\n const cluster = useSelector(getCluster);\n\n return (\n <span\n className={block(\n {hidden: !host, 'inline-margins': inlineMargins},\n ['elements-monospace', className].filter(Boolean).join(' '),\n )}\n onClick={onClick}\n >\n {prefix}\n <Tooltip className={block('tooltip')} content={address}>\n {useText ? (\n host\n ) : (\n <Link url={`/${cluster}/components/nodes/${address}`} routed>\n {host}\n </Link>\n )}\n </Tooltip>\n <span className={block('copy-btn', copyBtnClassName)}>\n <ClipboardButton view={'flat-secondary'} text={address} />\n </span>\n </span>\n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../store/actions/global';\n\ntype SidePanelContentProps = {\n onClose: () => void;\n renderContent(props: {visible: boolean; onClose: () => void}): React.ReactNode;\n};\n\nexport const SidePanelPortal = withSplit(SideContent);\n\nexport function useSidePanel(\n name: string,\n {renderContent}: Pick<SidePanelContentProps, 'renderContent'>,\n) {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(name));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\n}\n","import React from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\n\ninterface Props {\n element?: Element;\n onResize: ResizeObserverCallback;\n}\n\nexport default function useResizeObserver({element, onResize}: Props) {\n React.useEffect(() => {\n if (element) {\n const observer = new ResizeObserver(onResize);\n observer.observe(element);\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n } else {\n return undefined;\n }\n }, [element, onResize]);\n}\n","import React from 'react';\nimport Link from '../../components/Link/Link';\nimport {AccountsTab} from '../../constants/accounts/accounts';\nimport {Page} from '../../constants';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../../store/selectors/global';\nimport hammer from '../../common/hammer';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\ninterface Props {\n className?: string;\n account?: string;\n cluster?: string;\n\n inline?: boolean;\n}\n\nexport function genAccountsUrl(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}?account=${account}`;\n}\n\nexport default function AccountLink(props: Props) {\n const {cluster: propsCluster, account, className, inline} = props;\n const currentCluster = useSelector(getCluster);\n const cluster = propsCluster || currentCluster;\n\n return (\n <Tooltip\n ellipsis={inline}\n className={className}\n content={\n !account ? null : (\n <>\n <ClipboardButton text={account} view=\"flat-secondary\" /> {account}\n </>\n )\n }\n >\n {account ? (\n <Link theme={'primary'} routed url={genAccountsUrl(cluster, account)}>\n {account}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n )}\n </Tooltip>\n );\n}\n","export const pathToFileName = (path: string) => {\n return path.replace(/\\/+/g, '_');\n};\n","import {ErrorMessage, NetworkCode} from '../../constants/navigation/modals/path-editing-popup';\n\nimport filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\n\nexport function getOnlyFolders(suggestions) {\n return filter_(suggestions, (child) => child.type === 'map_node');\n}\n\nfunction getCorrectInnerError(innerErrors = []) {\n const correctErrorCodes = values_(NetworkCode);\n\n return find_(innerErrors, (error) => {\n return some_(correctErrorCodes, (code) => code === error.code);\n });\n}\n\nexport function prepareErrorMessage(error) {\n return (\n ErrorMessage[error.code] ||\n ErrorMessage[getCorrectInnerError(error.inner_errors)?.code] ||\n ErrorMessage['DEFAULT']\n );\n}\n","import {prepareErrorMessage} from '../../../../utils/navigation/path-editing-popup';\nimport {\n HIDE_ERROR,\n SET_PATH,\n SHOW_ERROR,\n} from '../../../../constants/navigation/modals/path-editing-popup';\n\nexport function showErrorInModal(error) {\n const message = prepareErrorMessage(error);\n\n return {\n type: SHOW_ERROR,\n data: {message, error},\n };\n}\n\nexport function setPath(newPath) {\n return {\n type: SET_PATH,\n data: {newPath},\n };\n}\n\nexport function hideError() {\n return {\n type: HIDE_ERROR,\n };\n}\n\nexport function openEditingPopup(objectPath, path, type, multipleMode = false, items = []) {\n return {\n type,\n data: {path, objectPath, items, multipleMode},\n };\n}\n\nexport function closeEditingPopup(type) {\n return {type};\n}\n","import React from 'react';\n\nimport {getDisplayName} from '../../../utils';\nimport {useHotkeysScope} from '../../../hooks/use-hotkeysjs-scope';\n\nexport default function withScope(scope: string) {\n return function wrap<P>(Component: React.ComponentType<P>) {\n type Props = P & {visible: true};\n const ResComponent: React.FC<Props> = function WithScope(props) {\n useHotkeysScope(scope, props.visible);\n return <Component {...props} />;\n };\n\n ResComponent.displayName = `WithScope(${getDisplayName(Component)})`;\n return ResComponent;\n };\n}\n","import key from 'hotkeys-js';\nimport React from 'react';\n\nexport function useHotkeysScope(scope: string, visible: boolean) {\n React.useEffect(() => {\n if (!visible) {\n return undefined;\n }\n\n const prevScope = key.getScope();\n key.setScope(scope);\n\n return () => {\n key.setScope(prevScope);\n };\n }, [scope, visible]);\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {compose} from 'redux';\n\nimport ErrorMessage from '../../../../components/ErrorMessage/ErrorMessage';\nimport PathEditor from '../../../../containers/PathEditor/PathEditor';\nimport Modal from '../../../../components/Modal/Modal';\nimport Error from '../../../../components/Error/Error';\n\nimport {hideError, setPath} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {getOnlyFolders} from '../../../../utils/navigation/path-editing-popup';\nimport withScope from '../../../../hocs/components/Modal/withScope';\n\nimport './PathEditorModal.scss';\n\nconst b = block('path-editor-modal');\n\nclass PathEditorModal extends Component {\n static propTypes = {\n // from parent component\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n placeholder: PropTypes.string.isRequired,\n modalTitle: PropTypes.string.isRequired,\n\n visible: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n inProcess: PropTypes.bool.isRequired,\n errorMessage: PropTypes.string.isRequired,\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n editingPath: PropTypes.string.isRequired,\n options: PropTypes.node,\n\n onConfirmButtonClick: PropTypes.func.isRequired,\n onCancelButtonClick: PropTypes.func.isRequired,\n\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onApply: PropTypes.func,\n onFocus: PropTypes.func,\n\n // from connect\n setPath: PropTypes.func.isRequired,\n hideError: PropTypes.func.isRequired,\n };\n\n _handleBlur(newPath) {\n this.props.setPath(newPath);\n }\n _handleFocus(newPath) {\n this.props.setPath(newPath);\n }\n _handleApply(newPath) {\n this.props.setPath(newPath);\n }\n _handleChange(newPath) {\n this.props.setPath(newPath);\n this.props.hideError();\n }\n\n handleBlur = (path) => {\n const {onBlur} = this.props;\n\n if (typeof onBlur === 'function') {\n onBlur(path);\n } else {\n this._handleBlur(path);\n }\n };\n handleFocus = (event, {path}) => {\n const {onFocus} = this.props;\n\n if (typeof onFocus === 'function') {\n onFocus(path);\n } else {\n this._handleFocus(path);\n }\n };\n handleChange = (newPath) => {\n const {onChange} = this.props;\n\n if (typeof onChange === 'function') {\n onChange(newPath);\n } else {\n this._handleChange(newPath);\n }\n };\n handleApply = (newPath) => {\n const {onApply} = this.props;\n\n if (typeof onApply === 'function') {\n onApply(newPath);\n } else {\n this._handleApply(newPath);\n }\n };\n\n renderContent() {\n const {\n editingPath,\n inProcess,\n placeholder,\n title,\n description,\n showError,\n errorMessage,\n error,\n options,\n } = this.props;\n\n return (\n <div className={b()}>\n <strong>{title}</strong>\n <p className={b('text')}>{description}</p>\n\n <PathEditor\n placeholder={placeholder}\n customFilter={getOnlyFolders}\n onChange={this.handleChange}\n onApply={this.handleApply}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n defaultPath={editingPath}\n disabled={inProcess}\n showErrors={false}\n autoFocus\n hasClear\n />\n\n {options}\n\n {showError && (\n <div className={b('error-wrapper')}>\n <ErrorMessage message={errorMessage} />\n <Error error={error} />\n </div>\n )}\n </div>\n );\n }\n\n render() {\n const {visible, inProcess, showError, modalTitle} = this.props;\n\n const content = visible && this.renderContent();\n const isDisabled = () => inProcess || showError;\n\n return (\n <Modal\n onConfirm={this.props.onConfirmButtonClick}\n onCancel={this.props.onCancelButtonClick}\n isConfirmDisabled={isDisabled}\n confirmText=\"Confirm\"\n loading={inProcess}\n title={modalTitle}\n content={content}\n visible={visible}\n />\n );\n }\n}\n\nexport default compose(\n withScope('path-editor-modal'),\n connect(null, {setPath, hideError}),\n)(PathEditorModal);\n","import React from 'react';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {COPY_OBJECT} from '../../../../constants/navigation/modals/copy-object';\nimport {showErrorInModal} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {prepareDestinationPath, preparePath} from '../../../../utils/navigation';\nimport CancelHelper from '../../../../utils/cancel-helper';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {wrapBatchPromise} from '../../../../utils/utils';\nimport {Dispatch} from 'redux';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\ninterface CopyOptions {\n preserve_account?: boolean;\n recursive?: boolean;\n}\n\nfunction copyObjectIntoDirectory(from: string, to: string, options: CopyOptions) {\n const parts = from.split('/');\n const name = parts[parts.length - 1];\n return yt.v3.copy({\n parameters: {\n source_path: preparePath(from),\n destination_path: prepareDestinationPath(to, name),\n ...options,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction copyObjectWithRename(from: string, to: string, options: CopyOptions) {\n return yt.v3.copy({\n parameters: {\n source_path: preparePath(from),\n destination_path: to,\n ...options,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction copySingleObject(from: string, to: string, options: CopyOptions) {\n const lastChar = to.charAt(to.length - 1);\n\n if (lastChar === '/') {\n return copyObjectIntoDirectory(from, to, options);\n }\n\n return yt.v3\n .exists({parameters: {path: `${to}&`}, cancellation: requests.saveCancelToken})\n .then((exist: boolean) => {\n return exist\n ? copyObjectIntoDirectory(from, to, options)\n : copyObjectWithRename(from, to, options);\n });\n}\n\nfunction copyObjects(\n items: Array<{path: string; titleUnquoted: string}>,\n copyingPath: string,\n options: CopyOptions,\n) {\n if (items.length === 1) {\n const [{path}] = items;\n return copySingleObject(path, copyingPath, options);\n }\n\n return yt.v3.startTransaction({timeout: 120000}).then((id: string) => {\n const copyRequests = map_(items, (node) => {\n return {\n command: 'copy' as const,\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: prepareDestinationPath(copyingPath, node.titleUnquoted),\n ...options,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationCopy, copyRequests, {\n errorTitle: 'Failed to copy the object(s)',\n saveCancelSourceCb: requests.saveCancelToken,\n }),\n 'Failed to copy the object(s)',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3.abortTransaction({transaction_id: id}).then(() => Promise.reject(err)),\n );\n });\n}\n\nexport function copyObject(\n objectPath: string,\n copyingPath: string,\n onSuccess: () => void,\n multipleMode: boolean,\n items: Array<{path: string; titleUnquoted: string}>,\n options: CopyOptions,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: COPY_OBJECT.REQUEST});\n\n return Promise.resolve()\n .then(() =>\n multipleMode\n ? copyObjects(items, copyingPath, options)\n : copySingleObject(objectPath, copyingPath, options),\n )\n .then(() => {\n dispatch({type: COPY_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess();\n }\n\n toaster.add({\n name: 'copy',\n autoHiding: 10000,\n theme: 'success',\n title: multipleMode\n ? 'Objects were successfully copied'\n : 'Object was successfully copied',\n content: <Link url={`navigation?path=${copyingPath}`}>{copyingPath}</Link>,\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: COPY_OBJECT.CANCELLED,\n });\n } else {\n dispatch({type: COPY_OBJECT.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React, {Component} from 'react';\nimport {Checkbox, Flex} from '@gravity-ui/uikit';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_COPY_OBJECT_POPUP} from '../../../../../constants/navigation/modals/copy-object';\nimport {\n abortRequests,\n copyObject,\n} from '../../../../../store/actions/navigation/modals/copy-object';\nimport {\n closeEditingPopup,\n hideError,\n} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updateView} from '../../../../../store/actions/navigation';\n\nclass CopyObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n items: PropTypes.array.isRequired,\n errorMessage: PropTypes.string.isRequired,\n copyPath: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n copying: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n multipleMode: PropTypes.bool.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n\n updateView: PropTypes.func.isRequired,\n copyObject: PropTypes.func.isRequired,\n abortRequests: PropTypes.func.isRequired,\n closeEditingPopup: PropTypes.func.isRequired,\n hideError: PropTypes.func.isRequired,\n };\n\n state = {preserve_account: false, recursive: false};\n\n handleConfirmButtonClick = () => {\n const {copyPath} = this.props;\n this.doCopy(copyPath);\n };\n\n handleCancelButtonClick = () => {\n const {closeEditingPopup, abortRequests} = this.props;\n\n this.resetOptions();\n closeEditingPopup(CLOSE_COPY_OBJECT_POPUP);\n abortRequests();\n };\n\n handleApply = (newPath) => {\n const {copying, showError} = this.props;\n const disabled = copying || showError;\n\n if (!disabled) {\n this.doCopy(newPath);\n }\n };\n\n doCopy(toPath) {\n const {copyObject, updateView, objectPath, multipleMode, items} = this.props;\n const {preserve_account, recursive} = this.state;\n\n copyObject(objectPath, toPath, updateView, multipleMode, items, {\n preserve_account,\n recursive,\n }).then(() => this.resetOptions());\n }\n\n render() {\n const {popupVisible, copying, copyPath, showError, errorMessage, error, multipleMode} =\n this.props;\n\n const modalTitle = 'Copy';\n const title = multipleMode\n ? 'Enter a destination path for copied objects.'\n : 'Enter a destination path for the copied object.';\n const description = multipleMode\n ? 'Objects will be copied with the specified path.'\n : 'The object will be copied with the specified path.';\n const placeholder = 'Enter a destination path for the copied object...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n visible={popupVisible}\n inProcess={copying}\n editingPath={copyPath}\n showError={showError}\n error={error}\n options={this.renderOptions()}\n errorMessage={errorMessage}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n\n renderOptions() {\n return (\n <Flex direction=\"column\" gap={2}>\n <Checkbox onUpdate={this.onUpdatePreserveAccount}>Preserve account</Checkbox>\n <Checkbox onUpdate={this.onUpdateRecursiveCopy}>\n Create intermediate directories as required\n </Checkbox>\n </Flex>\n );\n }\n\n resetOptions() {\n this.onUpdatePreserveAccount(false);\n this.onUpdateRecursiveCopy(false);\n }\n\n onUpdateRecursiveCopy = (recursive) => {\n this.props.hideError();\n this.setState((state) => ({...state, recursive}));\n };\n\n onUpdatePreserveAccount = (preserve_account) => {\n this.props.hideError();\n this.setState((state) => ({...state, preserve_account}));\n };\n}\n\nconst mapStateToProps = ({navigation}) => {\n const {\n copyPath,\n objectPath,\n popupVisible,\n showError,\n copying,\n errorMessage,\n error,\n multipleMode,\n items,\n } = navigation.modals.copyObject;\n\n return {\n items,\n multipleMode,\n copyPath,\n copying,\n popupVisible,\n errorMessage,\n error,\n showError,\n objectPath,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n copyObject,\n abortRequests,\n closeEditingPopup,\n hideError,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CopyObjectModal);\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {Dispatch} from 'redux';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n CREATE_DIRECTORY,\n CREATE_MESSAGE,\n} from '../../../../constants/navigation/modals/create-directory';\nimport {\n hideError,\n showErrorInModal,\n} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {RootState} from '../../../../store/reducers';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\nexport function createDirectory(\n {path, recursive}: {path: string; recursive?: boolean},\n onSuccess: () => void,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: CREATE_DIRECTORY.REQUEST});\n\n return yt.v3\n .create({\n parameters: {\n path: path,\n recursive,\n type: 'map_node',\n },\n cancellation: requests.saveCancelToken,\n })\n .then(() => {\n dispatch({type: CREATE_DIRECTORY.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess();\n }\n\n toaster.add({\n name: CREATE_MESSAGE,\n autoHiding: 10000,\n theme: 'success',\n title: CREATE_MESSAGE,\n content: <Link url={`navigation?path=${path}`}>{path}</Link>,\n });\n })\n .catch((error: any) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: CREATE_DIRECTORY.CANCELLED,\n });\n } else {\n dispatch({type: CREATE_DIRECTORY.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n });\n };\n}\n\nexport function clearCreateDirectoryError(): ThunkAction<void, RootState, unknown, any> {\n return (dispatch: Dispatch) => {\n dispatch(hideError());\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_CREATE_DIRECTORY_POPUP} from '../../../../../constants/navigation/modals/create-directory';\nimport {\n abortRequests,\n clearCreateDirectoryError,\n createDirectory,\n} from '../../../../../store/actions/navigation/modals/create-directory';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport {RootState} from '../../../../../store/reducers';\nimport {Checkbox} from '@gravity-ui/uikit';\n\ntype State = {\n recursive: boolean;\n};\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass CreateDirectoryModal extends React.Component<ReduxProps> {\n state: State = {\n recursive: false,\n };\n\n render() {\n const {popupVisible, creating, creatingPath, showError, errorMessage, error} = this.props;\n\n const modalTitle = 'Create Directory';\n const title = 'Enter a name for the new directory.';\n const description = 'The new object will be created at the specified path.';\n const placeholder = 'Enter a new directory path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n editingPath={creatingPath}\n errorMessage={errorMessage}\n error={error}\n visible={popupVisible}\n showError={showError}\n inProcess={creating}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n options={\n <Checkbox checked={this.state.recursive} onUpdate={this.onRecursiveUpdate}>\n Make parent directories as needed\n </Checkbox>\n }\n />\n );\n }\n\n onRecursiveUpdate = (recursive: boolean) => {\n this.setState({recursive});\n this.props.clearCreateDirectoryError?.();\n };\n\n handleConfirmButtonClick = () => {\n const {creatingPath, createDirectory, updateView} = this.props;\n\n createDirectory({path: creatingPath, recursive: this.state.recursive}, updateView);\n };\n\n handleCancelButtonClick = () => {\n this.props.closeEditingPopup(CLOSE_CREATE_DIRECTORY_POPUP);\n this.props.abortRequests();\n };\n\n handleApply = (newPath: string) => {\n const {creating, showError, createDirectory, updateView} = this.props;\n const disabled = creating || showError;\n\n if (!disabled) {\n createDirectory({path: newPath, recursive: this.state.recursive}, updateView);\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {creatingPath, popupVisible, showError, creating, errorMessage, error} =\n state.navigation.modals.createDirectory;\n\n return {\n popupVisible,\n errorMessage,\n error,\n showError,\n creating,\n creatingPath: creatingPath as string,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n abortRequests,\n createDirectory,\n closeEditingPopup,\n clearCreateDirectoryError,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(CreateDirectoryModal);\n","import React from 'react';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {MOVE_OBJECT} from '../../../../constants/navigation/modals/move-object';\nimport {showErrorInModal} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {prepareDestinationPath, preparePath} from '../../../../utils/navigation';\nimport CancelHelper from '../../../../utils/cancel-helper';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {rumLogError} from '../../../../rum/rum-counter';\nimport {wrapBatchPromise} from '../../../../utils/utils';\nimport {Dispatch} from 'redux';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\ninterface MoveOptions {\n preserve_account?: boolean;\n}\n\nfunction moveObjectIntoDirectory(from: string, to: string, {preserve_account}: MoveOptions) {\n const parts = from.split('/');\n const name = parts[parts.length - 1];\n return yt.v3.move({\n parameters: {\n source_path: preparePath(from),\n destination_path: prepareDestinationPath(to, name),\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction moveObjectWithRename(from: string, to: string, {preserve_account}: MoveOptions) {\n return yt.v3.move({\n parameters: {\n source_path: preparePath(from),\n destination_path: to,\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction moveSingleObject(from: string, to: string, options: MoveOptions): Promise<string> {\n const lastChar = to.charAt(to.length - 1);\n\n if (lastChar === '/') {\n return moveObjectIntoDirectory(from, to, options);\n }\n\n return yt.v3\n .exists({parameters: {path: `${to}&`}, cancellation: requests.saveCancelToken})\n .then((exist: boolean) => {\n return exist\n ? moveObjectIntoDirectory(from, to, options)\n : moveObjectWithRename(from, to, options);\n });\n}\n\nfunction moveObjects(\n items: Array<{path: string; titleUnquoted: string}>,\n to: string,\n {preserve_account}: MoveOptions,\n) {\n if (items.length === 1) {\n const [{path}] = items;\n return moveSingleObject(path, to, {preserve_account});\n }\n\n return yt.v3.startTransaction({}).then((id: string) => {\n const moveRequests = map_(items, (node) => {\n return {\n command: 'move' as const,\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: prepareDestinationPath(to, node.titleUnquoted),\n preserve_account,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMove, moveRequests, {\n errorTitle: 'Failed to move the object(s)',\n saveCancelSourceCb: requests.saveCancelToken,\n }),\n 'Failed to move the object(s)',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3.abortTransaction({transaction_id: id}).then(() => Promise.reject(err)),\n );\n });\n}\n\nfunction resolveEntityPath(entityId: string): Promise<string> {\n try {\n return yt.v3.get({\n path: `#${entityId}/@path`,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n });\n } catch (e) {\n rumLogError(e as Error);\n }\n return Promise.resolve('');\n}\n\nexport function moveObject(\n objectPath: string,\n movedPath: string,\n onSuccess: (destFullPath: string) => void,\n multipleMode: boolean,\n items: Array<{path: string; titleUnquoted: string}>,\n {preserve_account}: MoveOptions,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: MOVE_OBJECT.REQUEST});\n\n return Promise.resolve()\n .then(() =>\n multipleMode\n ? moveObjects(items, movedPath, {preserve_account}).then(() => movedPath)\n : moveSingleObject(objectPath, movedPath, {preserve_account}).then((value) =>\n resolveEntityPath(JSON.parse(value)),\n ),\n )\n .then((result) => {\n dispatch({type: MOVE_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess(result);\n }\n\n toaster.add({\n name: 'move',\n autoHiding: 10000,\n theme: 'success',\n title: `Object${multipleMode ? 's' : ''} was successfully moved`,\n content: <Link url={`navigation?path=${result}`}>{result}</Link>,\n });\n return result;\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: MOVE_OBJECT.CANCELLED,\n });\n } else {\n dispatch({type: MOVE_OBJECT.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_MOVE_OBJECT_POPUP} from '../../../../../constants/navigation/modals/move-object';\nimport {\n abortRequests,\n moveObject,\n} from '../../../../../store/actions/navigation/modals/move-object';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updatePath, updateView} from '../../../../../store/actions/navigation';\nimport {Checkbox} from '@gravity-ui/uikit';\nimport {getPath} from '../../../../../store/selectors/navigation';\n\nclass MoveObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n afterMoveStrategy: PropTypes.oneOf(['refresh', 'redirect']),\n items: PropTypes.array.isRequired,\n errorMessage: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n multipleMode: PropTypes.bool.isRequired,\n movedPath: PropTypes.string.isRequired,\n showError: PropTypes.bool.isRequired,\n renaming: PropTypes.bool.isRequired,\n\n closeEditingPopup: PropTypes.func.isRequired,\n abortRequests: PropTypes.func.isRequired,\n moveObject: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n updatePath: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n afterMoveStrategy: 'refresh',\n };\n\n state = {preserve_account: false};\n\n handleConfirmButtonClick = () => {\n const {movedPath} = this.props;\n this.doMove(movedPath);\n };\n\n handleCancelButtonClick = () => {\n const {closeEditingPopup, abortRequests} = this.props;\n\n this.resetOptions();\n closeEditingPopup(CLOSE_MOVE_OBJECT_POPUP);\n abortRequests();\n };\n\n handleApply = (newPath) => {\n const {renaming, showError} = this.props;\n const disabled = renaming || showError;\n\n if (!disabled) {\n this.doMove(newPath);\n }\n };\n\n doMove(toPath) {\n const {\n moveObject,\n objectPath,\n afterMoveStrategy,\n updateView,\n updatePath,\n multipleMode,\n items,\n } = this.props;\n const {preserve_account} = this.state;\n\n const onSucess = (destinationPath) => {\n if (destinationPath && afterMoveStrategy === 'redirect') {\n updatePath(destinationPath);\n return;\n }\n updateView();\n };\n\n moveObject(objectPath, toPath, onSucess, multipleMode, items, {\n preserve_account,\n }).then(() => this.resetOptions());\n }\n\n render() {\n const {popupVisible, renaming, movedPath, showError, errorMessage, error, multipleMode} =\n this.props;\n\n const modalTitle = 'Move';\n const title = multipleMode\n ? 'Enter a new path for objects.'\n : 'Enter a new path for the object.';\n const description = multipleMode\n ? 'Objects will be moved with the specified path.'\n : 'The object will be moved with the specified path.';\n const placeholder = 'Enter a new object path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n editingPath={movedPath}\n errorMessage={errorMessage}\n error={error}\n visible={popupVisible}\n showError={showError}\n inProcess={renaming}\n options={this.renderOptions()}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n\n renderOptions() {\n return (\n <Checkbox\n title={'Preserve account'}\n checked={this.state.preserve_account}\n onUpdate={this.onUpdatePreserveAccount}\n >\n Preserve account\n </Checkbox>\n );\n }\n\n resetOptions() {\n this.onUpdatePreserveAccount(false);\n }\n\n onUpdatePreserveAccount = (preserve_account) => this.setState({preserve_account});\n}\n\nconst mapStateToProps = (state) => {\n const {navigation} = state;\n const path = getPath(state);\n const {\n error,\n errorMessage,\n popupVisible,\n showError,\n renaming,\n movedPath,\n objectPath,\n multipleMode,\n items,\n } = navigation.modals.moveObject;\n\n const entityPath = !multipleMode ? objectPath : items.length !== 1 ? undefined : items[0]?.path;\n\n return {\n error,\n errorMessage,\n popupVisible,\n showError,\n renaming,\n movedPath,\n objectPath,\n multipleMode,\n items,\n afterMoveStrategy: entityPath === path ? 'redirect' : 'refresh',\n };\n};\n\nconst mapDispatchToProps = {\n closeEditingPopup,\n abortRequests,\n moveObject,\n updateView,\n updatePath,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MoveObjectModal);\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {showErrorPopup} from '../../utils/utils';\nimport {INITIAL_STEP} from '../../constants/navigation/modals/restore-object';\n\nfunction getNextObjectName(initialPath, step = INITIAL_STEP) {\n return `${initialPath}(${step})`;\n}\n\nfunction checkPathExists(initialPath, path, step = INITIAL_STEP) {\n return yt.v3\n .exists({path})\n .then((isExists) => {\n if (isExists) {\n const newPath = getNextObjectName(initialPath, ++step);\n\n return checkPathExists(initialPath, newPath, step);\n }\n\n return path;\n })\n .catch(showErrorPopup);\n}\n\nexport function findCorrectObjectName(initialPath) {\n const path = getNextObjectName(initialPath);\n\n return checkPathExists(initialPath, path);\n}\n\nexport function inTrash(path) {\n return path.startsWith('//tmp/trash/') || path.startsWith('//trash/');\n}\n","import {\n OPEN_RESTORE_POPUP,\n RESTORE_OBJECT,\n} from '../../../../constants/navigation/modals/restore-object';\nimport {\n openEditingPopup,\n showErrorInModal,\n} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {findCorrectObjectName} from '../../../../utils/navigation/restore-object';\nimport {NetworkCode} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {preparePath} from '../../../../utils/navigation';\nimport Link from '../../../../components/Link/Link';\nimport {showErrorPopup, wrapBatchPromise} from '../../../../utils/utils';\nimport {updateView} from '../index';\nimport ypath from '../../../../common/thor/ypath';\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport React from 'react';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\n\nconst toaster = new Toaster();\n\nexport function restoreObjects(items) {\n return (dispatch) => {\n dispatch({type: RESTORE_OBJECT.REQUEST});\n return yt.v3\n .startTransaction({})\n .then((id) => {\n const requests = map_(items, (node) => {\n const restorePath = ypath.getValue(node, '/@_restore_path');\n return {\n command: 'move',\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: restorePath,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationRestorePath, requests, {\n errorTitle: 'Failed to get restore path',\n }),\n 'Failed to get restore path',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3\n .abortTransaction({transaction_id: id})\n .then(() => Promise.reject(err)),\n );\n })\n .then(() => {\n dispatch({type: RESTORE_OBJECT.SUCCESS});\n dispatch(updateView());\n\n toaster.add({\n theme: 'success',\n name: 'restore objects',\n timeout: 10000,\n title: 'Objects restored',\n content: 'Objects have been successfully restored',\n });\n })\n .catch((err) => {\n dispatch({type: RESTORE_OBJECT.FAILURE});\n\n toaster.add({\n name: 'restore objects',\n theme: 'danger',\n autoHiding: false,\n title: 'Could not restore objects.',\n content: err?.message || 'Oops, something went wrong',\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n });\n };\n}\n\nexport function restoreObject(objectPath, restorePath, onSuccess) {\n return (dispatch, getState) => {\n dispatch({type: RESTORE_OBJECT.REQUEST});\n\n return yt.v3\n .move({\n source_path: preparePath(objectPath),\n destination_path: restorePath,\n })\n .then(() => {\n dispatch({type: RESTORE_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess(objectPath, restorePath);\n }\n\n toaster.add({\n theme: 'success',\n name: 'restore object',\n timeout: 10000,\n title: 'Object restored',\n content: (\n <div>\n Object has been successfully{' '}\n <Link url={`navigation?path=${restorePath}`}>restored</Link>\n </div>\n ),\n });\n })\n .catch((error) => {\n dispatch({type: RESTORE_OBJECT.FAILURE});\n\n const isModalOpen = getState().navigation.modals.restoreObject.popupVisible;\n\n if (isModalOpen) {\n const action = showErrorInModal(error);\n\n dispatch(action);\n } else {\n switch (error.code) {\n case NetworkCode.EXIST: {\n findCorrectObjectName(restorePath)\n .then((correctRestorePath) => {\n const action = openEditingPopup(\n objectPath,\n correctRestorePath,\n OPEN_RESTORE_POPUP,\n );\n\n dispatch(action);\n })\n .catch(showErrorPopup);\n break;\n }\n case NetworkCode.INCORRECT_PATH: {\n const openAction = openEditingPopup(\n objectPath,\n restorePath,\n OPEN_RESTORE_POPUP,\n );\n const errorAction = showErrorInModal(error);\n\n dispatch(errorAction);\n dispatch(openAction);\n break;\n }\n default:\n showErrorPopup(error);\n break;\n }\n }\n });\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_RESTORE_POPUP} from '../../../../../constants/navigation/modals/restore-object';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {restoreObject} from '../../../../../store/actions/navigation/modals/restore-object';\nimport {updateView} from '../../../../../store/actions/navigation';\n\nclass RestoreObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n errorMessage: PropTypes.string.isRequired,\n restoredPath: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n restoring: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n\n updateView: PropTypes.func.isRequired,\n restoreObject: PropTypes.func.isRequired,\n closeEditingPopup: PropTypes.func.isRequired,\n };\n\n handleConfirmButtonClick = () => {\n const {restoreObject, objectPath, restoredPath, updateView} = this.props;\n\n restoreObject(objectPath, restoredPath, updateView);\n };\n\n handleCancelButtonClick = () => this.props.closeEditingPopup(CLOSE_RESTORE_POPUP);\n\n handleApply = (newPath) => {\n const {restoreObject, objectPath, showError, restoring, updateView} = this.props;\n const disabled = restoring || showError;\n\n if (!disabled) {\n restoreObject(objectPath, newPath, updateView);\n }\n };\n\n render() {\n const {popupVisible, restoring, restoredPath, showError, errorMessage, error} = this.props;\n\n const modalTitle = 'Restore';\n const title = 'Object with the same path is already exists.';\n const description =\n 'The object will be restored using a new path or you can change path to what you want.';\n const placeholder = 'Enter restored object path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n visible={popupVisible}\n inProcess={restoring}\n editingPath={restoredPath}\n showError={showError}\n errorMessage={errorMessage}\n error={error}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n}\n\nconst mapStateToProps = ({navigation}) => {\n const {restoredPath, objectPath, popupVisible, showError, restoring, errorMessage, error} =\n navigation.modals.restoreObject;\n\n return {\n restoredPath,\n restoring,\n popupVisible,\n errorMessage,\n error,\n showError,\n objectPath,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n restoreObject,\n closeEditingPopup,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RestoreObjectModal);\n","import React from 'react';\nimport {connect} from 'react-redux';\n\nimport {AccessContentAcl, NavigationAcl} from '../../../../containers/ACL';\nimport {getAclLoadState} from '../../../../store/selectors/acl';\nimport {getAttributes, getRawPath} from '../../../../store/selectors/navigation';\nimport {IdmObjectType} from '../../../../constants/acl';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nconst AclTabParams = {\n [IdmObjectType.PATH]: {\n rumType: RumMeasureTypes.NAVIGATION_TAB_ACL,\n Component: NavigationAcl,\n },\n [IdmObjectType.ACCESS_CONTROL_OBJECT]: {\n rumType: RumMeasureTypes.NAVIGATION_TAB_ACL_ACCESS,\n Component: AccessContentAcl,\n },\n};\n\nconst makeComponentWithRum = (idmKind) => {\n const {rumType, Component} = AclTabParams[idmKind];\n const AclTabComponent = (props) => {\n useAppRumMeasureStart({\n type: rumType,\n startDeps: [props.loadState],\n allowStart: ([loadState]) => !isFinalLoadingStatus(loadState),\n });\n\n useRumMeasureStop({\n type: rumType,\n stopDeps: [props.loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Component {...props} />;\n };\n return AclTabComponent;\n};\n\nconst makeMapStateToProps = (idmKind) => {\n return (state, props) => {\n const attributes = getAttributes(state);\n let {path} = attributes;\n if (!path) path = getRawPath(state);\n\n const isPrincipalACLtab =\n props.mode === 'content' && props.type === 'access_control_object';\n\n return {\n loadState: getAclLoadState(state, idmKind),\n path: path,\n idmKind: isPrincipalACLtab ? IdmObjectType.ACCESS_CONTROL_OBJECT : IdmObjectType.PATH,\n };\n };\n};\n\nfunction createACLTabComponent(idmKind) {\n const mapStateToProps = makeMapStateToProps(idmKind);\n const Component = makeComponentWithRum(idmKind);\n return connect(mapStateToProps)(Component);\n}\n\nexport default createACLTabComponent(IdmObjectType.PATH);\nexport const AccessAclTab = createACLTabComponent(IdmObjectType.ACCESS_CONTROL_OBJECT);\n","import {RumMeasureTypes} from '../../../../../rum/rum-measure-types';\nimport {RumWrapper} from '../../../../../rum/rum-wrap-api';\n\nexport function makeTableRumId({cluster, isDynamic}: {cluster: string; isDynamic: boolean}) {\n const measureId = isDynamic\n ? RumMeasureTypes.NAVIGATION_CONTENT_TABLE_DYNAMIC\n : RumMeasureTypes.NAVIGATION_CONTENT_TABLE_STATIC;\n return new RumWrapper(cluster, measureId);\n}\n","import axios from 'axios';\n\nimport map_ from 'lodash/map';\n\nimport {ThunkAction} from 'redux-thunk';\n\n// @ts-ignore\nimport unipika from '../../../../../common/thor/unipika';\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {\n SET_TABLE_COLUMNS_PRESET,\n SET_TABLE_COLUMNS_PRESET_HASH,\n} from '../../../../../constants/navigation/content/table';\nimport {showErrorPopup, wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getColumnsPreset,\n getColumnsPresetHash,\n getIsDynamic,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {RootState} from '../../../../../store/reducers';\nimport {YTApiId} from '../../../../../rum/rum-wrap-api';\nimport {makeTableRumId} from './table-rum-id';\n\nconst getColumnPresetEndpoint = (cluster: string) => `/api/table-column-preset/${cluster}`;\n\ntype ColumnPresetThunkAction = ThunkAction<any, RootState, any, any>;\n\nconst {utf8} = unipika.utils;\n\nexport function loadColumnPresetIfDefined(): ColumnPresetThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const hashToLoad = getColumnsPresetHash(state);\n if (!hashToLoad) {\n return Promise.resolve();\n }\n\n const {hash} = getColumnsPreset(state);\n if (hashToLoad === hash) {\n return Promise.resolve();\n }\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n\n return id\n .fetch(\n YTApiId.ui_loadColumnPreset,\n axios.request<{columns: Array<string>; hash: string}>({\n method: 'GET',\n url: `${getColumnPresetEndpoint(cluster)}/${hashToLoad}`,\n headers: {'content-type': 'application/json'},\n }),\n )\n .then(({data: {columns, hash}}) => {\n const presetHash = getColumnsPresetHash(getState());\n if (presetHash !== hash) {\n return;\n }\n\n dispatch(setTablePreset(columns, hash));\n })\n .catch((error) => {\n dispatch(setTablePresetError(error));\n\n new Toaster().add({\n theme: 'danger',\n name: 'loadColumnPreset',\n title: 'Failed to get preset of columns',\n content: error.message,\n actions: [\n {\n label: ' Details',\n onClick() {\n showErrorPopup(error?.response?.data || error);\n },\n },\n ],\n });\n\n return Promise.reject(error);\n });\n };\n}\n\nexport function saveColumnPreset(columnsEncoded: Array<string>, cluster: string): Promise<string> {\n const columns = map_(columnsEncoded, utf8.decode);\n return wrapApiPromiseByToaster(\n axios.request<string>({\n method: 'POST',\n url: getColumnPresetEndpoint(cluster),\n headers: {'content-type': 'application/json'},\n data: columns,\n }),\n {\n skipSuccessToast: true,\n toasterName: 'saveColumnPreset',\n errorContent: 'Failed to save preset of columns',\n },\n ).then((res) => {\n const hash = res.data;\n return hash;\n });\n}\n\nexport function setTablePresetHash(hash?: string) {\n return {\n type: SET_TABLE_COLUMNS_PRESET_HASH,\n data: hash,\n };\n}\n\nfunction setTablePreset(columns: Array<string>, hash: string) {\n const columnsEncoded = map_(columns, utf8.encode);\n return {\n type: SET_TABLE_COLUMNS_PRESET,\n data: {error: undefined, columns: columnsEncoded, hash},\n };\n}\n\nfunction setTablePresetError(error: unknown) {\n return {\n type: SET_TABLE_COLUMNS_PRESET,\n data: {error, columns: undefined, hash: undefined},\n };\n}\n","import filter_ from 'lodash/filter';\nimport has_ from 'lodash/has';\nimport isEmpty_ from 'lodash/isEmpty';\nimport keyBy_ from 'lodash/keyBy';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport metrics from '../../../../../common/utils/metrics';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {\n CHANGE_CELL_SIZE,\n CHANGE_PAGE_SIZE,\n CLOSE_COLUMN_SELECTOR_MODAL,\n GET_TABLE_DATA,\n LOAD_TYPE,\n OPEN_COLUMN_SELECTOR_MODAL,\n SET_COLUMNS,\n SET_COLUMNS_ORDER,\n SET_OFFSET,\n TOGGLE_FULL_SCREEN,\n} from '../../../../../constants/navigation/content/table';\n\nimport {updateView} from '../../../../../store/actions/navigation';\n\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport {openInNewTab, showErrorPopup} from '../../../../../utils/utils';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport Columns from '../../../../../utils/navigation/content/table/columns';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getColumnsValues,\n getParsedError,\n getRequestOutputFormat,\n parseErrorFromResponse,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\n\nimport {getAttributes, getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {\n getDefaultTableColumnLimit,\n isTableSimilarityEnabled,\n} from '../../../../../store/selectors/settings';\nimport {\n getAllColumns,\n getNextOffset,\n getRequestedPageSize,\n getVisibleColumns,\n isYqlTypesEnabled,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n getCellSize,\n getColumns,\n getColumnsPreset,\n getDeniedKeyColumns,\n getIsDynamic,\n getIsStrict,\n getKeyColumns,\n getMoveOffsetBackward,\n getOmittedColumns,\n getRows,\n getTableColumnNamesFromSchema,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {mergeScreen} from '../../../../../store/actions/global';\nimport {waitForFontFamilies} from '../../../../../store/actions/global/fonts';\nimport {injectColumnsFromSchema} from '../../../../../utils/navigation/content/table/table-ts';\nimport {YTApiId, ytApiV3, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport unipika from '../../../../../common/thor/unipika';\n\nimport {loadColumnPresetIfDefined, saveColumnPreset, setTablePresetHash} from './columns-preset';\nimport {makeTableRumId} from './table-rum-id';\nimport {readStaticTable} from './readStaticTable';\nimport {readDynamicTable} from './readDynamicTable';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\nfunction loadDynamicTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload) {\n const {login} = state.global;\n\n const path = getPath(state);\n const stringLimit = getCellSize(state);\n const keyColumns = getKeyColumns(state);\n const attributes = getAttributes(state);\n const useYqlTypes = isYqlTypesEnabled(state);\n const moveBackward = getMoveOffsetBackward(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const {offsetValue: offset, moveBackward: descending} = getNextOffset(state);\n const orderBySupported = true;\n const offsetColumns = keyColumns;\n\n let limit = getRequestedPageSize(state);\n if (isEmpty_(offset) && descending) {\n // If we move to the end of the table, we reduce the limit for correctly determining the end of the table\n limit--;\n }\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n\n if (type === LOAD_TYPE.PRELOAD) {\n // Get all columns from schema for preload data. Scheme is always strict\n const allColumns = Columns.getSchemaColumns(attributes);\n\n return id\n .fetch(\n YTApiId.dynTableCheckPerm,\n ytApiV3Id.checkPermission(YTApiId.dynTableCheckPerm, {\n parameters: {\n columns: allColumns,\n permission: 'read',\n user: login,\n path,\n },\n cancellation: requests.saveCancelToken,\n }),\n )\n .then((permissions) => {\n const keyColumnsNames = keyBy_(keyColumns);\n const {availableColumns, omittedColumns, deniedKeyColumns} = reduce_(\n permissions.columns,\n (res, permission, index) => {\n if (permission.action === 'allow') {\n res.availableColumns.push(allColumns[index]);\n } else {\n res.omittedColumns.push(allColumns[index]);\n if (has_(keyColumnsNames, allColumns[index])) {\n res.deniedKeyColumns.push({[allColumns[index]]: permission.action});\n }\n }\n\n return res;\n },\n {availableColumns: [], omittedColumns: [], deniedKeyColumns: []},\n );\n\n if (deniedKeyColumns.length !== 0) {\n return Promise.reject({deniedKeyColumns});\n }\n\n const columns = map_(availableColumns, unipika.decode);\n const parameters = {\n query: Query.prepareQuery({\n columns,\n path,\n keyColumns,\n offsetColumns,\n offset: useZeroRangeForPreload ? 0 : offset,\n limit: useZeroRangeForPreload ? 0 : limit,\n descending,\n orderBySupported,\n }),\n output_format: requestOutputFormat,\n dump_error_into_response: true,\n };\n\n return id\n .fetch(\n YTApiId.dynTableSelectRowsPreload,\n ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n }),\n )\n .then(({data}) => {\n const error = parseErrorFromResponse(data);\n\n if (error) {\n return Promise.reject(getParsedError(error));\n }\n\n const {columns, rows, yqlTypes} = prepareRows(data, moveBackward);\n\n return {\n rows,\n columns,\n yqlTypes,\n omittedColumns,\n };\n });\n });\n } else {\n // Get only visible columns for updating data. Get omittedColumns from store.\n const columns = getVisibleColumns(state);\n const omittedColumns = getOmittedColumns(state);\n const deniedKeyColumns = getDeniedKeyColumns(state);\n const decodedColumns = decodeNameField(columns);\n const outputFormat = getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n if (deniedKeyColumns.length !== 0) {\n const err = new Error('There is no \"read\" permission for some key columns:');\n err.attributes = {key_columns: deniedKeyColumns};\n return Promise.reject(err);\n }\n\n const parameters = {\n query: Query.prepareQuery({\n columns: decodedColumns,\n path,\n keyColumns,\n offsetColumns,\n offset,\n limit,\n descending,\n orderBySupported,\n }),\n output_format: outputFormat,\n dump_error_into_response: true,\n };\n\n return id\n .fetch(\n YTApiId.dynTableSelectRows,\n readDynamicTable({\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n }),\n )\n .then((data) => {\n return {\n ...data,\n omittedColumns,\n };\n });\n }\n}\n\nasync function loadStaticTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload) {\n const path = getPath(state);\n const stringLimit = getCellSize(state);\n const transaction = getTransaction(state);\n const moveBackward = getMoveOffsetBackward(state);\n const requestedPageSize = getRequestedPageSize(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n\n const {login} = state.global;\n // Get all columns always and update them then. We can get new columns. The scheme is not always strict\n const columns = getColumns(state);\n const offsetValue = getNextOffset(state).offsetValue;\n const useYqlTypes = isYqlTypesEnabled(state);\n const decodedColumns = decodeNameField(columns);\n const outputFormat =\n requestOutputFormat ||\n getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n const parameters = prepareRequest({\n path,\n table_reader: {\n workload_descriptor: {category: 'user_interactive'},\n },\n transaction,\n output_format: outputFormat,\n dump_error_into_response: true,\n omit_inaccessible_columns: true,\n relativePath: useZeroRangeForPreload\n ? '[#0:#0]'\n : '[#' + offsetValue + ':#' + (offsetValue + requestedPageSize) + ']',\n });\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n const apiId = type === LOAD_TYPE.PRELOAD ? YTApiId.tableReadPreload : YTApiId.tableRead;\n\n return await id.fetch(\n apiId,\n readStaticTable({\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n reverseRows: moveBackward,\n }),\n );\n}\n\nfunction loadTableRows(type, state, requestOutputFormat) {\n const isDynamic = getIsDynamic(state);\n const isStrict = getIsStrict(state);\n const setup = {\n transformResponse({parsedData, rawResponse}) {\n return {\n data: parsedData,\n headers: rawResponse?.headers,\n };\n },\n };\n const useZeroRangeForPreload = isStrict && type === LOAD_TYPE.PRELOAD;\n\n const loadPromise = isDynamic\n ? loadDynamicTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload)\n : loadStaticTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload);\n\n return loadPromise.then((result) => {\n const schemaColumns = getTableColumnNamesFromSchema(state);\n const {columns, omittedColumns, ...rest} = result;\n return {\n columns: injectColumnsFromSchema(columns, omittedColumns, schemaColumns),\n omittedColumns,\n ...rest,\n };\n });\n}\n\n// Make a table request with page size row range and empty column range to get the list of all columns in table\n// and restore personalized columns list.\nfunction restoreColumns(state) {\n const tableSimilarityEnabled = isTableSimilarityEnabled(state);\n const attributes = getAttributes(state);\n const stringLimit = getCellSize(state);\n\n const requestOutputFormat = {\n $value: 'web_json',\n $attributes: {\n field_weight_limit: stringLimit,\n max_selected_column_count: 50,\n max_all_column_names_count: 3000,\n column_names: [],\n },\n };\n\n return loadTableRows(LOAD_TYPE.PRELOAD, state, requestOutputFormat)\n .then(({columns, omittedColumns}) => {\n const storedColumns = tableSimilarityEnabled\n ? Columns.restoreSimilarColumns(attributes, columns)\n : Columns.restoreExactColumns(attributes);\n\n return {columns, omittedColumns, storedColumns};\n })\n .catch((data) => {\n const {deniedKeyColumns} = data;\n return {\n columns: [],\n omittedColumns: [],\n storedColumns: null,\n ...(deniedKeyColumns ? {deniedKeyColumns} : {}),\n };\n });\n}\n\nexport function updateTableData() {\n return (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const {offsetValue, moveBackward} = getNextOffset(state);\n const requestedPageSize = getRequestedPageSize(state);\n const isDynamic = getIsDynamic(state);\n\n dispatch({type: GET_TABLE_DATA.REQUEST});\n requests.removeAllRequests();\n\n return loadTableRows(LOAD_TYPE.UPDATE, state)\n .then(({columns, omittedColumns, rows, yqlTypes}) => {\n // Scheme is always strict in dynamic tables. No new columns are expected.\n if (!isDynamic) {\n // Get current columns for save visible status\n const storedColumns = getColumns(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const preparedColumns = Columns.prepareColumns(\n attributes,\n rows,\n columns,\n storedColumns,\n defaultTableColumnLimit,\n );\n const preparedOmittedColumns = Columns.prepareOmittedColumns(\n attributes,\n omittedColumns,\n );\n dispatch(setColumns(preparedColumns, preparedOmittedColumns, []));\n }\n\n if (moveBackward) {\n let newOffsetValue;\n if (!isEmpty_(offsetValue) && rows.length < requestedPageSize) {\n // If there are not enough rows on the new page on the left:\n // - add rows from the current page\n // - reset offset value\n newOffsetValue = '';\n const previousRows = getRows(state);\n const addRowCount = Math.min(\n requestedPageSize - rows.length + 1,\n previousRows.length,\n );\n rows = rows.concat(previousRows.slice(1, addRowCount));\n } else {\n const keyColumns = getKeyColumns(state);\n newOffsetValue = Query.prepareKey(getColumnsValues(rows[0], keyColumns));\n }\n\n if (newOffsetValue !== undefined) {\n dispatch({\n type: SET_OFFSET,\n data: {offsetValue: newOffsetValue},\n });\n }\n }\n\n dispatch({\n type: GET_TABLE_DATA.SUCCESS,\n data: {rows, yqlTypes},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLE_DATA.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function getTableData() {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = getAttributes(state);\n\n return dispatch(loadColumnPresetIfDefined()).then(() => {\n const updateColumns = ({\n rows,\n columns,\n omittedColumns,\n storedColumns,\n deniedKeyColumns = [],\n }) => {\n const state = getState();\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const preparedColumns = Columns.prepareColumns(\n attributes,\n rows,\n columns,\n storedColumns,\n defaultTableColumnLimit,\n );\n const preparedOmittedColumns = Columns.prepareOmittedColumns(\n attributes,\n omittedColumns,\n );\n\n // if we have columns preset -> update checked according to preset\n const preset = getColumnsPreset(state);\n if (preset?.columns) {\n preparedColumns.forEach((column) => {\n column.checked = preset?.columns?.includes(column.name);\n });\n }\n dispatch(setColumns(preparedColumns, preparedOmittedColumns, deniedKeyColumns));\n };\n\n dispatch({type: GET_TABLE_DATA.REQUEST});\n requests.removeAllRequests();\n\n // 1. call the restoreColumns function before loading table data\n // 2. Call loadTableRows function with specific requestOutputFormat and empty column_names to get all columns and return their and stored columns:\n // a) tableSimilarityEnabled === false. Finding stored columns by id and schema. If stored columns exists -- update their and return. Else return null\n // b) tableSimilarityEnabled === true. Finding stored columns by array of all columns. If stored columns exists -- update their and return. Else return null\n // 3. If at the previous step was returned an array then building columns based on stored columns and save their in the store.\n // 4. load table rows for columns in the store\n\n return dispatch(waitForFontFamilies(restoreColumns(getState())))\n .then(({columns, omittedColumns, storedColumns, ...rest}) => {\n if (columns) {\n updateColumns({\n rows: [],\n columns,\n omittedColumns,\n storedColumns,\n ...rest,\n });\n }\n return dispatch(updateTableData());\n })\n .catch((error) => {\n updateColumns({\n rows: [],\n columns: Columns.getSchemaColumns(attributes),\n omittedColumns: [],\n });\n\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLE_DATA.FAILURE,\n data: {error},\n });\n }\n });\n });\n };\n}\n\nexport function setColumns(columns, omittedColumns, deniedKeyColumns) {\n return {\n type: SET_COLUMNS,\n data: {columns, omittedColumns, deniedKeyColumns},\n };\n}\n\nexport function setColumnsOrder(columnsOrder) {\n return {\n type: SET_COLUMNS_ORDER,\n data: {columnsOrder},\n };\n}\n\nexport function openColumnSelectorModal() {\n return {\n type: OPEN_COLUMN_SELECTOR_MODAL,\n };\n}\n\nexport function closeColumnSelectorModal() {\n return {\n type: CLOSE_COLUMN_SELECTOR_MODAL,\n };\n}\n\nexport function updateColumns(allColumns) {\n return (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const omittedColumns = getOmittedColumns(state);\n const deniedKeyColumns = getDeniedKeyColumns(state);\n const columns = filter_(allColumns, (column) => !column.disabled); // remove omitted columns\n const columnsOrder = Columns.getColumnsOrder(columns);\n Columns.storeAllColumns(attributes, columns);\n\n dispatch(setColumns(columns, omittedColumns, deniedKeyColumns));\n dispatch(setColumnsOrder(columnsOrder));\n dispatch(closeColumnSelectorModal());\n\n dispatch(setTablePresetHash(undefined));\n dispatch(updateTableData());\n };\n}\n\nexport function rememberPresetColumnsAsDefault() {\n return (dispatch, getState) => {\n const allColumns = getAllColumns(getState());\n dispatch(updateColumns(allColumns));\n };\n}\n\nexport function openTableWithPresetOfColumns() {\n return (dispatch, getState) => {\n const visibleColumns = getVisibleColumns(getState());\n const cluster = getCluster(getState());\n saveColumnPreset(map_(visibleColumns, 'name'), cluster).then((hash) => {\n const {href} = window.location;\n const url = `${href}&columns=${hash}`;\n openInNewTab(url);\n\n metrics.countEvent({\n share_columns: {\n hash,\n },\n });\n });\n };\n}\n\nexport function changePageSize(pageSize) {\n return (dispatch) => {\n dispatch({\n type: CHANGE_PAGE_SIZE,\n data: {pageSize},\n });\n dispatch(updateTableData());\n };\n}\n\nexport function changeCellSize(cellSize) {\n return (dispatch) => {\n dispatch({\n type: CHANGE_CELL_SIZE,\n data: {cellSize},\n });\n dispatch(updateTableData());\n };\n}\n\nexport function toggleFullScreen() {\n return (dispatch) => {\n dispatch(mergeScreen());\n dispatch({type: TOGGLE_FULL_SCREEN});\n };\n}\n\n// if we press esc button then the browser will automatically change state to non full screen\n// and we need as change value in the store\nexport function handleScreenChanged(isFullScreen) {\n return (dispatch, getState) => {\n const {isFullScreen: storedIsFullScreen} = getState().navigation.content.table;\n\n if (isFullScreen !== storedIsFullScreen) {\n dispatch(toggleFullScreen());\n }\n };\n}\n\nexport function mountUnmountTable(action) {\n return (dispatch, getState) => {\n const path = getPath(getState());\n\n metrics.countEvent({\n navigation_dynamic_table_action: action,\n });\n\n return ytApiV3[`${action}Table`]({path})\n .then(() => {\n toaster.add({\n name: `${action} table`,\n theme: 'success',\n title: `Success ${action}ing table`,\n });\n return dispatch(updateView());\n })\n .catch((err) => {\n console.error(err);\n toaster.add({\n name: `${action} table`,\n theme: 'danger',\n title: `Could not ${action} table.`,\n content: err?.message || 'Oops, something went wrong',\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n };\n}\n\nexport function decodeNameField(columns) {\n return map_(columns, (item) => {\n return {\n ...item,\n name: unipika.decode(item.name),\n };\n });\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {ClickableText} from '../../components/ClickableText/ClickableText';\n\nimport './FilePicker.scss';\n\nconst block = cn('yt-file-picker');\n\ninterface Props {\n onChange: (v: FileList | null) => void;\n multiple?: boolean;\n children: React.ReactNode;\n}\n\nexport default class FilePicker extends React.Component<Props> {\n inputRef = React.createRef<HTMLInputElement>();\n\n onLinkClick = () => {\n if (!this.inputRef.current) {\n return;\n }\n\n this.inputRef.current.click();\n };\n\n onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onChange(event.target.files);\n };\n\n render() {\n const {children, multiple} = this.props;\n return (\n <ClickableText onClick={this.onLinkClick}>\n {children}\n <input\n ref={this.inputRef}\n className={block('input')}\n onChange={this.onChange}\n type={'file'}\n multiple={multiple}\n />\n </ClickableText>\n );\n }\n}\n","import React from 'react';\nimport {compose} from 'redux';\nimport axios, {AxiosProgressEvent} from 'axios';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport format from '../../../../../common/hammer/format';\n\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {ConnectedProps, connect} from 'react-redux';\nimport Error from '../../../../../components/Block/Block';\nimport {DialogField, YTDFDialog} from '../../../../../components/Dialog';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\n\nimport './UploadManager.scss';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport FilePicker from '../../../../../components/FilePicker/FilePicker';\nimport {getSchema} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport {RootState} from '../../../../../store/reducers';\nimport {getXsrfCookieName} from '../../../../../utils';\nimport {docsUrl, getConfigUploadTable} from '../../../../../config';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport UIFactory from '../../../../../UIFactory';\n\nconst block = cn('upload-manager');\n\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\ntype Props = PropsFromRedux & WithVisibleProps;\n\ninterface State {\n hasUpcomingFile: boolean;\n progress: ProgressState;\n error?: any;\n\n file: File | null;\n fileType: FileType;\n append: boolean;\n\n // xlsx\n firstRowAsNames: boolean;\n secondRowAsTypes: boolean;\n\n showOverwriteConfirmation: boolean;\n}\n\nconst WRITE_ATTRIBUTES = {\n json: {\n format: 'text',\n enable_type_conversion: true,\n },\n yson: {\n enable_type_conversion: true,\n },\n yamr: {},\n dsv: {\n enable_string_to_all_conversion: true,\n },\n schemaful_dsv: {\n enable_string_to_all_conversion: true,\n },\n xlsx: {},\n};\n\ntype FileType = 'json' | 'yson' | 'yamr' | 'dsv' | 'schemaful_dsv' | 'xlsx';\n\nconst getFileTypes = (payload: {cluster: string}) => {\n const fileTypes: Array<{value: FileType; text: FileType}> = [\n {value: 'json', text: 'json'},\n {value: 'yson', text: 'yson'},\n {value: 'dsv', text: 'dsv'},\n {value: 'yamr', text: 'yamr'},\n {value: 'schemaful_dsv', text: 'schemaful_dsv'},\n ];\n\n const uploadConfig = getConfigUploadTable(payload);\n\n if (uploadConfig.uploadTableExcelBaseUrl) {\n fileTypes.push({value: 'xlsx', text: 'xlsx'});\n }\n\n return fileTypes;\n};\n\ntype ProgressState =\n | {inProgress: false}\n | {inProgress: true; event: {total?: number; loaded: number}};\n\nclass UploadManager extends React.Component<Props, State> {\n state: State = {\n hasUpcomingFile: false,\n file: null,\n fileType: 'json',\n progress: {inProgress: false},\n append: true,\n firstRowAsNames: false,\n secondRowAsTypes: false,\n\n showOverwriteConfirmation: false,\n };\n\n private cancelHelper = new CancelHelper();\n\n renderContent() {\n const {hasUpcomingFile, file, error} = this.state;\n return (\n <React.Fragment>\n <div\n className={block('drag-area', {\n dropable: hasUpcomingFile,\n empty: !file,\n })}\n onDrop={this.onDrop}\n onDragEnter={this.onDragEnter}\n onDragLeave={this.onDragLeave}\n onDragOver={this.onDragOver}\n >\n {file ? (\n this.renderFileContent(file)\n ) : (\n <div>\n <div>Drag a file here</div>\n or\n <div>\n <FilePicker onChange={this.onFile}>Pick a file</FilePicker>\n </div>\n </div>\n )}\n </div>\n {error && <Error error={error} message={'The file upload has failed'} />}\n </React.Fragment>\n );\n }\n\n renderFileContent(file: File) {\n return (\n <React.Fragment>\n {this.renderSettings(file)}\n {this.renderProgress()}\n </React.Fragment>\n );\n }\n\n renderSettings(file: File) {\n const {cluster} = this.props;\n const inProgress = this.inProgress();\n\n const {fields, initials} = this.typeSpecificFields();\n return (\n <YTDFDialog\n onAdd={() => Promise.resolve()}\n onClose={() => {}}\n visible={true}\n modal={false}\n initialValues={{\n name: file.name,\n size: `${hammer.format['Bytes'](file.size)} / ${hammer.format['Number'](\n file.size,\n )} B`,\n append: this.state.append,\n fileType: this.state.fileType,\n ...initials,\n }}\n fields={[\n {\n name: 'name',\n caption: 'Name',\n type: 'plain',\n },\n {\n name: 'size',\n caption: 'Size',\n type: 'plain',\n },\n {\n name: 'append',\n caption: 'Append',\n type: 'tumbler',\n tooltip: 'Append content of the file to the end of the destination',\n extras: {\n disabled: inProgress,\n },\n onChange: (append: boolean) => {\n this.setState({append});\n },\n },\n {\n name: 'fileType',\n type: 'yt-select-single',\n caption: 'Type',\n extras: {\n items: getFileTypes({cluster}),\n hideFilter: true,\n disabled: inProgress,\n width: 'max',\n },\n onChange: (fileType: string | Array<string> | undefined) => {\n this.setState({\n fileType: (fileType as FileType) || 'json',\n });\n },\n },\n ...fields,\n ]}\n />\n );\n }\n\n typeSpecificFields() {\n const {fileType} = this.state;\n const fields: Array<DialogField> = [];\n const initials: Partial<{firstRowAsNames: boolean}> = {};\n switch (fileType) {\n case 'xlsx': {\n fields.push(\n {\n name: 'firstRowAsNames',\n type: 'tumbler',\n caption: 'Column names',\n tooltip: 'Interpret first row as column names',\n onChange: (firstRowAsNames: boolean) => {\n this.setState({firstRowAsNames});\n },\n },\n {\n name: 'secondRowAsTypes',\n type: 'tumbler',\n caption: 'Types',\n tooltip: 'There is row with types right before data-rows',\n onChange: (secondRowAsTypes: boolean) => {\n this.setState({secondRowAsTypes});\n },\n },\n );\n Object.assign(initials, {\n firstRowAsNames: this.state.firstRowAsNames,\n secondRowAsTypes: this.state.secondRowAsTypes,\n });\n break;\n }\n }\n return {fields, initials};\n }\n\n renderFooterContent() {\n const {file, fileType} = this.state;\n const inProgress = this.inProgress();\n const url =\n fileType === 'xlsx'\n ? UIFactory.docsUrls['storage:excel']\n : UIFactory.docsUrls['storage:formats'];\n const helpLink = docsUrl(<HelpLink url={url} />);\n if (!file) {\n return helpLink;\n }\n return inProgress ? (\n <React.Fragment>\n <Button onClick={this.cancelUpload}>Cancel upload</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={this.onReset}>Reset</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n );\n }\n\n onReset = () => {\n this.onFile(null);\n this.setState({error: null});\n };\n\n renderProgress() {\n const {progress} = this.state;\n const event = progress.inProgress ? progress.event : {total: 1, loaded: 0};\n const {total, loaded} = event;\n const totalStr = hammer.format['Bytes'](total);\n const loadedStr = hammer.format['Bytes'](loaded);\n return (\n progress.inProgress && (\n <div\n className={block('progress', {\n hidden: !progress.inProgress,\n })}\n >\n <div className={block('progress-wrapper')}>\n <Progress\n text={`${loadedStr} / ${totalStr}`}\n stack={[\n {\n value: (100 * loaded) / ((total ?? loaded) || 1),\n theme: 'info',\n },\n ]}\n />\n </div>\n </div>\n )\n );\n }\n\n cancelUpload = () => {\n this.cancelHelper.removeAllRequests();\n };\n\n inProgress() {\n const {progress} = this.state;\n return progress.inProgress;\n }\n\n onDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n if (!this.state.hasUpcomingFile) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n const {files} = event.dataTransfer;\n if (!files) {\n return;\n }\n\n this.onFile(files);\n };\n\n onFile = (files: FileList | null) => {\n const {cluster} = this.props;\n const file = files && files[0];\n this.setState({file, hasUpcomingFile: false});\n if (file) {\n const lastDotIndex = file.name.lastIndexOf('.');\n const extStr = file.name.substr(lastDotIndex + 1);\n const item = getFileTypes({cluster}).find(({value}) => value === extStr);\n if (item) {\n this.setState({fileType: item.value});\n }\n\n const fileError = this.checkFile(file);\n if (fileError) {\n this.setState({error: {message: fileError}});\n }\n }\n };\n\n onDragEnter = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDragLeave = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: false});\n }\n };\n\n renderConfirm = () => {\n const fileError = this.checkFile(this.state.file);\n return (\n <Button\n className={block('confirm')}\n size=\"m\"\n view=\"action\"\n title=\"Upload\"\n disabled={Boolean(fileError) || this.inProgress()}\n onClick={this.onConfirm}\n >\n Upload\n </Button>\n );\n };\n\n checkFile(file: State['file']): string | null {\n if (!file) {\n return 'file is not selected';\n }\n\n const {cluster} = this.props;\n\n const uploadConfig = getConfigUploadTable({cluster});\n\n if (file.size > uploadConfig.uploadTableMaxSize) {\n return `File size must not be greater than ${format.Bytes(\n uploadConfig.uploadTableMaxSize,\n )}`;\n }\n\n return null;\n }\n\n renderClose = (className: string) => {\n return (\n <Button\n className={block('close', className)}\n size=\"m\"\n title=\"Close\"\n disabled={this.inProgress()}\n onClick={this.handleClose}\n >\n Close\n </Button>\n );\n };\n\n getWriteAttributes() {\n const {schema} = this.props;\n const {fileType} = this.state;\n const withColumns: any = {};\n if (fileType === 'schemaful_dsv') {\n withColumns.columns = map_(schema, ({name}) => name);\n }\n return {\n ...withColumns,\n ...WRITE_ATTRIBUTES[fileType],\n };\n }\n\n onStartUpload(size: number) {\n this.setState({\n progress: {inProgress: true, event: {loaded: 0, total: size}},\n error: undefined,\n });\n }\n\n onUploadProgress = (event: AxiosProgressEvent) => {\n this.setState({progress: {inProgress: true, event}});\n };\n\n onStopUpload(error?: State['error']) {\n this.setState({progress: {inProgress: false}});\n if (!error) {\n this.props.updateView();\n this.props.handleClose();\n } else if (!axios.isCancel(error) && (!error || error.code !== 'cancelled')) {\n error = error.response?.data || error;\n this.setState({error});\n }\n }\n\n onConfirm = () => {\n const {append} = this.state;\n if (append) {\n return this.onConfirmImpl();\n }\n\n this.setOverwriteConfirmationVisible(true);\n };\n\n onConfirmImpl = () => {\n const {file, fileType, append} = this.state;\n\n if (fileType === 'xlsx') {\n this.onXlsxUpload();\n return;\n }\n if (!file) {\n return;\n }\n\n const {path, proxy, externalProxy, cluster} = this.props;\n\n const uploadConfig = getConfigUploadTable({cluster});\n\n this.onStartUpload(file.size);\n\n let transaction_id = '';\n yt.v3\n .startTransaction({\n timeout: 120000,\n })\n .then((txId: string) => {\n transaction_id = txId;\n\n return yt.v3\n .writeTable({\n setup: {\n onUploadProgress: this.onUploadProgress,\n proxy: uploadConfig.uploadTableUseLocalmode\n ? `${location.host}/localmode/api/yt/${cluster}`\n : externalProxy ?? proxy,\n },\n parameters: {\n transaction_id,\n path: {$value: path, $attributes: {append}},\n input_format: {\n $value: fileType,\n $attributes: this.getWriteAttributes(),\n },\n },\n cancellation: this.cancelHelper.removeAllAndSave,\n data: file,\n })\n .then(() => {\n return yt.v3.commitTransaction({transaction_id}).then(() => {\n this.onStopUpload();\n });\n });\n })\n .catch((e: any) => {\n this.onStopUpload(e);\n if (transaction_id) {\n yt.v3.abortTransaction({transaction_id});\n }\n });\n };\n\n onXlsxUpload() {\n const {file, fileType} = this.state;\n if (!file || fileType !== 'xlsx') {\n return Promise.resolve();\n }\n\n const {path, cluster} = this.props;\n this.onStartUpload(file.size);\n\n const uploadConfig = getConfigUploadTable({cluster});\n\n const readyUrl = `${uploadConfig.uploadTableExcelBaseUrl}/${cluster}/api/ready`;\n const uploadUrl = `${uploadConfig.uploadTableExcelBaseUrl}/${cluster}/api/upload`;\n\n this.cancelHelper.removeAllRequests();\n return axios.get(readyUrl).then(\n () => {\n const {append, firstRowAsNames, secondRowAsTypes} = this.state;\n const start_row = [firstRowAsNames, secondRowAsTypes].filter(Boolean).length + 1;\n const params = new URLSearchParams({\n path,\n append: String(append),\n header: String(firstRowAsNames),\n start_row: String(start_row),\n types: String(secondRowAsTypes),\n });\n const formData = new FormData();\n formData.append('uploadfile', file);\n return axios\n .post(`${uploadUrl}?${params}`, formData, {\n onUploadProgress: this.onUploadProgress,\n withCredentials: true,\n withXSRFToken: true,\n xsrfCookieName: getXsrfCookieName(cluster),\n xsrfHeaderName: 'X-Csrf-Token',\n cancelToken: this.cancelHelper.generateNextToken(),\n })\n .then(\n () => {\n this.onStopUpload();\n },\n (e) => {\n this.onStopUpload(e);\n },\n );\n },\n (e) => {\n this.onStopUpload({\n message: `${readyUrl} responded with error`,\n inner_errors: [e],\n });\n },\n );\n }\n\n handleClose = () => {\n if (this.inProgress()) {\n return;\n }\n this.props.handleClose();\n };\n\n setOverwriteConfirmationVisible(showOverwriteConfirmation: boolean) {\n this.setState({showOverwriteConfirmation});\n }\n\n renderOverwriteConfirmationDialog() {\n const {showOverwriteConfirmation} = this.state;\n return !showOverwriteConfirmation ? null : (\n <Modal\n size={'s'}\n title={'Overwrite confirmation'}\n visible={true}\n confirmText={'Overwrite'}\n content={\n <div>\n Are you sure you want to overwrite all existing data rows with the ones from\n the uploading file?\n </div>\n }\n onConfirm={() => {\n this.setOverwriteConfirmationVisible(false);\n this.onConfirmImpl();\n }}\n onCancel={() => {\n this.setOverwriteConfirmationVisible(false);\n }}\n />\n );\n }\n\n render() {\n const {visible, handleShow} = this.props;\n return (\n <React.Fragment>\n <Button size=\"m\" title=\"Upload\" onClick={handleShow}>\n <Icon awesome=\"upload\" />\n Upload\n </Button>\n\n {visible && (\n <Modal\n size=\"m\"\n title=\"Upload\"\n visible={visible}\n onCancel={this.handleClose}\n confirmText=\"Upload\"\n content={this.renderContent()}\n footerContent={this.renderFooterContent()}\n renderCustomConfirm={this.renderConfirm}\n renderCustomCancel={this.renderClose}\n contentClassName={block()}\n />\n )}\n\n {this.renderOverwriteConfirmationDialog()}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const path: string = getPath(state);\n const schema = getSchema(state);\n const {proxy, externalProxy} = getCurrentClusterConfig(state);\n\n return {\n path,\n schema,\n cluster: getCluster(state),\n proxy,\n externalProxy,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(withVisible, connector)(UploadManager);\n","import {\n TabletStateAction,\n TabletStateType,\n} from '../../../../store/reducers/navigation/modals/dyn-tables-state-modal';\n\nexport const DYN_TABLES_ALLOWED_STATES_OF_ACTION: Record<\n TabletStateAction,\n Partial<Record<TabletStateType, boolean>>\n> = {\n mount: {\n unmounted: true,\n },\n unmount: {\n mounted: true,\n frozen: true,\n },\n freeze: {\n mounted: true,\n },\n unfreeze: {\n frozen: true,\n },\n};\n\nexport const DYN_TABLES_ALLOWED_ACTIONS_BY_STATE: Record<\n TabletStateType,\n Partial<Record<TabletStateAction, boolean>>\n> = {\n mounted: {\n freeze: true,\n unmount: true,\n },\n unmounted: {\n mount: true,\n },\n frozen: {\n unmount: true,\n unfreeze: true,\n },\n mixed: {\n mount: true,\n unmount: true,\n freeze: true,\n unfreeze: true,\n },\n};\n","import capitalize_ from 'lodash/capitalize';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {\n DynTablesStateModalAction,\n DynTablesStateModalState,\n TabletStateAction,\n TabletStateType,\n} from '../../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {RootState} from '../../../../store/reducers';\nimport {DYN_TABLES_STATE_MODAL_PARTIAL} from '../../../../constants/navigation/modals/dyn-tables-state-modal';\nimport {delayed, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {updateView} from '../index';\nimport {DYN_TABLES_ALLOWED_STATES_OF_ACTION} from '../../../selectors/navigation/content/map-node-ts';\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {BatchResultsItem} from '../../../../../shared/yt-types';\n\ntype DynTablesStateThunkAction = ThunkAction<any, RootState, any, DynTablesStateModalAction>;\n\nexport function showDynTablesStateModalByPaths(\n paths: Array<string>,\n action: Required<DynTablesStateModalState>['action'],\n): DynTablesStateModalAction {\n return {\n type: DYN_TABLES_STATE_MODAL_PARTIAL,\n data: {paths, action, showModal: true},\n };\n}\n\nexport function showDynTablesStateModalByNodes(\n action: Required<DynTablesStateModalState>['action'],\n selectedNodes: Array<{path: string; tabletState: TabletStateType}>,\n): DynTablesStateThunkAction {\n return (dispatch) => {\n const allowedFrom = DYN_TABLES_ALLOWED_STATES_OF_ACTION[action];\n const paths = reduce_(\n selectedNodes,\n (acc, {path, tabletState}) => {\n if (tabletState && allowedFrom[tabletState]) {\n acc.push(path);\n }\n return acc;\n },\n [] as Array<string>,\n );\n\n dispatch({\n type: DYN_TABLES_STATE_MODAL_PARTIAL,\n data: {paths, action, showModal: true},\n });\n };\n}\n\nexport function hideDynTablesStateModal() {\n return {\n type: DYN_TABLES_STATE_MODAL_PARTIAL,\n data: {paths: [], action: undefined, showModal: false},\n };\n}\n\nexport function dynTablesChangeState(\n paths: Array<string>,\n action: TabletStateAction,\n): DynTablesStateThunkAction {\n return (dispatch) => {\n const requests = map_(paths, (path) => {\n return {\n command: `${action}_table` as const,\n parameters: {path},\n };\n });\n\n return wrapApiPromiseByToaster(\n executeBatchWithRetries(YTApiId.navigationDynTableState, requests, {\n errorTitle: 'Failed to change dynamic table(s) state',\n }),\n {\n toasterName: 'dyn_tables_change_state_to_' + action,\n successContent: '',\n batchType: 'v3',\n skipSuccessToast: true,\n errorTitle: `Cannot perform ${action} action`,\n },\n )\n .then(() => {\n return wrapApiPromiseByToaster(waitWhileThereIsTransient(paths, action), {\n toasterName: 'dyn_tables_wait_while_transient_' + action,\n successContent: `${capitalize_(action)} completed`,\n batchType: 'v3',\n errorTitle: `Cannot perform ${action} action`,\n });\n })\n .then(() => {\n dispatch(updateView());\n });\n };\n}\n\nfunction waitWhileThereIsTransient(\n paths: Array<string>,\n action: TabletStateAction,\n): Promise<Array<BatchResultsItem<string>>> {\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {path: `${path}/@tablet_state`},\n };\n });\n\n const res = delayed(\n () =>\n executeBatchWithRetries<string>(YTApiId.navigationGetTabletState, requests, {\n errorTitle: 'Failed to get tablet state',\n }),\n 3000,\n );\n\n return wrapApiPromiseByToaster(res, {\n toasterName: 'dyn_tables_wait_while_transient_' + action,\n successContent: `${capitalize_(action)} completed`,\n skipSuccessToast: true,\n batchType: 'v3',\n errorTitle: `Cannot perform ${action} action`,\n }).then((results) => {\n const toRecheck = reduce_(\n results,\n (acc, {output}, index) => {\n if (output === 'transient') {\n acc.push(paths[index]);\n }\n return acc;\n },\n [] as typeof paths,\n );\n\n if (toRecheck.length) {\n return waitWhileThereIsTransient(toRecheck, action);\n }\n return Promise.resolve([]);\n });\n}\n","import React, {Fragment} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../../common/hammer';\nimport {compose} from 'redux';\n\nimport DownloadManager from '../../../../../pages/navigation/content/Table/DownloadManager/DownloadManager';\nimport Button from '../../../../../components/Button/Button';\n\nimport {mountUnmountTable} from '../../../../../store/actions/navigation/content/table/table';\nimport {getAttributes, getPath} from '../../../../../store/selectors/navigation';\nimport withVisible from '../../../../../hocs/withVisible';\nimport UploadManager from '../UploadManager/UploadManager';\nimport {showDynTablesStateModalByPaths} from '../../../../../store/actions/navigation/modals/dyn-tables-state-modal';\n\nconst propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from withVisible\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n\n // from connect\n isDynamic: PropTypes.bool.isRequired,\n tabletState: PropTypes.string,\n\n mountUnmountTable: PropTypes.func.isRequired,\n};\n\nDynamicActions.propTypes = propTypes;\nfunction DynamicActions(props) {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n\n const {tabletState} = props;\n const action = tabletState !== 'mounted' ? 'mount' : 'unmount';\n const onClick = React.useCallback(() => {\n dispatch(showDynTablesStateModalByPaths([path], action));\n }, [action, path]);\n\n return (\n <Fragment>\n <Button size=\"m\" onClick={onClick}>\n {hammer.format['Readable'](action)}\n </Button>\n </Fragment>\n );\n}\n\nStaticActions.propTypes = propTypes;\nfunction StaticActions(props) {\n const {block} = props;\n\n return (\n <Fragment>\n <DownloadManager className={block('download-manager')} />\n <UploadManager />\n </Fragment>\n );\n}\n\nTableActions.propTypes = propTypes;\nfunction TableActions(props) {\n const {block, isDynamic} = props;\n\n return (\n <div className={block('actions')}>\n {isDynamic ? <DynamicActions {...props} /> : <StaticActions {...props} />}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isDynamic} = state.navigation.content.table;\n const attributes = getAttributes(state);\n\n const tabletState = ypath.getValue(attributes, '/tablet_state');\n\n return {isDynamic, tabletState};\n};\n\nexport default compose(connect(mapStateToProps, {mountUnmountTable}), withVisible)(TableActions);\n","import React, {useMemo} from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect, useSelector} from 'react-redux';\n\nimport {makeMetaItems} from '../../../../../components/MetaTable/presets/presets';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport {getTableType} from '../../../../../store/selectors/navigation/content/table';\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getAttributes} from '../../../../../store/selectors/navigation';\nimport {getTabletErrorsBackgroundCount} from '../../../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\n\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport './TableMeta.scss';\nimport {RootState} from '../../../../../store/reducers';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../../constants/global';\n\nconst block = cn('navigation-meta-table');\n\ninterface Props {\n attributes: any;\n mediumList: string[];\n isDynamic: boolean;\n tableType: string;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}\n\nfunction TableMeta({\n attributes,\n tableType,\n mediumList,\n isDynamic,\n onEditEnableReplicatedTableTracker,\n}: Props) {\n const tabletErrorCount = useSelector(getTabletErrorsBackgroundCount);\n const cluster = useSelector(getCluster);\n\n const items = useMemo(() => {\n return makeMetaItems({\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n });\n }, [\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n ]);\n\n return (\n <CollapsibleSection name=\"Metadata\" size={UI_COLLAPSIBLE_SIZE}>\n <MetaTable className={block()} items={items} />\n </CollapsibleSection>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {mediumList} = state.global;\n\n const isDynamic = getIsDynamic(state);\n const tableType = getTableType(state);\n const attributes = getAttributes(state);\n\n return {\n attributes,\n mediumList,\n isDynamic,\n tableType,\n };\n};\n\nexport default connect(mapStateToProps)(TableMeta);\n","import React from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {YTError} from '../../../../types';\nimport Error from '../../../../components/Error/Error';\n\nimport './ReplicatedTableSettings.scss';\nconst block = cn('replicated-table-settings');\n\ninterface Props {\n replica_cluster: string;\n replica_path: string;\n state: 'enabled' | 'disabled';\n mode: 'sync' | 'async';\n auto_replica_tracker: 'enabled' | 'disabled';\n\n onApply: (modeState: Pick<Props, 'mode' | 'state' | 'auto_replica_tracker'>) => Promise<void>;\n}\n\nexport function ReplicatedTableSettingsButton(props: Props) {\n const [visible, setVisible] = React.useState(false);\n\n const toggleVisibility = React.useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n return (\n <React.Fragment>\n <Button onClick={toggleVisibility} view={'flat-secondary'} size={'s'}>\n <Icon awesome={'pencil-alt'} />\n </Button>\n <ReplicatedTableSettingsDialog\n {...props}\n onClose={toggleVisibility}\n visible={visible}\n />\n </React.Fragment>\n );\n}\n\ninterface SettingsProps {\n visible: boolean;\n onClose: () => void;\n}\n\ninterface FormValues {\n cluster: string;\n path: string;\n state: 'enabled' | 'disabled';\n mode: 'async' | 'sync';\n auto_replica_tracker: 'enabled' | 'disabled';\n}\n\nfunction ReplicatedTableSettingsDialog(props: Props & SettingsProps) {\n const [error, setError] = React.useState<YTError | null>(null);\n const handleApply = React.useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n const {\n values: {mode, state, auto_replica_tracker},\n } = form.getState();\n return props.onApply({mode, state, auto_replica_tracker}).catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n },\n [props.mode, props.state, props.onApply, setError],\n );\n return (\n <YTDFDialog<FormValues>\n visible={props.visible}\n onAdd={handleApply}\n onClose={props.onClose}\n headerProps={{\n title: 'Replica settings',\n }}\n initialValues={{\n cluster: capitalize_(props.replica_cluster),\n path: props.replica_path,\n state: props.state,\n mode: props.mode,\n auto_replica_tracker: props.auto_replica_tracker,\n }}\n fields={[\n {\n type: 'plain',\n name: 'cluster',\n caption: 'Replica cluster',\n },\n {\n type: 'plain',\n name: 'path',\n caption: 'Replica path',\n },\n {\n type: 'radio',\n name: 'state',\n caption: 'State',\n extras: {\n size: 's',\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n {\n type: 'radio',\n name: 'mode',\n caption: 'Mode',\n extras: {\n size: 's',\n options: [\n {value: 'async', label: 'Async'},\n {value: 'sync', label: 'Sync'},\n ],\n },\n },\n {\n type: 'radio',\n name: 'auto_replica_tracker',\n caption: 'Automatic mode switch',\n extras: {\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n ...(!error\n ? []\n : [\n {\n type: 'block' as const,\n name: 'error',\n extras: {\n children: (\n <div className={block('error')}>\n <Error error={error} />\n </div>\n ),\n },\n },\n ]),\n ]}\n />\n );\n}\n","import reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\n\nimport {createSelector} from 'reselect';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getNavigationReplicatedTableLoadingStatus = createSelector(\n [\n (store: RootState) => store.navigation.content.replicatedTable.loading,\n (store: RootState) => store.navigation.content.replicatedTable.loaded,\n (store: RootState) => store.navigation.content.replicatedTable.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getReplicatedTableReplicas = (state: RootState) =>\n state.navigation.content.replicatedTable.replicas;\n\nexport const getReplicatedTableData = (state: RootState) =>\n state.navigation.content.replicatedTable;\n\nexport const getAllowEnableReplicatedTracker = createSelector(\n [getReplicatedTableReplicas],\n (replicas) => {\n return some_(replicas, (item) => {\n return Boolean(ypath.getValue(item, '/@replicated_table_tracker_enabled'));\n });\n },\n);\n\nexport const getReplicatedTableReplicasMap = createSelector(\n [getReplicatedTableReplicas],\n (replicas) => {\n return reduce_(\n replicas,\n (acc, {$value, $attributes}) => {\n acc[$value] = {\n error_count: ypath.getNumberDeprecated($attributes, '/error_count'),\n cluster_name: ypath.getValue($attributes, '/cluster_name'),\n mode: ypath.getValue($attributes, '/mode'),\n replica_path: ypath.getValue($attributes, '/replica_path'),\n replicated_table_tracker_enabled: ypath.getBoolean(\n $attributes,\n '/replicated_table_tracker_enabled',\n ),\n replication_lag_time: ypath.getNumberDeprecated(\n $attributes,\n '/replication_lag_time',\n ),\n state: ypath.getValue($attributes, '/state'),\n };\n return acc;\n },\n {} as Record<\n string,\n | {\n error_count: number;\n cluster_name: string;\n mode: string;\n replica_path: string;\n replicated_table_tracker_enabled: boolean;\n replication_lag_time: number;\n state: string;\n }\n | undefined\n >,\n );\n },\n);\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport TableActions from '../../../../pages/navigation/content/Table/TableOverview/TableActions';\nimport TableMeta from '../../../../pages/navigation/content/Table/TableMeta/TableMeta';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport StatusBulb from '../../../../components/StatusBulb/StatusBulb';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\n\nimport {\n abortAndReset,\n loadReplicas,\n performReplicaAction,\n updateEnableReplicatedTableTracker,\n} from '../../../../store/actions/navigation/content/replicated-table';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {HEADER_HEIGHT, Page} from '../../../../constants/index';\n\nimport {ReplicatedTableSettingsButton} from './ReplicatedTableSettings';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport {\n getAllowEnableReplicatedTracker,\n getNavigationReplicatedTableLoadingStatus,\n getReplicatedTableData,\n} from '../../../../store/selectors/navigation/content/replicated-table';\n\nimport './ReplicatedTable.scss';\nimport {CypressNodeTypes} from '../../../../utils/cypress-attributes';\n\nconst block = cn('navigation-replicated-table');\n\nconst tableSets = {\n default: {\n items: [\n 'name',\n 'cluster',\n 'mode',\n 'error_count',\n 'replication_lag_time',\n 'state',\n 'actions',\n ],\n },\n 'with-auto-switch': {\n items: [\n 'name',\n 'cluster',\n 'mode',\n 'error_count',\n 'replication_lag_time',\n 'automatic_mode_switch',\n 'state',\n 'actions',\n ],\n },\n};\n\nclass ReplicatedTable extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object,\n\n path: PropTypes.string.isRequired,\n replicas: PropTypes.array.isRequired,\n attributes: PropTypes.object.isRequired,\n\n loadReplicas: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n performReplicaAction: PropTypes.func.isRequired,\n type: PropTypes.string.isRequired,\n };\n\n static tableItems = {\n name: {\n align: 'left',\n caption: 'Id / Path',\n sort: false,\n },\n cluster: {\n align: 'left',\n sort: false,\n get(replica) {\n return ypath.getValue(replica, '/@cluster_name');\n },\n },\n mode: {\n align: 'left',\n sort: false,\n get(replica) {\n return ypath.getValue(replica, '/@mode');\n },\n },\n error_count: {\n align: 'center',\n caption: 'Error count',\n get(replica) {\n return ypath.getValue(replica, '/@error_count');\n },\n },\n errors: {\n align: 'left',\n get(replica) {\n return ypath.getValue(replica, '/@errors');\n },\n },\n replication_lag_time: {\n align: 'right',\n get(replica) {\n return ypath.getValue(replica, '/@replication_lag_time');\n },\n },\n state: {\n align: 'center',\n get(replica) {\n return ypath.getValue(replica, '/@state');\n },\n },\n automatic_mode_switch: {\n align: 'center',\n caption: 'Replicated table tracker',\n get(replica) {\n const flag = ypath.getValue(replica, '/@replicated_table_tracker_enabled');\n return flag === 'true' || flag === true;\n },\n },\n actions: {\n align: 'center',\n caption: '',\n },\n };\n\n static renderField(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return !value ? hammer.format.NO_VALUE : value;\n }\n\n static renderAsReadableField(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return hammer.format['ReadableField'](value);\n }\n\n static renderAsTimeDuration(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return hammer.format['TimeDuration'](Number(value));\n }\n\n static renderName(replica) {\n const value = ypath.getValue(replica, '');\n const attributes = ypath.getValue(replica, '/@');\n const [path, cluster] = ypath.getValues(attributes, ['/replica_path', '/cluster_name']);\n const copy = {\n pathTitle: 'Copy replica path',\n idTitle: 'Copy replica id',\n };\n\n const replicaLink = <Link url={`/${cluster}/${Page.NAVIGATION}?path=${path}`}>{path}</Link>;\n\n return (\n <div>\n <span className=\"elements-ellipsis elements-monospace\">\n <ClipboardButton\n text={value}\n view=\"flat-secondary\"\n size=\"s\"\n title={copy.idTitle}\n />\n {value}\n </span>\n <br />\n <span className=\"elements-ellipsis elements-secondary-text\">\n <ClipboardButton\n text={path}\n view=\"flat-secondary\"\n size=\"s\"\n title={copy.pathTitle}\n />{' '}\n Path {replicaLink}\n </span>\n </div>\n );\n }\n\n static renderErrors() {\n return hammer.format.NO_VALUE; // No more supported by server\n }\n\n static renderState(item, columnName) {\n const state = ReplicatedTable.tableItems[columnName].get(item);\n\n return <StatusBulb theme={state} />;\n }\n\n static renderAutomaticModeSwitch(enableTableTracker, item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n const theme = !enableTableTracker ? 'unknown' : value ? 'enabled' : 'disabled';\n const title = value ? 'Enabled' : 'Disabled';\n return (\n <Tooltip content={enableTableTracker ? title : 'Disabled by table settings'}>\n <StatusBulb theme={theme} className={block('auto-switch', {})} />\n {!enableTableTracker && (\n <Icon\n color=\"secondary\"\n awesome=\"question-circle\"\n className={block('info-icon')}\n />\n )}\n </Tooltip>\n );\n }\n\n componentDidMount() {\n this.props.loadReplicas();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.path !== this.props.path) {\n this.props.loadReplicas();\n }\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n get tableSettings() {\n const {loading, loaded, tableMode, enable_replicated_table_tracker} = this.props;\n\n return {\n css: block(),\n theme: 'light',\n size: 's',\n striped: false,\n itemHeight: 65,\n isLoading: loading && !loaded,\n columns: {\n items: ReplicatedTable.tableItems,\n sets: tableSets,\n mode: tableMode,\n },\n templates: {\n name: ReplicatedTable.renderName,\n cluster: ReplicatedTable.renderField,\n mode: ReplicatedTable.renderField,\n errors: ReplicatedTable.renderErrors,\n error_count: ReplicatedTable.renderAsReadableField,\n state: ReplicatedTable.renderState,\n automatic_mode_switch: ReplicatedTable.renderAutomaticModeSwitch.bind(\n null,\n enable_replicated_table_tracker,\n ),\n replication_lag_time: ReplicatedTable.renderAsTimeDuration,\n actions: this.renderActions,\n },\n computeKey(item) {\n return item.$value;\n },\n };\n }\n\n renderActions = (replica) => {\n const {attributes, performReplicaAction} = this.props;\n const replicaValue = ypath.getValue(replica, '');\n const replicaAttributes = ypath.getValue(replica, '/@');\n\n const isAsync = replicaAttributes.mode === 'async';\n const atomicity = attributes?.atomicity;\n const replicaData = {\n caption: replicaValue,\n attributes:\n isAsync && atomicity ? {...replicaAttributes, atomicity} : replicaAttributes,\n };\n\n const onApply = (modeState) => {\n return performReplicaAction({...modeState, replica});\n };\n\n const replicatedTableTracker = ypath.getValue(\n replica,\n '/@replicated_table_tracker_enabled',\n );\n\n return (\n <span>\n <ClickableAttributesButton\n title={replicaData.caption}\n attributes={replicaData.attributes}\n withTooltip\n />\n <ReplicatedTableSettingsButton\n replica_cluster={ypath.getValue(replica, '/@cluster_name')}\n replica_path={ypath.getValue(replica, '/@replica_path')}\n state={ypath.getValue(replica, '/@state')}\n mode={ypath.getValue(replica, '/@mode')}\n auto_replica_tracker={\n replicatedTableTracker === 'true' || replicatedTableTracker === true\n ? 'enabled'\n : 'disabled'\n }\n onApply={onApply}\n />\n </span>\n );\n };\n\n updateEnableReplicatedTableTracker = (value) => {\n const {updateEnableReplicatedTableTracker, path} = this.props;\n return updateEnableReplicatedTableTracker(path, value);\n };\n\n render() {\n const {replicas, type} = this.props;\n const hasActions = type !== CypressNodeTypes.CHAOS_REPLICATED_TABLE;\n\n return (\n <LoadDataHandler {...this.props}>\n <div className={block()}>\n <TableMeta\n onEditEnableReplicatedTableTracker={this.updateEnableReplicatedTableTracker}\n />\n\n <StickyContainer>\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n })}\n >\n {hasActions && <TableActions block={block} />}\n </div>\n )}\n </Sticky>\n </StickyContainer>\n\n <ElementsTable {...this.tableSettings} items={replicas} />\n </div>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, replicas} = getReplicatedTableData(state);\n const allowEnableReplicatedTracker = getAllowEnableReplicatedTracker(state);\n const path = getPath(state);\n const attributes = getAttributes(state);\n\n const [enable_replicated_table_tracker, type] = ypath.getValues(attributes, [\n '/replicated_table_options/enable_replicated_table_tracker',\n '/type',\n ]);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n replicas,\n attributes,\n tableMode: allowEnableReplicatedTracker ? 'with-auto-switch' : 'default',\n enable_replicated_table_tracker,\n type,\n };\n};\n\nconst mapDispatchToProps = {\n loadReplicas,\n abortAndReset,\n performReplicaAction,\n updateEnableReplicatedTableTracker,\n};\n\nconst ReplicatedTableConnected = connect(mapStateToProps, mapDispatchToProps)(ReplicatedTable);\n\nexport default function ReplicatedTableWithRum() {\n const loadState = useSelector(getNavigationReplicatedTableLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_REPLICATED_TABLE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_REPLICATED_TABLE,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <ReplicatedTableConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {updateEnableReplicatedTableTracker} from '../../../../store/actions/navigation/content/replicated-table';\n\nimport './ReplicatedTable.scss';\nimport TableMeta from '../Table/TableMeta/TableMeta';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nconst block = cn('navigation-replicated-table');\n\nexport default function ReplicatedTableMeta() {\n const path = useSelector(getPath);\n const dispatch = useDispatch();\n\n const onEdit = (value?: boolean) => {\n return dispatch(\n updateEnableReplicatedTableTracker(path, value),\n ) as unknown as Promise<void>;\n };\n\n return (\n <div className={block()}>\n <TableMeta onEditEnableReplicatedTableTracker={onEdit} />\n </div>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport PropTypes from 'prop-types';\nimport {connect, useSelector} from 'react-redux';\n\nimport {main} from '../../../../components/MetaTable/presets';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\n\nimport {getAttributesWithTypes, getLoadState} from '../../../../store/selectors/navigation';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nconst block = cn('navigation-link');\n\nfunction Link({attributes}) {\n const [targetPath, broken] = ypath.getValues(attributes, ['/target_path', '/broken']);\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n main(attributes),\n [\n {key: 'target_path', value: targetPath},\n {key: 'broken', value: broken},\n ],\n ]}\n />\n </div>\n );\n}\n\nLink.propTypes = {\n // from connect\n attributes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const attributes = getAttributesWithTypes(state);\n\n return {attributes};\n};\n\nconst LinkConnected = connect(mapStateToProps)(Link);\n\nexport default function LinkWithRum() {\n const loadState = useSelector(getLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_LINK,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_LINK,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <LinkConnected />;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {createSelector} from 'reselect';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getCurrentClusterConfig} from '../../../../store/selectors/global';\nimport {MAX_FILE_SIZE} from '../../../../constants/navigation/content/file';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\nimport {makeDirectDownloadPath} from '../../../../utils/navigation';\n\nexport const getDownloadPath = createSelector(\n [getPath, getCurrentClusterConfig],\n (cypressPath, {id: cluster, proxy, externalProxy}) => {\n const path = makeDirectDownloadPath('read_file', {cluster, proxy, externalProxy});\n const query = [\n 'path=' + encodeURIComponent(cypressPath),\n 'disposition=attachment',\n 'dump_error_into_response=true',\n ].join('&');\n\n return path + '?' + query;\n },\n);\n\nexport const getIsEmpty = createSelector(getAttributes, (attributes) => {\n return ypath.getValue(attributes, '/resource_usage/disk_space') === 0;\n});\n\nexport const getIsTooBig = createSelector(getAttributes, (attributes) => {\n return ypath.getValue(attributes, '/uncompressed_data_size') > MAX_FILE_SIZE;\n});\n\nexport const getNavigationFileLoadingStatus = createSelector(\n [\n (store) => store.navigation.content.file.loading,\n (store) => store.navigation.content.file.loaded,\n (store) => store.navigation.content.file.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {LOAD_FILE, MAX_FILE_SIZE} from '../../../../constants/navigation/content/file';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function loadFile() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_FILE.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3\n .readFile({\n parameters: prepareRequest({path, transaction, length: MAX_FILE_SIZE}),\n cancellation: requests.saveCancelToken,\n })\n .then((file) => {\n dispatch({\n type: LOAD_FILE.SUCCESS,\n data: {file},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_FILE.CANCELLED});\n } else {\n dispatch({\n type: LOAD_FILE.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_FILE.CANCELLED});\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getCluster} from '../../store/selectors/global';\nimport {getPath, getType} from '../../store/selectors/navigation';\nimport {getNavigationPathAttributes} from '../../store/selectors/navigation/navigation';\nimport UIFactory from '../../UIFactory';\n\nfunction NavigationExtraActions({className}: {className?: string}) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n const type = useSelector(getType);\n const attributes = useSelector(getNavigationPathAttributes);\n\n return (\n <>\n {UIFactory.renderNavigationExtraActions({\n className,\n path,\n cluster,\n type,\n attributes,\n })}\n </>\n );\n}\n\nexport default React.memo(NavigationExtraActions);\n","import React, {Fragment, useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {\n compression,\n erasureReplication,\n main,\n size,\n} from '../../../../components/MetaTable/presets';\nimport {Button, Loader} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n getDownloadPath,\n getIsEmpty,\n getIsTooBig,\n getNavigationFileLoadingStatus,\n} from '../../../../store/selectors/navigation/content/file';\nimport {abortAndReset, loadFile} from '../../../../store/actions/navigation/content/file';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './File.scss';\nimport NavigationExtraActions from '../../../../containers/NavigationExtraActions/NavigationExtraActions';\n\nconst block = cn('navigation-file');\nconst messageBlock = cn('elements-message');\nconst codeBlock = cn('elements-code');\n\nconst renderMeta = (attributes, mediumList) => {\n return (\n <MetaTable\n items={[\n main(attributes),\n size(attributes, mediumList),\n [...compression(attributes), ...erasureReplication(attributes)],\n ]}\n />\n );\n};\n\nconst renderActions = (downloadPath) => {\n return (\n <div className={block('actions')}>\n <Button className={block('download')} href={downloadPath} target=\"_blank\">\n Download\n </Button>\n <NavigationExtraActions />\n </div>\n );\n};\n\nconst renderEmptyWarning = () => {\n return (\n <div className={messageBlock({theme: 'warning'})}>\n <p className={messageBlock('paragraph')}>File is empty.</p>\n </div>\n );\n};\n\nconst renderTooBigInfo = (downloadPath) => {\n return (\n <div className={messageBlock({theme: 'info'})}>\n <p className={messageBlock('paragraph')}>\n The file is too big to be fully shown here. You can{' '}\n <Link url={downloadPath} target=\"_blank\">\n download\n </Link>{' '}\n it.\n </p>\n </div>\n );\n};\n\nconst renderContent = (file, isTooBig, downloadPath) => {\n return (\n <Fragment>\n <pre className={codeBlock({theme: 'default'})}>{file}</pre>\n\n {isTooBig && renderTooBigInfo(downloadPath)}\n </Fragment>\n );\n};\n\nfunction File(props) {\n const {path, mode, loadFile, abortAndReset} = props;\n useEffect(() => {\n loadFile();\n return abortAndReset;\n }, [path, mode]);\n\n const {loading, loaded, attributes, mediumList, downloadPath, isEmpty, isTooBig, file} = props;\n const initialLoading = loading && !loaded;\n return (\n <LoadDataHandler {...props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <Fragment>\n {renderMeta(attributes, mediumList)}\n {renderActions(downloadPath)}\n {isEmpty\n ? renderEmptyWarning()\n : renderContent(file, isTooBig, downloadPath)}\n </Fragment>\n )}\n </div>\n </LoadDataHandler>\n );\n}\n\nFile.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n file: PropTypes.string,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n isEmpty: PropTypes.bool.isRequired,\n isTooBig: PropTypes.bool.isRequired,\n attributes: PropTypes.object.isRequired,\n downloadPath: PropTypes.string.isRequired,\n mediumList: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n\n loadFile: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, file} = state.navigation.content.file;\n const {mediumList} = state.global;\n\n const downloadPath = getDownloadPath(state);\n const attributes = getAttributes(state);\n const isTooBig = getIsTooBig(state);\n const isEmpty = getIsEmpty(state);\n const path = getPath(state);\n const mode = getEffectiveMode(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n mediumList,\n attributes,\n path,\n mode,\n isEmpty,\n isTooBig,\n downloadPath,\n file,\n };\n};\nconst mapDispatchToProps = {\n loadFile,\n abortAndReset,\n};\n\nconst FileConnected = connect(mapStateToProps, mapDispatchToProps)(File);\n\nexport default function FileWithRum() {\n const loadState = useSelector(getNavigationFileLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_FILE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_FILE,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <FileConnected />;\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport DataTable from '@gravity-ui/react-data-table';\nimport {Loader} from '@gravity-ui/uikit';\nimport {getSettingTableDisplayRawStrings} from '../../../../../store/selectors/settings';\nimport {getSchemaByName} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {showCellPreviewModal} from '../../../../../store/actions/navigation/modals/cell-preview';\nimport {prepareColumns} from '../../../../../utils/navigation/prepareColumns';\n\nimport './DataTableWrapper.scss';\n\nconst block = cn('data-table-wrapper');\n\nconst rowKey = (row, index) => index;\n\nDataTableWrapper.propTypes = {\n isFullScreen: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n columns: PropTypes.array.isRequired,\n keyColumns: PropTypes.arrayOf(PropTypes.string),\n ysonSettings: PropTypes.object,\n yqlTypes: PropTypes.array,\n};\n\nexport default function DataTableWrapper(props) {\n const dispatch = useDispatch();\n const useRawStrings = useSelector(getSettingTableDisplayRawStrings);\n const schemaByName = useSelector(getSchemaByName);\n\n const {columns, keyColumns, ysonSettings, yqlTypes, loading, loaded, isFullScreen, ...rest} =\n props;\n\n const onShowPreview = React.useCallback(\n (columnName, rowIndex, tag) => {\n dispatch(showCellPreviewModal(columnName, rowIndex, tag));\n },\n [dispatch],\n );\n const dtColumns = prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n });\n const initialLoading = loading && !loaded;\n const updating = loading && loaded;\n\n React.useEffect(() => {\n if (!loading && loaded && rest.data.length > 0) {\n setTimeout(\n () =>\n requestAnimationFrame(() => {\n window.dispatchEvent(new Event('resize'));\n }),\n 300,\n );\n }\n }, [loading, loaded, rest.data.length]);\n\n return (\n <div\n className={block({\n fullscreen: isFullScreen,\n loading: initialLoading,\n updating,\n })}\n >\n {updating && (\n <div className={block('updating-loader')}>\n <Loader />\n </div>\n )}\n {initialLoading ? (\n <Loader />\n ) : (\n <DataTable theme=\"yt-internal\" columns={dtColumns} rowKey={rowKey} {...rest} />\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport Button, {ButtonProps} from '../../../../../components/Button/Button';\nimport {\n openTableWithPresetOfColumns,\n rememberPresetColumnsAsDefault,\n} from '../../../../../store/actions/navigation/content/table/table';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {getColumnsPresetHash} from '../../../../../store/selectors/navigation/content/table-ts';\n\ntype Props = Required<Pick<ButtonProps, 'view' | 'disabled'>>;\n\nfunction SharePresetButton(props: Props) {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n dispatch(openTableWithPresetOfColumns());\n }, [dispatch]);\n\n return (\n <Tooltip content={'Share current set of columns for the table'}>\n <Button\n {...props}\n pin={'clear-round'}\n onClick={handleClick}\n qa=\"table-columns-share-button\"\n >\n <Icon awesome={'share'} />\n </Button>\n </Tooltip>\n );\n}\n\nfunction SavePresetButton(props: Props) {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n dispatch(rememberPresetColumnsAsDefault());\n }, [dispatch]);\n\n return (\n <Tooltip content={'Remember columns for the table'}>\n <Button {...props} pin={'clear-round'} onClick={handleClick}>\n <Icon awesome={'save'} />\n </Button>\n </Tooltip>\n );\n}\n\nfunction ColumnsPresetButton(props: Props) {\n const hash = useSelector(getColumnsPresetHash);\n\n return hash ? <SavePresetButton {...props} /> : <SharePresetButton {...props} />;\n}\n\nexport default React.memo(ColumnsPresetButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\n\nimport {openColumnSelectorModal} from '../../../../../store/actions/navigation/content/table/table';\nimport {\n getAllColumns,\n getVisibleColumns,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {getSchemaStrict} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {Secondary} from '../../../../../components/Text/Text';\nimport ColumnsPresetButton from './ColumnsPresetButton';\nimport {RootState} from '../../../../../store/reducers';\nimport {getConfigData} from '../../../../../config/ui-settings';\n\nColumnSelectorButton.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n visibleColumns: PropTypes.array.isRequired,\n allColumns: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n\n openColumnSelectorModal: PropTypes.func.isRequired,\n};\n\nconst actionStyle = {marginRight: 1};\n\ninterface Props {\n loading?: boolean;\n isStrict?: boolean;\n allColumns: Array<unknown>;\n visibleColumns: Array<unknown>;\n openColumnSelectorModal: () => void;\n}\n\nfunction ColumnSelectorButton({\n loading,\n isStrict,\n allColumns,\n visibleColumns,\n openColumnSelectorModal,\n}: Props) {\n const allowPickColumns = !loading || isStrict;\n const showAllColumns = allColumns.length === visibleColumns.length;\n const view = showAllColumns ? 'outlined' : 'action';\n\n const {allowUserColumnPresets} = getConfigData();\n return (\n <React.Fragment>\n <Button\n size=\"m\"\n disabled={!allowPickColumns}\n title=\"Choose columns\"\n onClick={openColumnSelectorModal}\n view={view}\n pin={allowUserColumnPresets ? 'round-brick' : 'round-round'}\n style={showAllColumns ? undefined : actionStyle}\n qa=\"table-columns-button\"\n >\n <Icon awesome=\"filter\" face=\"solid\" />\n Columns\n <Secondary disabled={!showAllColumns}>\n {' '}\n {visibleColumns.length + '/' + allColumns.length}\n </Secondary>\n </Button>\n {allowUserColumnPresets && (\n <ColumnsPresetButton view={view} disabled={!allowPickColumns} />\n )}\n </React.Fragment>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading} = state.navigation.content.table;\n\n const visibleColumns = getVisibleColumns(state);\n const allColumns = getAllColumns(state);\n const isStrict = getSchemaStrict(state);\n\n return {visibleColumns, loading, allColumns, isStrict};\n};\n\nconst mapDispatchToProps = {\n openColumnSelectorModal,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ColumnSelectorButton);\n","/* eslint-disable promise/prefer-await-to-then */\n\nconst methodMap = [\n\t[\n\t\t'requestFullscreen',\n\t\t'exitFullscreen',\n\t\t'fullscreenElement',\n\t\t'fullscreenEnabled',\n\t\t'fullscreenchange',\n\t\t'fullscreenerror',\n\t],\n\t// New WebKit\n\t[\n\t\t'webkitRequestFullscreen',\n\t\t'webkitExitFullscreen',\n\t\t'webkitFullscreenElement',\n\t\t'webkitFullscreenEnabled',\n\t\t'webkitfullscreenchange',\n\t\t'webkitfullscreenerror',\n\n\t],\n\t// Old WebKit\n\t[\n\t\t'webkitRequestFullScreen',\n\t\t'webkitCancelFullScreen',\n\t\t'webkitCurrentFullScreenElement',\n\t\t'webkitCancelFullScreen',\n\t\t'webkitfullscreenchange',\n\t\t'webkitfullscreenerror',\n\n\t],\n\t[\n\t\t'mozRequestFullScreen',\n\t\t'mozCancelFullScreen',\n\t\t'mozFullScreenElement',\n\t\t'mozFullScreenEnabled',\n\t\t'mozfullscreenchange',\n\t\t'mozfullscreenerror',\n\t],\n\t[\n\t\t'msRequestFullscreen',\n\t\t'msExitFullscreen',\n\t\t'msFullscreenElement',\n\t\t'msFullscreenEnabled',\n\t\t'MSFullscreenChange',\n\t\t'MSFullscreenError',\n\t],\n];\n\nconst nativeAPI = (() => {\n\tif (typeof document === 'undefined') {\n\t\treturn false;\n\t}\n\n\tconst unprefixedMethods = methodMap[0];\n\tconst returnValue = {};\n\n\tfor (const methodList of methodMap) {\n\t\tconst exitFullscreenMethod = methodList?.[1];\n\t\tif (exitFullscreenMethod in document) {\n\t\t\tfor (const [index, method] of methodList.entries()) {\n\t\t\t\treturnValue[unprefixedMethods[index]] = method;\n\t\t\t}\n\n\t\t\treturn returnValue;\n\t\t}\n\t}\n\n\treturn false;\n})();\n\nconst eventNameMap = {\n\tchange: nativeAPI.fullscreenchange,\n\terror: nativeAPI.fullscreenerror,\n};\n\n// eslint-disable-next-line import/no-mutable-exports\nlet screenfull = {\n\t// eslint-disable-next-line default-param-last\n\trequest(element = document.documentElement, options) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onFullScreenEntered = () => {\n\t\t\t\tscreenfull.off('change', onFullScreenEntered);\n\t\t\t\tresolve();\n\t\t\t};\n\n\t\t\tscreenfull.on('change', onFullScreenEntered);\n\n\t\t\tconst returnPromise = element[nativeAPI.requestFullscreen](options);\n\n\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t}\n\t\t});\n\t},\n\texit() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!screenfull.isFullscreen) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onFullScreenExit = () => {\n\t\t\t\tscreenfull.off('change', onFullScreenExit);\n\t\t\t\tresolve();\n\t\t\t};\n\n\t\t\tscreenfull.on('change', onFullScreenExit);\n\n\t\t\tconst returnPromise = document[nativeAPI.exitFullscreen]();\n\n\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t}\n\t\t});\n\t},\n\ttoggle(element, options) {\n\t\treturn screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);\n\t},\n\tonchange(callback) {\n\t\tscreenfull.on('change', callback);\n\t},\n\tonerror(callback) {\n\t\tscreenfull.on('error', callback);\n\t},\n\ton(event, callback) {\n\t\tconst eventName = eventNameMap[event];\n\t\tif (eventName) {\n\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t}\n\t},\n\toff(event, callback) {\n\t\tconst eventName = eventNameMap[event];\n\t\tif (eventName) {\n\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t}\n\t},\n\traw: nativeAPI,\n};\n\nObject.defineProperties(screenfull, {\n\tisFullscreen: {\n\t\tget: () => Boolean(document[nativeAPI.fullscreenElement]),\n\t},\n\telement: {\n\t\tenumerable: true,\n\t\tget: () => document[nativeAPI.fullscreenElement] ?? undefined,\n\t},\n\tisEnabled: {\n\t\tenumerable: true,\n\t\t// Coerce to boolean in case of old WebKit.\n\t\tget: () => Boolean(document[nativeAPI.fullscreenEnabled]),\n\t},\n});\n\nif (!nativeAPI) {\n\tscreenfull = {isEnabled: false};\n}\n\nexport default screenfull;\n","import React, {useEffect, useRef} from 'react';\nimport screenfull from 'screenfull';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('fullscreen');\n\nFullScreen.propTypes = {\n children: PropTypes.node.isRequired,\n enabled: PropTypes.bool.isRequired,\n className: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nexport default function FullScreen({enabled = false, children, className, onChange = () => {}}) {\n const container = useRef(null);\n\n const toggleScreen = () => {\n if (screenfull.isFullscreen && !enabled) {\n screenfull.exit();\n } else if (!screenfull.isFullscreen && enabled) {\n screenfull.request(container.current);\n }\n };\n\n const callback = () => onChange(screenfull.isFullscreen);\n const listenScreenChange = () => {\n if (!isFullScreenAllowed()) {\n return;\n }\n\n screenfull.on('change', callback);\n return () => {\n screenfull.off('change', callback);\n };\n };\n\n useEffect(toggleScreen, [enabled]);\n useEffect(listenScreenChange);\n\n return (\n <div className={block({enabled}, className)} ref={container}>\n {children}\n </div>\n );\n}\n\nexport function isFullScreenAllowed() {\n const {isEnabled, on} = screenfull || {};\n return isEnabled && 'function' === typeof on;\n}\n","import React, {useEffect} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {toggleFullScreen} from '../../../../../store/actions/navigation/content/table/table';\nimport {isFullScreenAllowed} from '../../../../../components/FullScreen/FullScreen';\n\nFullScreenButton.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n isFullScreen: PropTypes.bool.isRequired,\n toggleFullScreen: PropTypes.func.isRequired,\n};\n\nfunction FullScreenButton({block, toggleFullScreen, isFullScreen}) {\n useEffect(() => {\n // Sets correct isSticky flag value from the <Sticky/> component after exit from fullscreen mode ¯\\_(ツ)_/¯\n const dispatchScrollEvent = () => window.dispatchEvent(new Event('scroll'));\n setTimeout(dispatchScrollEvent, 100);\n }, [isFullScreen]);\n\n return (\n isFullScreenAllowed() && (\n <div className={block('fs-button', {fullscreen: isFullScreen})}>\n <Button size=\"m\" title=\"Toggle full screen\" onClick={toggleFullScreen}>\n <Icon awesome={isFullScreen ? 'compress' : 'expand'} />\n </Button>\n </div>\n )\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isFullScreen} = state.navigation.content.table;\n\n return {isFullScreen};\n};\n\nconst mapDispatchToProps = {\n toggleFullScreen,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FullScreenButton);\n","import React, {ComponentProps, VFC} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport type cn from 'bem-cn-lite';\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport Dropdown from '../../../../../components/Dropdown/Dropdown';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {\n cellSizeRadioButtonItems,\n pageSizeRadioButtonItems,\n} from '../../../../../constants/navigation/content/table';\nimport {\n changeCellSize,\n changePageSize,\n} from '../../../../../store/actions/navigation/content/table/table';\nimport {getCellSize, getPageSize} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getSettingTableDisplayRawStrings} from '../../../../../store/selectors/settings';\nimport {setTableDisplayRawStrings} from '../../../../../store/actions/settings/settings';\nimport type {RootState} from '../../../../../store/reducers';\n\ninterface Props extends ConnectedProps<typeof connector> {\n block: ReturnType<typeof cn>;\n}\n\nconst SettingsButton: VFC<Props> = ({\n block,\n pageSize,\n changePageSize,\n cellSize,\n changeCellSize,\n allowRawStrings,\n setTableDisplayRawStrings,\n}) => {\n const stringLimitProps: ComponentProps<typeof RadioButton> = {\n size: 'm',\n name: 'table-string-limit',\n value: String(cellSize),\n items: cellSizeRadioButtonItems,\n onChange(evt) {\n const value = Number(evt.target.value);\n changeCellSize(value);\n },\n };\n\n const pageSizeProps: ComponentProps<typeof RadioButton> = {\n size: 'm',\n name: 'table-page-size',\n value: String(pageSize),\n items: pageSizeRadioButtonItems,\n onChange(evt) {\n const value = Number(evt.target.value);\n changePageSize(value);\n },\n };\n\n return (\n <Dropdown\n trigger=\"click\"\n className={block('settings')}\n button={\n <Button size=\"m\" title=\"settings\">\n <Icon awesome=\"cog\" face=\"solid\" />\n </Button>\n }\n template={\n <div className={block('settings-modal')}>\n <div className=\"elements-form__label\">Rows per page</div>\n <div className=\"elements-form__field\">\n <RadioButton {...pageSizeProps} />\n </div>\n <div className=\"elements-form__label\">Cell size limit</div>\n <div className=\"elements-form__field\">\n <RadioButton {...stringLimitProps} />\n </div>\n <div className=\"elements-form__field\">\n <Checkbox\n checked={allowRawStrings}\n onChange={(evt) => {\n setTableDisplayRawStrings(evt.target.checked);\n }}\n >\n Allow raw strings\n </Checkbox>\n </div>\n </div>\n }\n />\n );\n};\n\nconst mapStateToProps = (state: RootState) => {\n const {isFullScreen} = state.navigation.content.table;\n const pageSize = getPageSize(state);\n const cellSize = getCellSize(state);\n\n const allowRawStrings = getSettingTableDisplayRawStrings(state);\n\n return {pageSize, cellSize, isFullScreen, allowRawStrings};\n};\n\nconst mapDispatchToProps = {\n changePageSize,\n changeCellSize,\n setTableDisplayRawStrings,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(SettingsButton);\n","const SvgJupyterLogo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 44 51\" {...props}><g style={{\n mixBlendMode: \"normal\"\n }}><use xlinkHref=\"#jupyter-logo_svg__a\" fill=\"#F37726\" style={{\n mixBlendMode: \"normal\"\n }} transform=\"translate(3.21 31.27)\" /><use xlinkHref=\"#jupyter-logo_svg__b\" fill=\"#F37726\" style={{\n mixBlendMode: \"normal\"\n }} transform=\"translate(3.21 4.88)\" /></g><defs><path id=\"jupyter-logo_svg__a\" d=\"M18.696 7.122C10.684 7.122 3.641 4.247 0 0a19.934 19.934 0 0 0 37.392 0C33.76 4.247 26.744 7.122 18.696 7.122\" /><path id=\"jupyter-logo_svg__b\" d=\"M18.696 5.897c8.013 0 15.055 2.876 18.696 7.123A19.934 19.934 0 0 0 0 13.02c3.641-4.256 10.648-7.123 18.696-7.123\" /></defs></svg>;\nexport default SvgJupyterLogo;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\n\nimport Button from '../../../../../components/Button/Button';\nimport Logo from '../../../../../assets/img/svg/jupyter-logo.svg';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {getNavigationPathAttributesLoadState} from '../../../../../store/selectors/navigation/navigation';\nimport {LOADING_STATUS} from '../../../../../constants';\nimport {getJupyterBasePath} from '../../../../../config';\n\nJupyterButton.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n};\n\nfunction JupyterButton({block}) {\n const loaded = useSelector(getNavigationPathAttributesLoadState) === LOADING_STATUS.LOADED;\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n\n const basePath = getJupyterBasePath();\n if (!basePath) {\n return null;\n }\n\n const url = `${basePath}/redirect/nb_template/yt?cluster=${cluster}&path=${path}`;\n return (\n <div className={block('jupyter')}>\n <Button\n size=\"m\"\n href={url}\n view=\"action\"\n target=\"_blank\"\n title=\"Open in Jupyter\"\n disabled={!loaded}\n >\n <span className={block('jupyter-content')}>\n <Logo className={block('jupyter-logo')} width={22} height={22} />\n Jupyter\n </span>\n </Button>\n </div>\n );\n}\n\nexport default JupyterButton;\n","import Query from '../../../../../utils/navigation/content/table/query';\nimport {updateTableData} from '../../../../../store/actions/navigation/content/table/table';\nimport {\n CLOSE_OFFSET_SELECTOR_MODAL,\n MOVE_OFFSET,\n OPEN_OFFSET_SELECTOR_MODAL,\n} from '../../../../../constants/navigation/content/table';\nimport {\n getBottomBoundKey,\n getOffsetValue,\n getRowCount,\n getUpperBoundKey,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n getIsDynamic,\n getPageSize,\n getYqlTypes,\n} from '../../../../../store/selectors/navigation/content/table-ts';\n\nexport function moveOffsetToStart() {\n return (dispatch) => {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: '',\n },\n });\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffsetToLeft() {\n return (dispatch, getState) => {\n const state = getState();\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n\n if (isDynamic) {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Query.prepareKey(getBottomBoundKey(state), yqlTypes),\n moveBackward: true,\n },\n });\n } else {\n const pageSize = getPageSize(state);\n const offsetValue = getOffsetValue(state);\n\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Math.max(offsetValue - pageSize, 0) || '',\n },\n });\n }\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffsetToRight() {\n return (dispatch, getState) => {\n const state = getState();\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n\n if (isDynamic) {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Query.prepareKey(getUpperBoundKey(state), yqlTypes),\n },\n });\n } else {\n const pageSize = getPageSize(state);\n const offsetValue = getOffsetValue(state);\n const rowCount = getRowCount(state);\n\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Math.min(offsetValue + pageSize, Math.max(rowCount - pageSize, 0)),\n },\n });\n }\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffsetToEnd() {\n return (dispatch, getState) => {\n const state = getState();\n const rowCount = getRowCount(state);\n const isDynamic = getIsDynamic(state);\n const pageSize = getPageSize(state);\n\n if (isDynamic) {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: '',\n moveBackward: true,\n },\n });\n } else {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Math.max(rowCount - pageSize, 0),\n },\n });\n }\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffset(offsetValue) {\n return (dispatch, getState) => {\n const state = getState();\n const prevOffsetValue = getOffsetValue(state);\n\n if (offsetValue !== prevOffsetValue) {\n dispatch({\n type: MOVE_OFFSET,\n data: {offsetValue: offsetValue || ''},\n });\n dispatch(updateTableData());\n }\n };\n}\n\nexport function openOffsetSelectorModal() {\n return {\n type: OPEN_OFFSET_SELECTOR_MODAL,\n };\n}\n\nexport function closeOffsetSelectorModal() {\n return {\n type: CLOSE_OFFSET_SELECTOR_MODAL,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\n\nimport {openOffsetSelectorModal} from '../../../../../store/actions/navigation/content/table/pagination';\nimport {\n getAllColumns,\n getVisibleColumns,\n} from '../../../../../store/selectors/navigation/content/table';\n\nOffsetSelectorButton.propTypes = {\n // from parent\n disabled: PropTypes.bool,\n\n // from connect\n visibleColumns: PropTypes.array.isRequired,\n allColumns: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n\n openOffsetSelectorModal: PropTypes.func.isRequired,\n};\n\nfunction OffsetSelectorButton({\n loading,\n disabled,\n allColumns,\n visibleColumns,\n openOffsetSelectorModal,\n}) {\n return (\n <Button\n size=\"m\"\n disabled={loading || disabled}\n title=\"Edit offset\"\n onClick={openOffsetSelectorModal}\n pin=\"round-clear\"\n >\n <Icon awesome=\"key\" />\n Keys \n <span className=\"elements-secondary-text\">\n {visibleColumns.length + '/' + allColumns.length}\n </span>\n </Button>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {loading} = state.navigation.content.table;\n\n const visibleColumns = getVisibleColumns(state).filter((column) => column.keyColumn);\n const allColumns = getAllColumns(state).filter((column) => column.keyColumn);\n\n return {visibleColumns, loading, allColumns};\n};\n\nconst mapDispatchToProps = {\n openOffsetSelectorModal,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OffsetSelectorButton);\n","/* eslint-disable react/prop-types */\nimport React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {RangeInputPicker} from '../../../../../components/common/RangeInputPicker';\nimport Button from '../../../../../components/Button/Button';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Icon from '../../../../../components/Icon/Icon';\nimport OffsetSelectorButton from '../../../../../pages/navigation/content/Table/TableOverview/OffsetSelectorButton';\n\nimport {\n getOffsetValue,\n getProgressWidth,\n getRowCount,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {moveOffset} from '../../../../../store/actions/navigation/content/table/pagination';\n\nimport './TableOverview.scss';\n\nTableOverview.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n isDynamic: PropTypes.bool.isRequired,\n rowCount: PropTypes.number.isRequired,\n progressWidth: PropTypes.string.isRequired,\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n moveOffset: PropTypes.func.isRequired,\n};\n\nconst renderInput = (props, {onEndEditing, onUpdate}) => {\n const {offsetValue, rowCount, isDynamic} = props;\n\n return isDynamic ? (\n <Filter\n iconLeft={<Icon awesome=\"key\" />}\n onBlur={(v) => {\n onEndEditing();\n onUpdate(v);\n }}\n value={offsetValue}\n placeholder=\"\"\n size=\"m\"\n pin={'brick-clear'}\n hasClear={false}\n />\n ) : (\n <RangeInputPicker\n iconLeft={<Icon awesome=\"hashtag\" />}\n onOutsideClick={onEndEditing}\n onAfterUpdate={onUpdate}\n onSubmit={onUpdate}\n maxValue={Math.max(0, rowCount - 1)}\n infoPointsCount={0}\n value={offsetValue}\n autoFocus\n size=\"m\"\n />\n );\n};\n\nconst renderPlaceholder = (props, handleStartEditing) => {\n const {block, isDynamic, offsetValue, progressWidth: width} = props;\n\n return (\n <div className={block('query-current')} onClick={handleStartEditing}>\n <Icon awesome={isDynamic ? 'key' : 'hashtag'} />\n {offsetValue || 'No offset'}\n {!isDynamic && <div className={block('query-progress')} style={{width}} />}\n </div>\n );\n};\n\nfunction TableOverview(props) {\n const {block, moveOffset, isDynamic} = props;\n const [editing, changeEditing] = useState(false);\n\n const onUpdate = (value) => moveOffset(value);\n\n const onEndEditing = () => {\n changeEditing(false);\n };\n\n const onStartEditing = () => {\n changeEditing(true);\n };\n\n return (\n <div className={block('input', {edit: editing, dynamic: isDynamic})}>\n {isDynamic && <OffsetSelectorButton disabled={editing} />}\n {editing\n ? renderInput(props, {onEndEditing, onUpdate})\n : renderPlaceholder(props, onStartEditing)}\n {isDynamic && (\n <Button\n size=\"m\"\n view=\"action\"\n title=\"Confirm\"\n pin=\"clear-round\"\n disabled={!editing}\n >\n Confirm\n </Button>\n )}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const progressWidth = getProgressWidth(state);\n const offsetValue = getOffsetValue(state);\n const isDynamic = getIsDynamic(state);\n const rowCount = getRowCount(state);\n\n return {progressWidth, offsetValue, rowCount, isDynamic};\n};\n\nconst mapDispatchToProps = {\n moveOffset,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TableOverview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n// import {isSupportedSelector} from '../../../../../store/selectors/thor';\n\nimport Pagination from '../../../../../components/Pagination/Pagination';\n\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {\n getIsPaginationDisabled,\n getIsTableEndReached,\n getOffsetValue,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n moveOffsetToEnd,\n moveOffsetToLeft,\n moveOffsetToRight,\n moveOffsetToStart,\n} from '../../../../../store/actions/navigation/content/table/pagination';\n\nPaginator.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n error: PropTypes.bool.isRequired,\n\n isPaginationDisabled: PropTypes.bool.isRequired,\n isTableEndReached: PropTypes.bool.isRequired,\n isDynamic: PropTypes.bool.isRequired,\n // isSupported: PropTypes.func.isRequired,\n\n previousOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n moveOffsetToStart: PropTypes.func.isRequired,\n moveOffsetToLeft: PropTypes.func.isRequired,\n moveOffsetToRight: PropTypes.func.isRequired,\n moveOffsetToEnd: PropTypes.func.isRequired,\n};\n\nfunction Paginator(props) {\n const {\n block,\n error,\n isPaginationDisabled,\n isTableEndReached,\n offsetValue,\n isDynamic /*, isSupported */,\n } = props;\n const {moveOffsetToStart, moveOffsetToLeft, moveOffsetToRight, moveOffsetToEnd} = props;\n const tooltip = isPaginationDisabled\n ? 'Select every key column in Column Selector to enable pagination'\n : undefined;\n // TODO: use when descending sorting will be implemented on backend\n\n return (\n <Pagination\n size=\"m\"\n tooltip={tooltip}\n className={block('pagination')}\n first={{\n handler: moveOffsetToStart,\n hotkeyHandler: moveOffsetToStart,\n hotkeyScope: 'all',\n hotkey: 'ctrl+shift+left, command+shift+left',\n disabled: !offsetValue || isPaginationDisabled,\n }}\n previous={{\n handler: moveOffsetToLeft,\n hotkeyHandler: moveOffsetToLeft,\n hotkeyScope: 'all',\n hotkey: 'ctrl+left, command+left',\n disabled: isDynamic || !offsetValue || isPaginationDisabled,\n // disabled: isDynamic && error || moveBackwardDisabled || !offsetValue || isPaginationDisabled,\n }}\n next={{\n handler: moveOffsetToRight,\n hotkeyHandler: moveOffsetToRight,\n hotkeyScope: 'all',\n hotkey: 'ctrl+right, command+right',\n disabled: (isDynamic && error) || isTableEndReached || isPaginationDisabled,\n }}\n last={{\n handler: moveOffsetToEnd,\n hotkeyHandler: moveOffsetToEnd,\n hotkeyScope: 'all',\n hotkey: 'ctrl+shift+right, command+shift+right',\n disabled: isDynamic || isTableEndReached || isPaginationDisabled,\n // disabled: isTableEndReached || moveBackwardDisabled || isPaginationDisabled,\n }}\n />\n );\n}\n\nconst mapStateToProps = (state) => {\n const {error} = state.navigation.content.table;\n\n const isPaginationDisabled = getIsPaginationDisabled(state);\n const isTableEndReached = getIsTableEndReached(state);\n const offsetValue = getOffsetValue(state);\n const isDynamic = getIsDynamic(state);\n // const isSupported = isSupportedSelector(state);\n\n return {\n error,\n isDynamic,\n offsetValue,\n isPaginationDisabled,\n isTableEndReached,\n // isSupported,\n };\n};\n\nconst mapDispatchToProps = {\n moveOffsetToStart,\n moveOffsetToLeft,\n moveOffsetToRight,\n moveOffsetToEnd,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Paginator);\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport {mergeScreen} from '../../store/actions/global';\n\nimport UIFactory, {YQLButtonProps} from '../../UIFactory';\n\nexport function YQLKitButton(props: YQLButtonProps) {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n return () => {\n dispatch(mergeScreen());\n };\n }, [dispatch]);\n\n return <React.Fragment>{UIFactory.yqlWidgetSetup?.renderButton(props)}</React.Fragment>;\n}\n","import {createSelector} from 'reselect';\n\nimport UIFactory from '../../../UIFactory';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport {getSettingsData} from './settings-base';\n\nexport const getNavigationSqlService = createSelector(\n [getSettingsData, isDeveloper],\n (data, isAdmin) => {\n const value = data['global::navigation::sqlService'];\n const isQtKitEnabled = value?.length ? -1 !== value.indexOf('qtkit') : isAdmin;\n const isYqlKitEnabled = value?.length ? -1 !== value.indexOf('yqlkit') : true;\n\n const hasYqlWidget = Boolean(UIFactory.yqlWidgetSetup);\n return {\n value,\n isQtKitEnabled: !hasYqlWidget || isQtKitEnabled,\n isYqlKitEnabled: hasYqlWidget && isYqlKitEnabled,\n hasYqlWidget,\n };\n },\n);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {Button} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport Icon from '../../components/Icon/Icon';\nimport {YQLKitButton} from '../../containers/YQLKitButton/YQLKitButton';\nimport {QueryWidgetLazy} from '../../pages/query-tracker/QueryWidget/side-panel';\nimport {QueryEngine} from '../../pages/query-tracker/module/engines';\nimport {createQueryFromTablePath} from '../../pages/query-tracker/module/query/actions';\nimport {createNewQueryUrl} from '../../pages/query-tracker/utils/navigation';\nimport {getNavigationSqlService} from '../../store/selectors/settings/navigation';\nimport UIFactory from '../../UIFactory';\nimport {useSidePanel} from '../../hooks/use-side-panel';\n\nimport './OpenQueryButtons.scss';\n\nconst b = cn('yt-open-query-buttons');\n\nexport type OpenQueryButtonProps = {\n className?: string;\n path: string;\n cluster: string;\n\n autoOpen?: boolean;\n};\n\nexport function OpenQueryButtons({className, path, cluster, autoOpen}: OpenQueryButtonProps) {\n const dispatch = useDispatch();\n const [panelMode, setPanelMode] = React.useState<'qt' | 'yqlkit' | undefined>();\n\n const onOpenYqlKit = React.useCallback(() => setPanelMode('yqlkit'), []);\n const onClose = React.useCallback(() => setPanelMode(undefined), []);\n\n const {openWidget, closeWidget, widgetContent} = useSidePanel(panelMode + '_widget', {\n renderContent({visible}) {\n return panelMode === 'qt' ? (\n <QueryWidgetLazy onClose={onClose} />\n ) : (\n UIFactory.yqlWidgetSetup?.renderWidget({visible, onClose})\n );\n },\n });\n\n const {isQtKitEnabled, isYqlKitEnabled} = useSelector(getNavigationSqlService);\n\n React.useEffect(() => {\n if (panelMode === undefined) {\n closeWidget();\n return;\n }\n\n if (panelMode === 'qt') {\n dispatch(createQueryFromTablePath(QueryEngine.YQL, cluster, path));\n }\n openWidget();\n }, [panelMode, openWidget, closeWidget]);\n\n const allowQtAutoOpen = autoOpen && isQtKitEnabled;\n\n React.useEffect(() => {\n if (autoOpen) {\n setPanelMode(allowQtAutoOpen ? 'qt' : 'yqlkit');\n }\n }, [autoOpen, allowQtAutoOpen]);\n\n return (\n <div className={b(null, className)}>\n {isQtKitEnabled && (\n <div className={b('query')}>\n <Button\n onClick={() => {\n setPanelMode(panelMode === 'qt' ? undefined : 'qt');\n }}\n pin=\"round-clear\"\n view=\"action\"\n className={b('btn')}\n selected={panelMode === 'qt'}\n disabled={panelMode === 'yqlkit'}\n title=\"Open Queries widget\"\n >\n QT Kit\n </Button>\n <Button\n className={b('btn')}\n pin=\"clear-round\"\n view=\"action\"\n href={createNewQueryUrl(cluster, QueryEngine.YQL, {path})}\n target=\"_blank\"\n title=\"Open Queries page\"\n >\n <Icon awesome=\"table\" />\n </Button>\n </div>\n )}\n {isYqlKitEnabled && (\n <YQLKitButton\n disabled={panelMode === 'qt'}\n opened={panelMode === 'yqlkit'}\n onOpen={onOpenYqlKit}\n onClose={onClose}\n />\n )}\n {widgetContent}\n </div>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {OpenQueryButtons} from '../../../../../containers/OpenQueryButtons/OpenQueryButtons';\n\nexport function CreateQueryFromTable({className}: {className: string}) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n\n return <OpenQueryButtons className={className} path={path} cluster={cluster} />;\n}\n","export const NAVIGATION_ATTRIBUTES_EDITOR_REQUEST = 'NAVIGATION_ATTRIBUTES_EDITOR_REQUEST';\nexport const NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS = 'NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS';\nexport const NAVIGATION_ATTRIBUTES_EDITOR_ERROR = 'NAVIGATION_ATTRIBUTES_EDITOR_ERROR';\nexport const NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL = 'NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL';\n","import forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport ypath from '../../../../common/thor/ypath';\n\nexport const getNavigationAttributesData = (state: RootState) =>\n state.navigation.modals.attributesEditor;\nexport const getNavigationAttributesEditorAttributes = (state: RootState) =>\n state.navigation.modals.attributesEditor.attributesMap;\nexport const getNavigationAttributesEditorPath = (state: RootState) =>\n state.navigation.modals.attributesEditor.paths;\nexport const getNavigationAttributesEditorLoading = (state: RootState) =>\n state.navigation.modals.attributesEditor.loading;\nexport const getNavigationAttributesEditorLoaded = (state: RootState) =>\n state.navigation.modals.attributesEditor.loaded;\nexport const getNavigationAttributesEditorError = (state: RootState) =>\n state.navigation.modals.attributesEditor.error;\nexport const getNavigationAttributesEditorVisible = (state: RootState) =>\n state.navigation.modals.attributesEditor.visible;\n\nconst getNavigationAttributesEidtorNodesByTypes = createSelector(\n [getNavigationAttributesEditorAttributes],\n (attrsMap) => {\n const staticTables: Array<string> = [];\n const mapNodes: Array<string> = [];\n const dynamicTables: Array<string> = [];\n\n forEach_(attrsMap, (attrs, path) => {\n const type = ypath.getValue(attrs || {}, '/@type');\n if (type === 'map_node') {\n mapNodes.push(path);\n } else if (type === 'table') {\n if (ypath.getValue(attrs, '/@dynamic')) {\n dynamicTables.push(path);\n } else {\n staticTables.push(path);\n }\n }\n });\n return {staticTables, dynamicTables, mapNodes};\n },\n);\n\nexport const getNavigationAttributesEditorStaticTables = createSelector(\n [getNavigationAttributesEidtorNodesByTypes],\n ({staticTables}) => {\n return staticTables;\n },\n);\n\nexport const getNavigationAttributesEditorDynamicTables = createSelector(\n [getNavigationAttributesEidtorNodesByTypes],\n ({dynamicTables}) => {\n return dynamicTables;\n },\n);\n\nexport const getNavigationAttributesEditorMapNodes = createSelector(\n [getNavigationAttributesEidtorNodesByTypes],\n ({mapNodes}) => {\n return mapNodes;\n },\n);\n","import React from 'react';\n\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport join_ from 'lodash/join';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {ThunkAction} from 'redux-thunk';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport ypath from '../../../../common/thor/ypath';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {\n NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n NAVIGATION_ATTRIBUTES_EDITOR_REQUEST,\n NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS,\n} from '../../../../constants/navigation/modals/attributes-editor';\nimport {RootState} from '../../../../store/reducers';\nimport {NavAttrEditorAction} from '../../../../store/reducers/navigation/modals/attributes-editor';\nimport {\n getNavigationAttributesEditorAttributes,\n getNavigationAttributesEditorPath,\n getNavigationAttributesEditorStaticTables,\n} from '../../../../store/selectors/navigation/modals/attributes-editor';\nimport {getBatchError, showErrorPopup, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {updateView} from '../index';\nimport Link from '../../../../components/Link/Link';\nimport {getCluster} from '../../../selectors/global';\nimport {makeUiMarker, prepareSetCommandForBatch} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\n\ntype ActionType<R = any> = ThunkAction<R, RootState, any, NavAttrEditorAction>;\n\nconst EDITABLE_ATTRIBUTES = [\n 'type',\n 'account',\n 'primary_medium',\n 'optimize_for',\n 'compression_codec',\n 'erasure_codec',\n 'replication_factor',\n 'tablet_cell_bundle',\n 'in_memory_mode',\n 'dynamic',\n 'sorted',\n 'annotation',\n 'annotation_path',\n 'expiration_time',\n 'expiration_timeout',\n];\n\nexport function showNavigationAttributesEditor(paths: Array<string>): ActionType {\n return (dispatch) => {\n dispatch({type: NAVIGATION_ATTRIBUTES_EDITOR_REQUEST});\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {\n path: path + '/@',\n attributes: EDITABLE_ATTRIBUTES,\n },\n };\n });\n return executeBatchWithRetries(YTApiId.attributesEditorGetAttrs, requests, {\n errorTitle: 'Attributes cannot be loaded',\n })\n .then((results: any) => {\n const error = getBatchError(results, 'Attributes cannot be loaded');\n if (error) {\n throw error;\n }\n const attributesMap = reduce_(\n paths,\n (acc, path, index) => {\n acc[path] = {$attributes: results[index].output};\n return acc;\n },\n {} as any,\n );\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS,\n data: {attributesMap, paths},\n });\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {visible: true},\n });\n })\n .catch((e: any) => {\n dispatch({type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR, data: e});\n const toaster = new Toaster();\n toaster.add({\n name: 'show_attrs_editor_' + join_(paths),\n theme: 'danger',\n title: 'Attributes cannot be loaded',\n content: e?.message,\n actions: [\n {\n label: ' [Details]',\n onClick: () => showErrorPopup(e),\n },\n ],\n autoHiding: false,\n });\n });\n };\n}\n\nexport function hideNavigationAttributesEditor() {\n return {\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {paths: undefined, visible: false},\n };\n}\n\nconst EDIT_MARKER = makeUiMarker(`${Page.NAVIGATION}:edit-attributes`);\nconst EDIT_MERGE_MARKER = makeUiMarker(`${Page.NAVIGATION}:edit-attributes:merge`);\n\nexport function navigationSetNodeAttributes(\n generalAttrs: any,\n storageAttrs: object,\n runMerge: boolean,\n): ActionType<Promise<unknown>> {\n return (dispatch, getState) => {\n const paths = getNavigationAttributesEditorPath(getState());\n\n if (isEmpty_({...generalAttrs, ...storageAttrs})) {\n console.warn(\n `Please check your parameters: ${JSON.stringify({\n path: paths,\n attributes: generalAttrs,\n })}`,\n );\n return Promise.resolve();\n }\n\n const cluster = getCluster(getState());\n\n const attributesMap = getNavigationAttributesEditorAttributes(getState());\n const {in_memory_mode, tablet_cell_bundle, ...restGeneralAttrs} = generalAttrs;\n\n const requests = reduce_(\n paths,\n (acc, path) => {\n const attrs = attributesMap[path] || {};\n const newAttrs = {...restGeneralAttrs, ...storageAttrs};\n const type = ypath.getValue(attrs, '/@type');\n const isDynamic = ypath.getValue(attrs, '/@dynamic');\n const isDynTable = type === 'table' && isDynamic;\n if (in_memory_mode !== undefined && isDynTable) {\n Object.assign(newAttrs, {in_memory_mode});\n }\n if (tablet_cell_bundle !== undefined && (type === 'map_node' || isDynTable)) {\n Object.assign(newAttrs, {tablet_cell_bundle});\n }\n\n forEach_(newAttrs, (value, key) => {\n acc.push(prepareSetCommandForBatch(`${path}/@${key}`, value, EDIT_MARKER));\n });\n return acc;\n },\n [] as Array<BatchSubRequest>,\n );\n\n const staticTables = getNavigationAttributesEditorStaticTables(getState());\n\n return executeBatchWithRetries(YTApiId.attributesEditorSet, requests, {\n errorTitle: `Cannot set attributes for ${paths}`,\n })\n .then((res): Promise<unknown> => {\n const error = getBatchError(res, `Cannot set attributes for ${paths}`);\n if (error) {\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n data: error,\n });\n return Promise.reject(error);\n }\n if (!runMerge || !staticTables.length || isEmpty_(storageAttrs)) {\n return Promise.resolve(res);\n }\n\n const prepareMergeParams = (path: string) => {\n const sorted = ypath.getValue(attributesMap[path], '/@sorted');\n return {\n spec: Object.assign(\n {\n input_table_paths: [path],\n output_table_path: path,\n force_transform: true,\n },\n sorted ? {mode: 'sorted'} : {},\n ),\n ...EDIT_MERGE_MARKER,\n };\n };\n\n if (staticTables.length < 6) {\n const promises = map_(staticTables, (path) => {\n return wrapApiPromiseByToaster(yt.v3.merge(prepareMergeParams(path)), {\n toasterName: 'storage_attrs_' + path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Merge operation is started',\n errorTitle: 'Merge operation is failed',\n autoHide: false,\n });\n });\n return Promise.all(promises);\n } else {\n const requests = map_(staticTables, (path) => {\n return {\n command: 'merge' as const,\n parameters: prepareMergeParams(path),\n };\n });\n return executeBatchWithRetries(YTApiId.attributesEditorMerge, requests, {\n errorTitle: 'Failed to start some operations',\n }).then((results: any) => {\n const error = getBatchError(results, 'Failed to start some operations');\n if (error) {\n throw error;\n }\n\n const toaster = new Toaster();\n toaster.add({\n theme: 'success',\n name: 'merge_' + staticTables.join(','),\n title: `${staticTables.length} operations are started`,\n content: (\n <span>\n Please visit\n <Link url={`/${cluster}/operations`}> operations </Link>\n page to see more details\n </span>\n ),\n });\n });\n }\n })\n .then(() => {\n dispatch(updateView());\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {paths: undefined, visible: false},\n });\n })\n .catch((e: any) => {\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n data: e,\n });\n return Promise.reject(e);\n });\n };\n}\n","// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport React from 'react';\nimport moment from 'moment';\n// @ts-expect-error\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport Link from '../../../../components/Link/Link';\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {checkIsTrash, getRawPath} from '../../../../store/selectors/navigation';\nimport {showErrorPopup, wrapBatchPromise} from '../../../../utils/utils';\nimport {navigateParent, updateView} from '../../../../store/actions/navigation';\nimport {decodeEscapedAbsPath, preparePath} from '../../../../utils/navigation';\nimport {\n CLOSE_DELETE_OBJECT_POPUP,\n DELETE_OBJECT,\n LOAD_REAL_PATH,\n OPEN_DELETE_OBJECT_POPUP,\n SUPPRESS_REDIRECT,\n TOGGLE_PERMANENTLY_DELETE,\n} from '../../../../constants/navigation/modals/delete-object';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../store/reducers';\nimport type {Dispatch} from 'redux';\nimport type {\n DeleteObjectAction,\n DeleteObjectItem,\n MulipleInfoItem,\n} from '../../../../store/reducers/navigation/modals/delete-object';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\nimport type {YTError} from '../../../../types';\nimport type {AppThunkDispatch} from '../../../../store/thunkDispatch';\n\nconst toaster = new Toaster();\n\nfunction prepareRestorePath(path: string, type: string) {\n const lastChar = path.charAt(path.length - 1);\n\n if (type === 'link' && lastChar === SUPPRESS_REDIRECT) {\n return path.slice(0, path.length - 1);\n }\n\n return path;\n}\n\nexport function openDeleteModal(\n item: DeleteObjectItem | Array<DeleteObjectItem>,\n multipleMode = false,\n) {\n return (dispatch: Dispatch, getState: () => RootState) => {\n const inTrash = checkIsTrash(getState());\n\n dispatch({\n type: OPEN_DELETE_OBJECT_POPUP,\n data: {item, inTrash, multipleMode},\n });\n };\n}\n\nexport function closeDeleteModal() {\n return {\n type: CLOSE_DELETE_OBJECT_POPUP,\n };\n}\n\nexport function togglePermanentlyDelete() {\n return {\n type: TOGGLE_PERMANENTLY_DELETE,\n };\n}\n\nconst getPath = (path: string, type: string) => {\n return ['link', 'access_control_object'].includes(type)\n ? Promise.resolve(path)\n : ytApiV3Id.get(YTApiId.navigationGetPath, {\n path: path + '/@path',\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n });\n};\n\nconst getInfo = (realPath: string) => {\n const parsedRealPath = ypath.YPath.create(realPath, 'absolute');\n const path = parsedRealPath.stringify();\n const name = parsedRealPath.getKey();\n\n return Promise.all([\n path,\n name,\n ytApiV3Id.get(YTApiId.navigationGetPathInfo, {\n path: path + '&/@',\n attributes: ['recursive_resource_usage', 'account'],\n }),\n ]);\n};\n\nexport function getRealPath({path, type}: {path: string; type: string}) {\n return (dispatch: Dispatch) => {\n dispatch({type: LOAD_REAL_PATH.REQUEST});\n\n return getPath(path, type)\n .then(getInfo)\n .then(([realPath, name, info]) => {\n const account = ypath.get(info, '/account');\n const resourceUsage = ypath.get(info, '/recursive_resource_usage');\n\n dispatch({\n type: LOAD_REAL_PATH.SUCCESS,\n data: {realPath, name, account, resourceUsage},\n });\n })\n .catch((error) => {\n console.error(error);\n toaster.add({\n theme: 'danger',\n name: 'real path',\n autoHiding: 10000,\n title: 'Could not open delete dialog.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n dispatch({\n type: LOAD_REAL_PATH.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function getRealPaths(items: {path: string}[]) {\n return (dispatch: Dispatch) => {\n dispatch({type: LOAD_REAL_PATH.REQUEST});\n\n const requests: BatchSubRequest[] = map_(items, ({path}) => {\n return {\n command: 'get',\n parameters: {\n path: `${path}&/@`,\n attributes: ['recursive_resource_usage', 'account', 'path', 'type'],\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n };\n });\n\n return executeBatchWithRetries(YTApiId.navigationDelete, requests, {\n errorTitle: 'Failed to get real paths',\n })\n .then((responses) => {\n const error = find_(responses, (res) => res.error) as {error: YTError} | undefined;\n if (error) {\n return Promise.reject(error.error);\n }\n const multipleInfo = map_(responses, (res, index) => {\n const type = ypath.get(res.output, '/type');\n\n if (type === 'access_control_object') {\n return {type, path: items[index].path};\n }\n\n const path = ypath.get(res.output, '/path');\n const account = ypath.get(res.output, '/account');\n const resourceUsage = ypath.get(res.output, '/recursive_resource_usage');\n const name = path.split('/').reverse()[0];\n\n return {path, account, type, name, resourceUsage};\n });\n\n return dispatch({\n type: LOAD_REAL_PATH.SUCCESS,\n data: {multipleInfo},\n });\n })\n .catch((error) => {\n console.error(error);\n toaster.add({\n theme: 'danger',\n name: 'real path',\n autoHiding: 10000,\n title: 'Could not open delete dialog.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n return dispatch({\n type: LOAD_REAL_PATH.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nconst createDestinationPath = (account: string, name: string, login: string) =>\n `//tmp/trash/by-account/${account}/${login}/${name}_${moment().unix()}`;\n\nfunction deleteCurrentObject(path: string, restorePath: string) {\n return (_dispatch: Dispatch, getState: () => RootState): Promise<void> => {\n const {global, navigation} = getState();\n const {permanently, name, account} = navigation.modals.deleteObject;\n const {login} = global;\n\n if (permanently) {\n return yt.v3.remove({path}).then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Object has been permanently deleted.',\n });\n });\n } else {\n const destinationPath = createDestinationPath(account, name, login);\n\n return yt.v3\n .set(\n {\n path: preparePath(path) + '/@_restore_path',\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n restorePath,\n )\n .then(() =>\n yt.v3.move({\n recursive: true,\n source_path: path,\n preserve_account: true,\n destination_path: destinationPath,\n }),\n )\n .then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Object moved',\n content: (\n <div>\n Object has been moved to{' '}\n <Link url={`navigation?path=${destinationPath}`}>trash</Link>\n </div>\n ),\n });\n });\n }\n };\n}\n\nexport function deleteObject() {\n return (dispatch: AppThunkDispatch<DeleteObjectAction>, getState: () => RootState) => {\n const {navigation} = getState();\n const {realPath, item} = navigation.modals.deleteObject;\n const {transaction} = navigation.navigation;\n\n const path = preparePath(realPath);\n const restorePath = prepareRestorePath(realPath, (item as DeleteObjectItem).type);\n\n dispatch({type: DELETE_OBJECT.REQUEST});\n\n if (transaction) {\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n\n toaster.add({\n theme: 'danger',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Could not delete the object within transaction.',\n });\n }\n\n dispatch(deleteCurrentObject(path, restorePath))\n .then(() => {\n dispatch({type: DELETE_OBJECT.SUCCESS});\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n\n const currentPath = getRawPath(getState());\n const realPathDecoded = decodeEscapedAbsPath(realPath);\n\n if (currentPath === realPathDecoded) {\n dispatch(navigateParent());\n } else {\n dispatch(updateView());\n }\n })\n .catch((error) => {\n console.error(error);\n dispatch({\n type: DELETE_OBJECT.FAILURE,\n data: {error},\n });\n toaster.add({\n theme: 'danger',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Could not delete the node.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n });\n };\n}\n\nfunction permanentlyDeleteObjects(multipleInfo: MulipleInfoItem[], transaction: string) {\n const requests: BatchSubRequest[] = map_(multipleInfo, (node) => {\n const path = preparePath(node.path);\n\n return {\n command: 'remove',\n parameters: {path: path, transaction_id: transaction},\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationDelete, requests, {\n errorTitle: 'Failed to delete object(s) permanently',\n }),\n 'Failed to delete object(s) permanently',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: transaction}))\n .then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete objects',\n autoHiding: 10000,\n title: 'Objects have been permanently deleted.',\n });\n });\n}\n\nfunction moveObjectsIntoTrash(multipleInfo: MulipleInfoItem[], transaction: string, login: string) {\n const setAttributesRequests: BatchSubRequest[] = map_(multipleInfo, (node) => {\n const restorePath = prepareRestorePath(node.path, node.type);\n\n return {\n command: 'set',\n parameters: {\n transaction_id: transaction,\n path: preparePath(node.path) + '/@_restore_path',\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n input: restorePath,\n };\n });\n\n const moveRequests: BatchSubRequest[] = map_(multipleInfo, (node) => {\n const path = preparePath(node.path);\n const destinationPath = createDestinationPath(node.account, node.name, login);\n\n return {\n command: 'move',\n parameters: {\n transaction_id: transaction,\n source_path: path,\n recursive: true,\n preserve_account: true,\n destination_path: destinationPath,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMoveToTrashRestorePath, setAttributesRequests, {\n errorTitle: 'Failed to set restore path',\n }),\n 'Failed to set restore path',\n )\n .then(() =>\n wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMoveToTrash, moveRequests, {\n errorTitle: 'Failed to move the object(s) to trash',\n }),\n 'Failed to move the object(s) to trash',\n ),\n )\n .then(() => yt.v3.commitTransaction({transaction_id: transaction}))\n .then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete objects',\n autoHiding: 10000,\n title: 'Objects moved',\n content: (\n <div>\n Objects have been moved to the trash, they might be found at\n <br />\n <Link url={'navigation?path=//tmp/trash/by-account/'}>\n {'//tmp/trash/by-account/...'}\n </Link>\n </div>\n ),\n });\n });\n}\n\nexport function deleteObjects() {\n return (dispatch: AppThunkDispatch<DeleteObjectAction>, getState: () => RootState) => {\n const {navigation, global} = getState();\n const {transaction} = navigation.navigation;\n const {permanently, multipleInfo} = navigation.modals.deleteObject;\n const {login} = global;\n\n if (transaction) {\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n\n toaster.add({\n theme: 'danger',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Could not delete the object within transaction.',\n });\n }\n\n dispatch({type: DELETE_OBJECT.REQUEST});\n\n return yt.v3\n .startTransaction({})\n .then((id: string) => {\n if (permanently) {\n return permanentlyDeleteObjects(multipleInfo, id);\n }\n\n return moveObjectsIntoTrash(multipleInfo, id, login);\n })\n .then(() => {\n dispatch({type: DELETE_OBJECT.SUCCESS});\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n dispatch(updateView());\n })\n .catch((error: YTError) => {\n console.error(error);\n dispatch({\n type: DELETE_OBJECT.FAILURE,\n data: {error},\n });\n toaster.add({\n theme: 'danger',\n name: 'delete objects',\n autoHiding: 10000,\n title: 'Could not delete the nodes.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n });\n };\n}\n","import React from 'react';\nimport {TABLE_ERASE_MODAL_PARTIAL} from '../../../../constants/navigation/modals/table-erase-modal';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {RootState} from '../../../reducers';\nimport {ThunkAction} from 'redux-thunk';\nimport {wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {makeUiMarker} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\n\nexport function showTableEraseModal(path: string) {\n return {type: TABLE_ERASE_MODAL_PARTIAL, data: {visible: true, path}};\n}\n\nexport function hideTableEraseModal() {\n return {\n type: TABLE_ERASE_MODAL_PARTIAL,\n data: {visible: false, path: undefined},\n };\n}\n\ntype EraseThunkAction = ThunkAction<any, RootState, any, any>;\n\nexport function runTableErase({\n path,\n from,\n to,\n combine_chunks,\n}: {\n path: string;\n from?: number;\n to?: number;\n combine_chunks?: boolean;\n}): EraseThunkAction {\n return () => {\n if (!path) {\n throw Error('Path cannot be empty for \"erase\" operation');\n }\n let range = '';\n if (!isNaN(from!) && !isNaN(to!)) {\n range = `[#${from}:#${to}]`;\n } else if (!isNaN(from!)) {\n range = `[#${from}:]`;\n } else if (!isNaN(to!)) {\n range = `[:#${to}]`;\n }\n\n return wrapApiPromiseByToaster(\n yt.v3.erase({\n spec: {\n table_path: path + range,\n combine_chunks,\n },\n ...makeUiMarker(`${Page.NAVIGATION}:erase`),\n }),\n {\n toasterName: 'table_erase_' + path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo id={opId} type={'erase'} />\n </AppStoreProvider>\n );\n },\n successTitle: 'Erase operation is started',\n errorTitle: 'Erase operation is failed',\n autoHide: false,\n },\n );\n };\n}\n","import unipika from '../../../../common/thor/unipika';\nimport ypath from '../../../../common/thor/ypath';\nimport {prepareNavigationState} from '../../../../utils/navigation';\n\nexport class Node {\n static CAPTION_PRINT_SETTINGS = {\n indent: 0,\n break: false,\n binaryAsHex: false,\n highlightControlCharacter: true,\n escapeWhitespace: true,\n format: 'json',\n };\n\n static TITLE_PRINT_SETTINGS = Object.assign(\n {\n asHTML: false,\n },\n Node.CAPTION_PRINT_SETTINGS,\n );\n\n static SUPPORTS_RESOURCE_USAGE = {\n table: true,\n file: true,\n journal: true,\n document: true,\n };\n\n static prepareTitle(name: string) {\n return unipika.prettyprint(name, Node.TITLE_PRINT_SETTINGS);\n }\n\n static prepareCaption(name: string) {\n return unipika.prettyprint(name, Node.CAPTION_PRINT_SETTINGS);\n }\n\n static getResource(node: any, name: string) {\n return Node.SUPPORTS_RESOURCE_USAGE[\n ypath.getValue(node, '/@type') as keyof typeof Node.SUPPORTS_RESOURCE_USAGE\n ]\n ? ypath.getValue(node, '/@resource_usage/' + name)\n : ypath.getValue(node.recursiveResourceUsage, '/' + name);\n }\n\n name: string;\n $value: string;\n $attributes?: Record<string, string>;\n type: string;\n iconType: string;\n title: string;\n caption: string;\n titleUnquoted: string;\n parsedPath: ReturnType<typeof ypath.YPath.clone>;\n parsedPathError?: {\n message: string;\n inner_errors: unknown[];\n };\n path: string;\n pathState: ReturnType<typeof prepareNavigationState>;\n recursiveResourceUsage: boolean;\n dataWeight: number;\n size: number;\n sizePerMedium: number;\n chunks: number;\n nodes: number;\n tabletStaticMemory: number;\n tablets: number;\n masterMemory: number;\n locks: number;\n account: string;\n modified: string;\n created: string;\n linkParsedPath?: ReturnType<typeof ypath.YPath.clone>;\n linkPathState?: ReturnType<typeof prepareNavigationState>;\n targetPath?: string;\n targetPathBroken?: boolean;\n targetPathState?: ReturnType<typeof prepareNavigationState>;\n\n dynamic?: boolean;\n rows?: number;\n unmergedRows?: number;\n chunkRows?: number;\n tabletState?: string;\n\n constructor(\n data: string,\n params: {parsedPath: string; transaction: string; contentMode: string},\n ) {\n const {parsedPath, transaction, contentMode} = params;\n\n const name = ypath.getValue(data);\n const attributes = ypath.getAttributes(data);\n\n this.$value = this.name = name;\n this.$attributes = attributes;\n\n this.type = attributes.type;\n this.iconType = attributes.type;\n\n this.title = Node.prepareTitle(this.name);\n this.caption = Node.prepareCaption(this.name);\n this.titleUnquoted = this.title.slice(1, -1);\n\n try {\n this.parsedPath = ypath.YPath.clone(parsedPath).concat(\n '/' + ypath.YPath.escapeSpecialCharacters(JSON.parse(this.title)),\n );\n } catch (e) {\n this.parsedPath = ypath.YPath.clone(parsedPath).concat(\n '/' + ypath.YPath.escapeSpecialCharacters(this.title),\n );\n this.parsedPathError = {\n message: `Node name cannot be parsed, try to enable 'Escape and highlight' option in your settings. `,\n inner_errors: [e],\n };\n }\n this.path = this.parsedPath.stringify();\n this.pathState = prepareNavigationState(\n this.parsedPath,\n transaction,\n undefined,\n contentMode,\n );\n\n // RESOURCES\n this.recursiveResourceUsage = attributes.recursive_resource_usage;\n\n this.dataWeight = ypath.getValue(this, '/@data_weight');\n this.size = Node.getResource(this, 'disk_space');\n this.sizePerMedium = Node.getResource(this, 'disk_space_per_medium');\n this.chunks = Node.getResource(this, 'chunk_count');\n this.nodes = Node.getResource(this, 'node_count');\n this.tabletStaticMemory = Node.getResource(this, 'tablet_static_memory');\n this.tablets = Node.getResource(this, 'tablet_count');\n this.masterMemory = Node.getResource(this, 'master_memory');\n\n this.locks = attributes.lock_count;\n\n this.account = attributes.account;\n this.modified = attributes.modification_time;\n this.created = attributes.creation_time;\n\n // LINKS\n if (this.type === 'link') {\n this.linkParsedPath = ypath.YPath.clone(this.parsedPath).concat('&');\n this.linkPathState = prepareNavigationState(this.linkParsedPath, transaction);\n this.targetPath = attributes.target_path;\n this.targetPathBroken = attributes.broken;\n this.targetPathState = this.targetPath\n ? prepareNavigationState(\n ypath.YPath.create(this.targetPath, 'absolute'),\n transaction,\n )\n : undefined;\n }\n\n // TABLE\n if (this.type === 'table') {\n this.dynamic = attributes.dynamic;\n this.rows = attributes.row_count;\n this.unmergedRows = attributes.unmerged_row_count;\n this.chunkRows = attributes.chunk_row_count;\n this.iconType = this.dynamic ? 'table_dynamic' : 'table';\n\n if (this.dynamic) {\n this.tabletState = attributes.tablet_state;\n }\n }\n }\n}\n","import chunk_ from 'lodash/chunk';\nimport filter_ from 'lodash/filter';\nimport findIndex_ from 'lodash/findIndex';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {prepareRequest, saveRequestCancellation} from '../../../../utils/navigation';\nimport {\n APPLY_CUSTOM_SORT,\n FETCH_NODES,\n NAVIGATION_MAP_NODE_TABLE_ID,\n SELECT_ALL,\n SET_CONTENT_MODE,\n SET_MEDIUM_TYPE,\n SET_SELECTED_ITEM,\n SET_TEXT_FILTER,\n UPDATE_RESOURCE_USAGE,\n} from '../../../../constants/navigation';\nimport {\n getFilteredNodes,\n getLastSelected,\n getNodesData,\n getSelected,\n getSortedNodes,\n isRootNode,\n shouldApplyCustomSort,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {changeColumnSortOrder} from '../../../../store/actions/tables';\nimport {RumWrapper, YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {getBatchError, showErrorPopup} from '../../../../utils/utils';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport hammer from '../../../../common/hammer';\nimport {GENERIC_ERROR_MESSAGE} from '../../../../constants';\nimport {isSupportedEffectiveExpiration} from '../../../../store/selectors/thor/support';\nimport {waitForFontFamilies} from '../../../../store/actions/global/fonts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction getList(path, transaction, cluster, allowEffectiveExpiration) {\n const id = new RumWrapper(cluster, RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE);\n return id.fetch(\n YTApiId.navigationListNodes,\n ytApiV3Id.list(\n YTApiId.navigationListNodes,\n prepareRequest({\n attributes: [\n 'type',\n 'dynamic',\n 'row_count', // Deprecated\n 'unmerged_row_count', // Deprecated\n 'chunk_row_count',\n 'modification_time',\n 'creation_time',\n 'resource_usage',\n 'data_weight',\n 'account',\n 'target_path',\n 'broken',\n 'lock_count',\n 'tablet_state',\n '_restore_path',\n 'expiration_time',\n 'expiration_timeout',\n ...(allowEffectiveExpiration ? ['effective_expiration'] : []),\n ...(UIFactory.getNavigationMapNodeSettings()?.additionalAttributes || []),\n ],\n path,\n transaction,\n }),\n saveRequestCancellation,\n ),\n );\n}\n\nexport function fetchNodes() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n const cluster = getCluster(state);\n\n const allowEffectiveExpiration = isSupportedEffectiveExpiration(state);\n\n dispatch({type: FETCH_NODES.REQUEST});\n return dispatch(\n waitForFontFamilies(getList(path, transaction, cluster, allowEffectiveExpiration)),\n )\n .then(ypath.getValue)\n .then((data) => {\n dispatch({\n type: FETCH_NODES.SUCCESS,\n data,\n });\n\n const applyCustomSort = shouldApplyCustomSort(getState());\n dispatch({\n type: APPLY_CUSTOM_SORT,\n data: applyCustomSort ? 'date' : '',\n });\n if (applyCustomSort) {\n dispatch(\n changeColumnSortOrder({\n tableId: NAVIGATION_MAP_NODE_TABLE_ID,\n columnName: 'name',\n asc: false,\n }),\n );\n }\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: FETCH_NODES.FAILURE,\n data: {\n message: 'Could not load list. ' + GENERIC_ERROR_MESSAGE,\n details: error,\n },\n });\n } else {\n dispatch({type: FETCH_NODES.CANCELLED});\n }\n });\n };\n}\n\nexport function updateResourceUsage() {\n const BATCH_LIMIT = 200;\n\n function updatedNodeData(nodeValue, newData) {\n return newData\n ? {\n $value: nodeValue.$value,\n $attributes: {\n ...nodeValue.$attributes,\n recursive_resource_usage: newData,\n },\n }\n : nodeValue;\n }\n\n return (dispatch, getState) => {\n const state = getState();\n\n let nodes = getFilteredNodes(state);\n nodes = filter_(nodes, (node) => !node.$attributes.recursive_resource_usage);\n\n if (isRootNode(state) || nodes.length === 0) {\n return;\n }\n\n dispatch({type: UPDATE_RESOURCE_USAGE.REQUEST});\n\n const nodesChunks = chunk_(nodes, BATCH_LIMIT);\n const batchedRequests = map_(nodesChunks, (nodesChunk) => {\n const requests = map_(nodesChunk, (node) => {\n return {\n command: 'get',\n parameters: {\n path: node.path + '&/@recursive_resource_usage',\n timeout: 60 * 1000,\n },\n };\n });\n\n return ytApiV3Id.executeBatch(YTApiId.navigationResourceUsage, {requests});\n });\n\n Promise.all(batchedRequests)\n .then((resultChunks) => {\n const dataMap = {};\n\n const errorResults = [];\n\n forEach_(nodes, (node, index) => {\n const resultChunkIndex = Math.floor(index / BATCH_LIMIT);\n const resultChunk = resultChunks[resultChunkIndex];\n const item = resultChunk[index % BATCH_LIMIT];\n\n if (item.error) {\n errorResults.push(item);\n } else if (item.output) {\n dataMap[node.$value] = item.output;\n }\n });\n\n dispatch({\n type: UPDATE_RESOURCE_USAGE.SUCCESS,\n data: map_(getNodesData(state), (nodeData) =>\n updatedNodeData(nodeData, dataMap[nodeData.$value]),\n ),\n });\n\n const error = getBatchError(errorResults, 'Failed to get resource usage');\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: UPDATE_RESOURCE_USAGE.FAILURE,\n data: {\n message: 'Failed to load resources. ' + GENERIC_ERROR_MESSAGE,\n details: error,\n },\n });\n const toast = new Toaster();\n toast.add({\n theme: 'danger',\n name: 'map_node_update_resources',\n timeout: 500000,\n title: 'Resource loading error',\n content: error ? error.message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n } else {\n dispatch({\n type: UPDATE_RESOURCE_USAGE.CANCELLED,\n });\n }\n });\n };\n}\n\nexport function setFilter(filter) {\n return (dispatch, getState) => {\n const path = getPath(getState());\n\n dispatch({\n type: SET_TEXT_FILTER,\n data: {filter, path},\n });\n };\n}\n\nexport function setContentMode(contentMode) {\n return {\n type: SET_CONTENT_MODE,\n data: contentMode,\n };\n}\n\nexport function setMediumType(mediumType) {\n return {\n type: SET_MEDIUM_TYPE,\n data: mediumType,\n };\n}\n\nexport function setSelectedItem(name, shiftKey) {\n return (dispatch, getState) => {\n const state = getState();\n const selected = {...getSelected(state)};\n if (selected[name] && !shiftKey) {\n delete selected[name];\n } else {\n selected[name] = true;\n }\n\n const lastSelected = getLastSelected(state);\n if (lastSelected && shiftKey) {\n const nodes = getSortedNodes(state);\n const lastIndex = findIndex_(nodes, (item) => lastSelected === item.name);\n if (-1 !== lastIndex) {\n const nameIndex = findIndex_(nodes, (item) => item.name === name);\n if (-1 !== nameIndex && lastIndex !== nameIndex) {\n const from = Math.min(lastIndex, nameIndex);\n const to = Math.max(lastIndex, nameIndex);\n for (let i = from; i <= to; ++i) {\n const item = nodes[i];\n selected[item.name] = true;\n }\n }\n }\n }\n\n dispatch({\n type: SET_SELECTED_ITEM,\n data: {selected, lastSelected: selected[name] ? name : undefined},\n });\n };\n}\n\nexport function selectAll(isAllSelected) {\n return (dispatch, getState) => {\n let selected = {};\n\n if (!isAllSelected) {\n const allNodes = getFilteredNodes(getState());\n\n selected = reduce_(\n allNodes,\n (res, node) => {\n res[ypath.getValue(node)] = true;\n return res;\n },\n {},\n );\n }\n\n dispatch({\n type: SELECT_ALL,\n data: {selected},\n });\n };\n}\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport {getIsAllSelected} from '../../../../store/selectors/navigation/content/map-node';\nimport {selectAll} from '../../../../store/actions/navigation/content/map-node';\n\nexport default function Chooser() {\n const dispatch = useDispatch();\n const isAllSelected = useSelector(getIsAllSelected);\n const handleSelectChange = useCallback(() => {\n dispatch(selectAll(isAllSelected));\n }, [dispatch, isAllSelected]);\n\n return <Checkbox id=\"all\" size=\"l\" checked={isAllSelected} onChange={handleSelectChange} />;\n}\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {RootState} from '../../../../store/reducers';\nimport {RemoteCopyModalStateAction} from '../../../../store/reducers/navigation/modals/remote-copy-modal';\nimport {REMOTE_COPY_MODAL_PARTIAL} from '../../../../constants/navigation/modals';\nimport {RemoteCopyParams} from '../../../../../@types/types';\nimport axios from 'axios';\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {showErrorPopup, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {YTError} from '../../../../types';\nimport {WithAttrs} from '../../../../utils/cypress-attributes';\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\n\ntype RemoteCopyThunkAction = ThunkAction<any, RootState, any, RemoteCopyModalStateAction>;\n\nexport function showRemoteCopyModal(paths: Array<string>): RemoteCopyThunkAction {\n return (dispatch) => {\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {\n path,\n attributes: ['compression_codec', 'erasure_codec'],\n },\n };\n });\n\n return wrapApiPromiseByToaster(\n ytApiV3.executeBatch<WithAttrs<{compression_codec?: string; erasure_codec?: string}>>({\n requests,\n }),\n {\n toasterName: 'remoteCopyAttributes',\n skipSuccessToast: true,\n errorContent(e: YTError) {\n return (\n <span>\n Failed to load attributes\n <ClickableText onClick={() => showErrorPopup(e)}>Details</ClickableText>\n </span>\n );\n },\n errorTitle: 'Failed to load attributes',\n batchType: 'v3',\n },\n )\n .then((results) => {\n const attributesMap = reduce_(\n paths,\n (acc, path, index) => {\n acc[path] = results[index]?.output?.$attributes;\n return acc;\n },\n {} as Record<string, unknown>,\n );\n dispatch({\n type: REMOTE_COPY_MODAL_PARTIAL,\n data: {paths, showModal: true, error: undefined, attributesMap},\n });\n })\n .catch((error) => {\n dispatch({type: REMOTE_COPY_MODAL_PARTIAL, data: {paths, showModal: true, error}});\n });\n };\n}\n\nexport function hideRemoteCopyModal(): RemoteCopyThunkAction {\n return (dispatch) => {\n dispatch({type: REMOTE_COPY_MODAL_PARTIAL, data: {showModal: false}});\n };\n}\n\nexport function remoteCopy(params: RemoteCopyParams): RemoteCopyThunkAction {\n return (dispatch) => {\n return axios.post<string>('/api/remote-copy', params).then(({data: id}) => {\n dispatch(hideRemoteCopyModal());\n const {dstCluster} = params;\n\n const toaster = new Toaster();\n toaster.add({\n theme: 'success',\n name: 'remoteCopyStarted',\n autoHiding: 500000,\n title: 'Remote copy',\n content: (\n <span>\n <Link url={`/${dstCluster}/operations/${id}`}>{id}</Link> operation started\n </span>\n ),\n });\n });\n };\n}\n","import React, {useCallback, useMemo} from 'react';\n\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport some_ from 'lodash/some';\n\nimport {useDispatch, useSelector} from 'react-redux';\nimport block from 'bem-cn-lite';\n\nimport Icon from '../../../../components/Icon/Icon';\nimport Button from '../../../../components/Button/Button';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {inTrash} from '../../../../utils/navigation/restore-object';\nimport {restoreObjects} from '../../../../store/actions/navigation/modals/restore-object';\nimport {openDeleteModal} from '../../../../store/actions/navigation/modals/delete-object';\nimport {OPEN_MOVE_OBJECT_POPUP} from '../../../../constants/navigation/modals/move-object';\nimport {OPEN_COPY_OBJECT_POPUP} from '../../../../constants/navigation/modals/copy-object';\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {\n getSelectedNodes,\n getSelectedNodesAllowedDynTablesActions,\n isSelected,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {showNavigationAttributesEditor} from '../../../../store/actions/navigation/modals/attributes-editor';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport copyToClipboard from 'copy-to-clipboard';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport {selectAll} from '../../../../store/actions/navigation/content/map-node';\nimport {showDynTablesStateModalByNodes} from '../../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {showRemoteCopyModal} from '../../../../store/actions/navigation/modals/remote-copy-modal';\nimport './MultipleActions.scss';\n\nconst b = block('multiple-actions');\n\nexport default function MultipleActions(props: {className: string}) {\n const {className} = props;\n\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n const isOneSelected = useSelector(isSelected);\n const selectedNodes = useSelector(getSelectedNodes);\n const isTooLarge = selectedNodes.length > 1000;\n\n const dynTablesActions = useSelector(getSelectedNodesAllowedDynTablesActions);\n\n const hasRestoreButton = useMemo(() => {\n return !some_(selectedNodes, ({path}) => !inTrash(path));\n }, [selectedNodes]);\n\n const handleDeleteClick = useCallback(() => {\n dispatch(openDeleteModal(selectedNodes, true));\n }, [dispatch, selectedNodes]);\n\n const allowModifyActions = !isOneSelected || isTooLarge;\n\n const dropdownButton = useMemo(\n () => <Button disabled={allowModifyActions}>More actions</Button>,\n [isOneSelected, isTooLarge],\n );\n\n const restoreMoveCopy = useMemo(() => {\n const res = [\n {\n text: 'Copy selected',\n icon: <Icon awesome=\"copy\" face=\"solid\" />,\n action: () => {\n dispatch(\n openEditingPopup(\n path,\n path + '/',\n OPEN_COPY_OBJECT_POPUP,\n true,\n selectedNodes,\n ),\n );\n },\n },\n {\n text: 'Move selected',\n icon: <Icon awesome=\"file-export\" face=\"solid\" />,\n action: () => {\n dispatch(\n openEditingPopup(\n path,\n path + '/',\n OPEN_MOVE_OBJECT_POPUP,\n true,\n selectedNodes,\n ),\n );\n },\n },\n ];\n if (hasRestoreButton) {\n res.splice(0, 0, {\n text: 'Restore selected',\n icon: <Icon awesome=\"undo\" />,\n action: () => {\n dispatch(restoreObjects(selectedNodes));\n },\n });\n }\n return res;\n }, [dispatch, hasRestoreButton, path, selectedNodes]);\n\n const transferItem = useMemo(() => {\n if (selectedNodes.length !== 1) {\n return [];\n }\n\n const [{type}] = selectedNodes;\n if (type !== 'table') {\n return [];\n }\n\n return [\n {\n text: 'Remote copy selected',\n icon: <Icon awesome=\"clone\" />,\n action: () => {\n dispatch(showRemoteCopyModal(map_(selectedNodes, 'path')));\n },\n },\n ];\n }, [selectedNodes]);\n\n const editItem = useMemo(() => {\n return {\n text: 'Edit selected',\n icon: <Icon awesome={'pencil-alt'} />,\n action: () => {\n const paths = map_(selectedNodes, 'path');\n dispatch(showNavigationAttributesEditor(paths));\n },\n };\n }, [selectedNodes]);\n\n const mergeSortSection = useMemo(() => {\n const allowSortMerge = !some_(selectedNodes, (node) => {\n return node.type !== 'table';\n });\n if (!allowSortMerge) {\n return [];\n }\n return [\n {\n text: 'Sort selected',\n icon: <Icon awesome={'sort'} />,\n action: () => {\n const paths = map_(selectedNodes, 'path');\n dispatch(showTableSortModal(paths));\n },\n },\n {\n text: 'Merge selected',\n icon: <Icon awesome={'code-merge'} />,\n action: () => {\n const paths = map_(selectedNodes, 'path');\n dispatch(showTableMergeModal(paths));\n },\n },\n ];\n }, [dispatch, selectedNodes]);\n\n const dynTablesSection = useMemo(() => {\n if (isEmpty_(dynTablesActions)) {\n return [];\n }\n\n const {mount, unmount, freeze, unfreeze} = dynTablesActions;\n const items = [\n ...(!mount\n ? []\n : [\n {\n text: 'Mount',\n icon: <Icon awesome={'link'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('mount', selectedNodes));\n },\n },\n ]),\n ...(!unmount\n ? []\n : [\n {\n text: 'Unmount',\n icon: <Icon awesome={'unlink'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('unmount', selectedNodes));\n },\n },\n ]),\n ...(!freeze\n ? []\n : [\n {\n text: 'Freeze',\n icon: <Icon awesome={'snowflake'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('freeze', selectedNodes));\n },\n },\n ]),\n ...(!unfreeze\n ? []\n : [\n {\n text: 'Unfreeze',\n icon: <Icon awesome={'flame'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('unfreeze', selectedNodes));\n },\n },\n ]),\n ];\n\n if (!items.length) {\n return [];\n }\n\n return items;\n }, [dispatch, selectedNodes, dynTablesActions]);\n\n const items = useMemo(() => {\n return [\n [editItem],\n mergeSortSection,\n restoreMoveCopy,\n transferItem,\n dynTablesSection,\n ].filter((e) => e.length);\n }, [restoreMoveCopy, editItem, mergeSortSection]);\n\n const onCopyPathClick = React.useCallback(() => {\n const res = map_(selectedNodes, 'path').join('\\n');\n copyToClipboard(res);\n }, [selectedNodes]);\n\n const handleClearAll = React.useCallback(() => {\n dispatch(selectAll(true));\n }, [dispatch]);\n\n return (\n <span className={b(null, className)}>\n <span className={b('item')}>\n <Button\n title=\"Delete selected nodes\"\n disabled={allowModifyActions}\n onClick={handleDeleteClick}\n >\n <Icon awesome=\"trash-alt\" />\n Remove selected\n </Button>\n </span>\n\n <span className={b('item')}>\n <ClipboardButton\n buttonText={'Copy paths'}\n title=\"Copy selected paths\"\n onCopy={onCopyPathClick}\n />\n </span>\n\n <span className={b('item')}>\n <DropdownMenu\n disabled={allowModifyActions}\n switcher={dropdownButton}\n items={items}\n />\n </span>\n\n <span className={b('item')}>\n <ClickableText onClick={handleClearAll}>Clear all</ClickableText>\n </span>\n </span>\n );\n}\n","import React from 'react';\nimport {createSelector} from 'reselect';\n\nimport every_ from 'lodash/every';\nimport filter_ from 'lodash/filter';\nimport findIndex_ from 'lodash/findIndex';\nimport includes_ from 'lodash/includes';\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\nimport transform_ from 'lodash/transform';\nimport values_ from 'lodash/values';\n\nimport moment from 'moment';\n\nimport ypath from '../../../../common/thor/ypath';\nimport hammer from '../../../../common/hammer';\nimport {getParsedPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {makeGetSetting} from '../../../../store/selectors/settings';\nimport {NAMESPACES, SettingName} from '../../../../../shared/constants/settings';\nimport {ContentMode, NAVIGATION_MAP_NODE_TABLE_ID} from '../../../../constants/navigation';\nimport {Node} from '../../../../utils/navigation/content/map-nodes/node';\nimport {MediumType} from '../../../../constants/index';\nimport Chooser from '../../../../pages/navigation/content/MapNode/Chooser';\nimport MultipleActions from '../../../../pages/navigation/content/MapNode/MultipleActions';\nimport {DYN_TABLES_ALLOWED_ACTIONS_BY_STATE} from './map-node-ts';\n\nexport const getFilterState = (state) => state.navigation.content.mapNode.filter;\nexport const getMediumType = (state) => state.navigation.content.mapNode.mediumType;\n\nconst getCustomSort = (state) => state.navigation.content.mapNode.customSort;\nconst getTableColumns = createSelector(\n [getCustomSort, getMediumType],\n (customSort, mediumType) => ({\n chooser: {\n sort: false,\n align: 'center',\n renderHeader: () => <Chooser />,\n },\n icon: {\n sort: false,\n caption: '',\n align: 'center',\n },\n name: {\n sort: (node) => node.titleUnquoted,\n caption: () => {\n return customSort === 'date' ? 'Date' : 'Name';\n },\n align: 'left',\n },\n locks: {\n sort: (node) => node.locks,\n align: 'center',\n },\n account: {\n sort: (node) => node.account,\n align: 'left',\n },\n modification_time: {\n sort: (node) => moment(node.modified).unix(),\n align: 'right',\n },\n creation_time: {\n sort: (node) => moment(node.created).unix(),\n align: 'right',\n },\n disk_space: {\n get: (node) => {\n return mediumType === MediumType.ALL ? node.size : node.sizePerMedium?.[mediumType];\n },\n sort: true,\n align: 'right',\n },\n data_weight: {\n get: (node) => node.dataWeight,\n sort: true,\n align: 'right',\n },\n chunk_count: {\n get: (node) => node.chunks,\n sort: true,\n align: 'right',\n },\n node_count: {\n get: (node) => node.nodes,\n sort: true,\n align: 'right',\n },\n row_count: {\n get: (node) => node.chunkRows,\n sort: true,\n align: 'right',\n },\n tablet_static_memory: {\n get: (node) => node.tabletStaticMemory,\n caption: 'Tablet st.',\n title: 'Tablet static memory',\n sort: true,\n align: 'right',\n },\n master_memory: {\n get: (node) => node.masterMemory,\n caption: 'Master mem.',\n title: 'Master memory',\n sort: true,\n align: 'right',\n },\n tablet_count: {\n get: (node) => node.tablets,\n sort: true,\n align: 'right',\n },\n actions: {\n sort: false,\n caption: '',\n align: 'center',\n },\n multipleActions: {\n sort: false,\n align: 'center',\n renderHeader: () => <MultipleActions />,\n },\n }),\n);\nexport const getPreparedTableColumns = createSelector(getTableColumns, (columns) =>\n transform_(\n columns,\n (preparedColumns, column, name) => {\n preparedColumns[name] = {\n ...column,\n name,\n caption: typeof column.caption === 'function' ? column.caption() : column.caption,\n };\n },\n {},\n ),\n);\n\nexport const getContentMode = (state) => state.navigation.content.mapNode.contentMode;\nexport const getSelected = (state) => state.navigation.content.mapNode.selected;\nexport const getLastSelected = (state) => state.navigation.content.mapNode.lastSelected;\nconst getTextFilter = (state) => state.navigation.content.mapNode.filter;\n\nconst getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\nexport const getNodesData = (state) => state.navigation.content.mapNode.nodesData;\n\nconst getNodes = createSelector(\n [getNodesData, getParsedPath, getTransaction, getContentMode],\n (nodesData, parsedPath, transaction, contentMode) => {\n return map_(\n nodesData,\n (data) =>\n new Node(data, {\n parsedPath,\n transaction,\n contentMode: contentMode !== ContentMode.DEFAULT ? contentMode : undefined,\n }),\n );\n },\n);\n\nexport const getFilteredNodes = createSelector(\n [getNodes, makeGetSetting, getTextFilter],\n (nodes, getSetting, filter) => {\n const useSmartFilter = getSetting('useSmartFilter', NAMESPACES.NAVIGATION);\n if (useSmartFilter) {\n return hammer.filter.multifilter({\n data: nodes,\n input: filter,\n factors: ['titleUnquoted'],\n });\n } else {\n return hammer.filter.filter({\n data: nodes,\n input: filter,\n factors: ['titleUnquoted'],\n });\n }\n },\n);\n\nexport const getSelectedNodes = createSelector(\n [getSelected, getNodes, makeGetSetting, getSortState, getTableColumns],\n (selected, allNodes, getSetting, sortState, columns) => {\n const nodes = filter_(allNodes, (node) => Boolean(selected[ypath.getValue(node)]));\n const groupNodes = getSetting(SettingName.NAVIGATION.GROUP_NODES, NAMESPACES.NAVIGATION);\n const groupByType = groupNodes && {\n get: (node) => TYPE_WEIGHTS[node.type] || 0,\n asc: false,\n };\n\n return hammer.utils.sort(nodes, sortState, columns, {\n groupBy: groupByType,\n });\n },\n);\n\nexport const getSelectedPathMap = createSelector([getSelectedNodes], (nodes) => {\n return reduce_(\n nodes,\n (acc, {path}) => {\n acc[path] = true;\n return acc;\n },\n {},\n );\n});\n\nexport const isSelected = createSelector(getSelected, (selected) => {\n return includes_(values_(selected), true);\n});\n\nexport const getIsAllSelected = createSelector(\n [getSelected, getFilteredNodes],\n (selected, allNodes) => {\n const selectedNodes = keys_(selected);\n\n if (allNodes.length === 0) {\n return false;\n }\n\n return every_(values_(selected)) && selectedNodes.length === allNodes.length;\n },\n);\n\nexport const TYPE_WEIGHTS = map_(\n [\n 'tablet_cell',\n 'cell_node_map',\n 'cell_node',\n 'sys_node',\n 'access_control_object_namespace_map',\n 'access_control_object_namespace',\n 'topmost_transaction_map',\n 'transaction_map',\n 'map_node',\n 'link',\n 'table',\n 'file',\n 'document',\n 'journal',\n 'string_node',\n 'int64_node',\n 'uint64_node',\n 'double_node',\n 'boolean_node',\n ],\n (type, index, types) => ({type, weight: types.length - index}),\n).reduce((res, item) => {\n res[item.type] = item.weight;\n return res;\n}, {});\n\nexport const getSortedNodes = createSelector(\n [getFilteredNodes, getSortState, getTableColumns, makeGetSetting],\n (nodes, sortState, columns, getSetting) => {\n const groupNodes = getSetting(SettingName.NAVIGATION.GROUP_NODES, NAMESPACES.NAVIGATION);\n const groupByType = groupNodes && {\n get: (node) => TYPE_WEIGHTS[node.type] || 0,\n asc: false,\n };\n return hammer.utils.sort(nodes, sortState, columns, {\n groupBy: groupByType,\n });\n },\n);\n\nexport const getNodesInfo = createSelector(getSortedNodes, (nodes) => {\n const sumNodesType = hammer.aggregation.countValues(nodes, 'type');\n\n return map_(Object.entries(sumNodesType), (keyValue) => {\n const [key, value] = keyValue;\n const type = key === 'undefined' ? 'Unknown' : key;\n return {\n type: hammer.format['Readable'](type),\n count: value,\n };\n });\n});\n\nexport const isRootNode = createSelector(\n getParsedPath,\n (parsedPath) => parsedPath.stringify() === '/',\n);\n\nexport const getMapNodeResourcesLoading = (state) =>\n state.navigation.content.mapNode.resourcesLoading;\n\nconst DATE_REGEXP = /^\\d{4}[-]\\d{2}[-]\\d{2}(T\\d{2}:\\d{2}:\\d{2})?(\\.[a-zA-Z0-9]+)?$/;\nexport const shouldApplyCustomSort = createSelector(\n [getNodes, makeGetSetting, getSortState],\n (nodes, getSetting, sortState) =>\n getSetting(SettingName.NAVIGATION.USE_SMART_SORT, NAMESPACES.NAVIGATION) &&\n sortState?.field === 'name' &&\n every_(nodes, (item) => DATE_REGEXP.test(item.name)),\n);\n\nexport const getLoadState = (state) => state.navigation.content.mapNode.loadState;\nexport const getError = (state) => state.navigation.content.mapNode.error;\n\nexport const getSelectedIndex = createSelector(\n [getSortedNodes, getFilterState],\n (nodes, filter) => {\n if (filter) {\n const strictIndex = findIndex_(nodes, ({name}) => name === filter);\n\n if (strictIndex === -1) {\n return findIndex_(nodes, ({name}) => name.startsWith(filter));\n }\n\n return strictIndex;\n }\n\n return 0;\n },\n);\n\nexport const getSelectedNodesDynTablesStates = createSelector([getSelectedNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, item) => {\n if (item.tabletState) {\n acc[item.tabletState] = true;\n }\n return acc;\n },\n {frozen: false, mounted: false, unmounted: false},\n );\n return res;\n});\n\nexport const getSelectedNodesAllowedDynTablesActions = createSelector(\n [getSelectedNodesDynTablesStates],\n (dynTablesStates) => {\n const res = reduce_(\n dynTablesStates,\n (acc, value, state) => {\n if (value) {\n Object.assign(acc, DYN_TABLES_ALLOWED_ACTIONS_BY_STATE[state]);\n }\n return acc;\n },\n {mount: false, unmount: false, freeze: false, unfreeze: false},\n );\n return pickBy_(res, Boolean);\n },\n);\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\nimport {\n LinkToModalAction,\n LinkToState,\n} from '../../../../store/reducers/navigation/modals/link-to-modal';\nimport {RootState} from '../../../../store/reducers';\nimport {LINK_TO_MODAL_PARTIAL} from '../../../../constants/navigation/modals';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {getCluster} from '../../../../store/selectors/global';\nimport Link from '../../../../components/Link/Link';\n\ntype LinkToModalThunkAction<R = any> = ThunkAction<R, RootState, unknown, LinkToModalAction>;\n\nexport function showLinkToModal(\n params: {path?: string; target?: string} = {},\n): LinkToModalThunkAction {\n return (dispatch) => {\n const {path, target} = params;\n dispatch({\n type: LINK_TO_MODAL_PARTIAL,\n data: {path, target, visible: true},\n });\n };\n}\n\nexport function hideLinkToModal(): LinkToModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: LINK_TO_MODAL_PARTIAL,\n data: {visible: false, linkPath: undefined, dstPath: undefined},\n });\n };\n}\n\nexport function createLink(params: Pick<LinkToState, 'path' | 'target'>): LinkToModalThunkAction {\n return (dispatch, getState) => {\n const {target, path} = params;\n const cluster = getCluster(getState());\n\n return ytApiV3\n .create({\n path,\n type: 'link',\n attributes: {target_path: target},\n })\n .then(() => {\n dispatch(hideLinkToModal());\n const toast = new Toaster();\n toast.add({\n name: 'create-link',\n theme: 'success',\n title: 'Link created',\n content: <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link>,\n });\n });\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport metrics from '../../../../common/utils/metrics';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {inTrash} from '../../../../utils/navigation/restore-object';\nimport {getTransaction} from '../../../../store/selectors/navigation';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {OPEN_MOVE_OBJECT_POPUP} from '../../../../constants/navigation/modals/move-object';\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {OPEN_COPY_OBJECT_POPUP} from '../../../../constants/navigation/modals/copy-object';\nimport {openAttributesModal} from '../../../../store/actions/modals/attributes-modal';\nimport {showNavigationAttributesEditor} from '../../../../store/actions/navigation/modals/attributes-editor';\nimport {restoreObject} from '../../../../store/actions/navigation/modals/restore-object';\nimport {updateView} from '../../../../store/actions/navigation';\nimport {openDeleteModal} from '../../../../store/actions/navigation/modals/delete-object';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {showTableEraseModal} from '../../../../store/actions/navigation/modals/table-erase-modal';\nimport {getSelectedNodes} from '../../../../store/selectors/navigation/content/map-node';\nimport {showDynTablesStateModalByPaths} from '../../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {DYN_TABLES_ALLOWED_ACTIONS_BY_STATE} from '../../../../store/selectors/navigation/content/map-node-ts';\nimport {TabletStateType} from '../../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\nimport {showLinkToModal} from '../../../../store/actions/navigation/modals/link-to-modal';\nimport {showRemoteCopyModal} from '../../../../store/actions/navigation/modals/remote-copy-modal';\n\ninterface Props {\n item: {\n name: string;\n type: string;\n dynamic: boolean;\n path: string;\n $attributes: object;\n $value: unknown;\n tabletState: TabletStateType;\n };\n\n onlyDropdown?: boolean;\n dropDownBtnClassName?: string;\n dropDownBtnTheme?: ButtonProps['view'];\n dropDownBtnSize?: ButtonProps['size'];\n}\n\nfunction PathActions(props: Props) {\n const {item} = props;\n const objectPath = item.path;\n\n const dispatch = useDispatch();\n const transaction = useSelector(getTransaction);\n\n const restorePath = ypath.getValue(item.$attributes, '/_restore_path');\n const hasRestoreButton = inTrash(item.path);\n\n const {\n onMove,\n onCopy,\n onLink,\n onShowAttributes,\n onEditAttributes,\n onRestoreClick,\n onDeleteClick,\n onCopyPathClick,\n onSort,\n onErase,\n onMerge,\n onMount,\n onUnmount,\n onFreeze,\n onUnfreeze,\n onTransfer,\n } = React.useMemo(() => {\n const handleUpdateView = (...args: any) => dispatch(updateView(...args));\n\n return {\n onMove(evt: React.MouseEvent) {\n dispatch(openEditingPopup(objectPath, objectPath, OPEN_MOVE_OBJECT_POPUP));\n evt.stopPropagation();\n },\n onCopy(evt: React.MouseEvent) {\n dispatch(openEditingPopup(objectPath, objectPath, OPEN_COPY_OBJECT_POPUP));\n evt.stopPropagation();\n },\n onShowAttributes(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_attributes': 'clicked',\n });\n dispatch(\n openAttributesModal({\n title: item.$value,\n path: item.path,\n } as any),\n );\n evt.stopPropagation();\n },\n onEditAttributes(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_edit_attributes': 'clicked',\n });\n dispatch(showNavigationAttributesEditor([item.path]));\n evt.stopPropagation();\n },\n onRestoreClick(evt: React.MouseEvent) {\n dispatch(restoreObject(objectPath, restorePath, handleUpdateView));\n evt.stopPropagation();\n },\n\n onDeleteClick(evt: React.MouseEvent) {\n metrics.countEvent({'navigation_map-node_delete': 'clicked'});\n dispatch(openDeleteModal(item));\n evt.stopPropagation();\n },\n onCopyPathClick(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_copy-path': 'clicked',\n });\n evt.stopPropagation();\n },\n onSort(e: React.MouseEvent) {\n dispatch(showTableSortModal([item.path]));\n e.stopPropagation();\n },\n onErase(evt: React.MouseEvent) {\n dispatch(showTableEraseModal(item.path));\n evt.stopPropagation();\n },\n onMerge(evt: React.MouseEvent) {\n dispatch(showTableMergeModal([item.path]));\n evt.stopPropagation();\n },\n onMount(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'mount'));\n evt.stopPropagation();\n },\n onUnmount(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'unmount'));\n evt.stopPropagation();\n },\n onFreeze(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'freeze'));\n evt.stopPropagation();\n },\n onUnfreeze(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'unfreeze'));\n evt.stopPropagation();\n },\n onLink(evt: React.MouseEvent) {\n dispatch(showLinkToModal({target: item.path}));\n evt.stopPropagation();\n },\n onTransfer(evt: React.MouseEvent) {\n dispatch(showRemoteCopyModal([item.path]));\n evt.stopPropagation();\n },\n };\n }, [dispatch, objectPath, item, restorePath]);\n\n const selectedNodes = useSelector(getSelectedNodes);\n if (selectedNodes.length) {\n return null;\n }\n\n const secondGroup = [\n {\n text: 'Move',\n icon: <Icon awesome=\"file-export\" face=\"solid\" />,\n action: onMove,\n },\n {\n text: 'Copy',\n icon: <Icon awesome=\"copy\" face=\"solid\" />,\n action: onCopy,\n },\n {\n text: 'Link',\n icon: <Icon awesome=\"link\" face=\"solid\" />,\n action: onLink,\n },\n {\n text: 'Delete',\n icon: <Icon awesome=\"trash-alt\" />,\n action: onDeleteClick,\n },\n ];\n\n const firstGroup: Array<{\n text: string;\n icon?: React.ReactNode;\n action: (evt: any) => void;\n }> = [\n {\n text: 'Attributes',\n icon: <Icon awesome=\"at\" />,\n action: onShowAttributes,\n },\n {\n text: 'Edit',\n icon: <Icon awesome=\"pencil-alt\" />,\n action: onEditAttributes,\n },\n ];\n\n if (hasRestoreButton) {\n firstGroup.unshift({\n text: 'Restore',\n icon: <Icon awesome=\"undo\" />,\n action: onRestoreClick,\n });\n }\n const menuItems = [firstGroup];\n\n if (item.type === 'table') {\n const isDynamic = item.dynamic;\n if (isDynamic) {\n const {tabletState} = item;\n const {mount, unmount, freeze, unfreeze} =\n DYN_TABLES_ALLOWED_ACTIONS_BY_STATE[tabletState] || {};\n const items = [\n ...(mount\n ? [\n {\n text: 'Mount',\n icon: <Icon awesome={'link'} />,\n action: onMount,\n },\n ]\n : []),\n ...(unmount\n ? [\n {\n text: 'Unmount',\n icon: <Icon awesome={'unlink'} />,\n action: onUnmount,\n },\n ]\n : []),\n ...(freeze\n ? [\n {\n text: 'Freeze',\n icon: <Icon awesome={'snowflake'} />,\n action: onFreeze,\n },\n ]\n : []),\n ...(unfreeze\n ? [\n {\n text: 'Unfreeze',\n icon: <Icon awesome={'flame'} />,\n action: onUnfreeze,\n },\n ]\n : []),\n ];\n if (items.length) {\n menuItems.push(items);\n }\n }\n menuItems.push([\n {\n text: 'Sort',\n icon: <Icon awesome={'sort'} />,\n action: onSort,\n },\n ...(!isDynamic\n ? [\n {\n text: 'Erase',\n icon: <Icon awesome={'eraser'} />,\n action: onErase,\n },\n ]\n : []),\n {\n text: 'Merge',\n icon: <Icon awesome={'code-merge'} />,\n action: onMerge,\n },\n ]);\n }\n if (item.type === 'table' || item.type === 'file') {\n menuItems.push([\n {\n text: 'Remote copy',\n icon: <Icon awesome={'clone'} />,\n action: onTransfer,\n },\n ]);\n }\n\n menuItems.push(secondGroup);\n\n const commonProps = {\n view: 'flat-secondary' as const,\n size: 'm' as const,\n };\n\n const {\n onlyDropdown,\n dropDownBtnClassName,\n dropDownBtnTheme = 'flat-secondary',\n dropDownBtnSize = 'm',\n } = props;\n\n return (\n <React.Fragment>\n {!onlyDropdown && (\n <Button\n {...commonProps}\n title=\"Delete node\"\n disabled={Boolean(transaction)}\n onClick={onDeleteClick}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n )}\n\n {!onlyDropdown && (\n <ClipboardButton\n {...commonProps}\n text={item.path}\n title=\"Copy path\"\n onCopy={onCopyPathClick}\n />\n )}\n\n <DropdownMenu\n switcher={\n <Button\n size={dropDownBtnSize}\n className={dropDownBtnClassName}\n view={dropDownBtnTheme}\n >\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n );\n}\n\nexport default React.memo(PathActions);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport './EditTableAction.scss';\n\nimport {getNavigationPathAttributes} from '../../../../../store/selectors/navigation/navigation';\nimport PathActions from '../../MapNode/PathActions';\n\nconst block = cn('edit-table-actions');\n\nexport default function EditTableActions() {\n const path = useSelector(getPath);\n const attributes = useSelector(getNavigationPathAttributes);\n\n return (\n <PathActions\n onlyDropdown={true}\n dropDownBtnClassName={block('button')}\n dropDownBtnTheme={'outlined'}\n dropDownBtnSize={'m'}\n item={{\n name: '',\n path,\n type: 'table',\n dynamic: ypath.getValue(attributes, '/dynamic'),\n tabletState: ypath.getValue(attributes, '/tablet_state'),\n $value: undefined,\n $attributes: attributes,\n }}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {getNavigationTableDataLensButtonAlerts} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {Button} from '@gravity-ui/uikit';\nimport {Secondary, Warning} from '../../../../../components/Text/Text';\nimport Link from '../../../../../components/Link/Link';\nimport {getNavigationPathAttributesLoadState} from '../../../../../store/selectors/navigation/navigation';\nimport {LOADING_STATUS} from '../../../../../constants';\nimport {docsUrl} from '../../../../../config';\nimport {uiSettings} from '../../../../../config/ui-settings';\nimport UIFactory from '../../../../../UIFactory';\n\nexport default function DataLensButton({className}: {className: string}) {\n const loaded = useSelector(getNavigationPathAttributesLoadState) === LOADING_STATUS.LOADED;\n const cluster: string = useSelector(getCluster);\n const path = useSelector(getPath);\n const {isEmptySchema, enableDynamicStoreRedRequired} = useSelector(\n getNavigationTableDataLensButtonAlerts,\n );\n\n const {datalensBaseUrl, datalensAllowedCluster} = uiSettings;\n\n if (!datalensBaseUrl || !new Set(datalensAllowedCluster).has(cluster)) {\n return null;\n }\n const showTooltip = isEmptySchema || enableDynamicStoreRedRequired;\n\n const url = `${datalensBaseUrl}/datasets/new?id=CHYT_${cluster.toUpperCase()}&ytPath=${path}&action=autoCreate`;\n\n const btn = (\n <Button\n href={url}\n view={'action'}\n target=\"_blank\"\n title=\"Create dataset in DataLens\"\n disabled={!loaded || showTooltip}\n >\n <Icon awesome={'chart-bar'} />\n DataLens\n </Button>\n );\n\n const linkUrl = UIFactory.docsUrls['chyt:yt_tables#dynamic'];\n const content = !showTooltip ? (\n btn\n ) : (\n <Tooltip\n content={\n <Warning>\n {isEmptySchema && <div>Please make sure that the table has schema.</div>}\n {enableDynamicStoreRedRequired && (\n <div>\n Please make sure that the table has enabled{' '}\n <Secondary>enable_dynamic_store_read</Secondary> attribute.\n {linkUrl !== '' && docsUrl(<Link url={linkUrl}> Help </Link>)}\n </div>\n )}\n </Warning>\n }\n >\n {btn}\n </Tooltip>\n );\n\n return <div className={className}>{content}</div>;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport {Sticky} from 'react-sticky';\nimport {connect} from 'react-redux';\n\nimport ColumnSelectorButton from '../../../../../pages/navigation/content/Table/TableOverview/ColumnSelectorButton';\nimport FullScreenButton from '../../../../../pages/navigation/content/Table/TableOverview/FullScreenButton';\nimport SettingsButton from '../../../../../pages/navigation/content/Table/TableOverview/SettingsButton';\nimport JupyterButton from '../../../../../pages/navigation/content/Table/TableOverview/JupyterButton';\nimport TableActions from '../../../../../pages/navigation/content/Table/TableOverview/TableActions';\nimport OffsetInput from '../../../../../pages/navigation/content/Table/TableOverview/OffsetInput';\nimport Paginator from '../../../../../pages/navigation/content/Table/TableOverview/Paginator';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport {CreateQueryFromTable} from './CreateQueryFromTable';\n\nimport {HEADER_HEIGHT} from '../../../../../constants/index';\n\nimport './TableOverview.scss';\nimport EditTableActions from './EditTableActions';\nimport DataLensButton from './DatalensButton';\nimport {isQueryTrackerAllowed} from '../../../../../store/selectors/global/experimental-pages';\n\nconst block = cn('navigation-table-overview');\n\nTableOverview.propTypes = {\n // from connect\n isFullScreen: PropTypes.bool.isRequired,\n isSplit: PropTypes.bool.isRequired,\n allowQueryTracker: PropTypes.bool,\n};\n\nfunction TableOverview(props) {\n const {isFullScreen, isSplit, allowQueryTracker} = props;\n\n // TODO: add sticky for the Overview in the split mode https://github.com/captivationsoftware/react-sticky/issues/282\n return (\n <ErrorBoundary>\n <Sticky topOffset={isFullScreen ? HEADER_HEIGHT : -HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block({\n sticky: isSticky && !isSplit,\n fullscreen: isFullScreen,\n split: isSplit,\n })}\n >\n <Paginator block={block} />\n <OffsetInput block={block} />\n {!isFullScreen && <ColumnSelectorButton block={block} />}\n {!isFullScreen && <SettingsButton block={block} />}\n {!isFullScreen && allowQueryTracker && (\n <CreateQueryFromTable className={block('query')} />\n )}\n {!isFullScreen && <JupyterButton block={block} />}\n {!isFullScreen && <DataLensButton className={block('datalens')} />}\n {!isFullScreen && <TableActions block={block} />}\n <FullScreenButton block={block} />\n {!isFullScreen && <EditTableActions />}\n </div>\n )}\n </Sticky>\n </ErrorBoundary>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isFullScreen} = state.navigation.content.table;\n const {isSplit} = state.global.splitScreen;\n\n return {\n isFullScreen,\n isSplit,\n allowQueryTracker: isQueryTrackerAllowed(state),\n };\n};\n\nexport default connect(mapStateToProps)(TableOverview);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport cn from 'bem-cn-lite';\n\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport Query from '../../../../../utils/navigation/content/table/query';\n\nimport {\n getCurrentOffsetValues,\n getIsTableSorted,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n closeOffsetSelectorModal,\n moveOffset,\n} from '../../../../../store/actions/navigation/content/table/pagination';\n\nimport './OffsetSelectorModal.scss';\n\nconst block = cn('offset-selector');\n\nclass OffsetSelectorModal extends Component {\n static itemProps = PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string,\n checked: PropTypes.bool.isRequired,\n });\n\n static propTypes = {\n // from connect\n isOffsetSelectorOpen: PropTypes.bool.isRequired,\n closeOffsetSelectorModal: PropTypes.func.isRequired,\n moveOffset: PropTypes.func.isRequired,\n initialItems: PropTypes.arrayOf(OffsetSelectorModal.itemProps).isRequired,\n isTableSorted: PropTypes.bool.isRequired,\n };\n\n constructor(props) {\n super(props);\n const {initialItems} = this.props;\n this.state = {\n filter: '',\n initialItems,\n items: initialItems,\n };\n }\n\n static getDerivedStateFromProps({initialItems}, state) {\n if (initialItems === state.initialItems) {\n return null;\n }\n return {\n initialItems,\n items: initialItems,\n };\n }\n\n _handleCONFIRMButtonClick = () => {\n const {items} = this.state;\n const {isTableSorted, moveOffset, closeOffsetSelectorModal} = this.props;\n const minKeyValue = isTableSorted ? 'null' : '0';\n const offsetValues = map_(items, (item) => {\n return isEmpty_(item.value) ? minKeyValue : item.value;\n });\n moveOffset(Query.prepareKey(offsetValues));\n closeOffsetSelectorModal();\n };\n\n _handleCANCELButtonClick = () => {\n const {closeOffsetSelectorModal} = this.props;\n this.setState(({initialItems}) => ({items: initialItems}));\n closeOffsetSelectorModal();\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n updateItemValue = (name, value) => {\n this.setState(({items: prevItems}) => {\n const items = [...prevItems];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, value};\n return {items};\n });\n };\n\n _handleInputChange = (name) => (value) => {\n this.updateItemValue(name, value);\n };\n\n renderSearchBox() {\n return (\n <TextInput\n theme=\"normal\"\n size=\"s\"\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n text={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n filterItemsByName(items, filter) {\n const re = new RegExp(escapeRegExp_(filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n renderItems() {\n const {items, filter} = this.state;\n const visibleItems = this.filterItemsByName(items, filter);\n return (\n <div className={block('items')}>\n <div className={block('item-group')}>{this.renderSearchBox()}</div>\n {map_(visibleItems, (item) => {\n return (\n <label\n key={item.name}\n className={block('item-group', {\n disabled: !item.checked,\n })}\n >\n {item.name}\n <div className={block('item')}>\n <TextInput\n theme=\"normal\"\n size=\"s\"\n placeholder=\"\"\n onUpdate={this._handleInputChange(item.name)}\n text={item.value}\n hasClear={true}\n />\n </div>\n </label>\n );\n })}\n </div>\n );\n }\n\n renderContent() {\n return <div className={block('content')}>{this.renderItems()}</div>;\n }\n\n render() {\n const {isOffsetSelectorOpen} = this.props;\n return (\n <Modal\n size=\"m\"\n title=\"Keys\"\n borderless={true}\n visible={isOffsetSelectorOpen}\n confirmText=\"Confirm\"\n onConfirm={this._handleCONFIRMButtonClick}\n onCancel={this._handleCANCELButtonClick}\n content={this.renderContent()}\n className={block()}\n contentClassName={block(null, 'pretty-scroll')}\n />\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {isOffsetSelectorOpen} = state.navigation.content.table;\n const initialItems = getCurrentOffsetValues(state);\n const isTableSorted = getIsTableSorted(state);\n\n return {isOffsetSelectorOpen, initialItems, isTableSorted};\n};\n\nconst mapDispatchToProps = {\n closeOffsetSelectorModal,\n moveOffset,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OffsetSelectorModal);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {\n getColumnsPresetColumns,\n getColumnsPresetError,\n getColumnsPresetHash,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {Warning} from '../../../../../components/Text/Text';\nimport Yson from '../../../../../components/Yson/Yson';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\n\nimport './TableColumnsPresetNotice.scss';\n\nconst block = cn('table-columns-preset-notice');\n\nfunction TableColumnsPresetNotice() {\n const hash = useSelector(getColumnsPresetHash);\n const columns = useSelector(getColumnsPresetColumns);\n const error: any = useSelector(getColumnsPresetError);\n\n if (!hash) {\n return null;\n }\n\n if (error) {\n return (\n <ErrorBlock\n error={error.response?.data || error}\n message={'Cannot load preset of columns'}\n />\n );\n }\n\n console.log(columns);\n\n return (\n <Warning className={block()}>\n <CollapsibleSection\n name={'The table is opened with preset of columns'}\n size={'unset'}\n collapsed\n >\n {!columns?.length ? null : (\n <span>\n {map_(columns, (item, index) => {\n return (\n <React.Fragment key={index}>\n <Yson key={index} value={item} className={block('column')} />\n {index !== columns.length - 1 && ', '}\n </React.Fragment>\n );\n })}\n </span>\n )}\n </CollapsibleSection>\n </Warning>\n );\n}\n\nexport default React.memo(TableColumnsPresetNotice);\n","/* eslint-disable react/prop-types */\nimport {StickyContainer} from 'react-sticky';\nimport React, {useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport DataTableWrapper from '../../../../pages/navigation/content/Table/DataTableWrapper/DataTableWrapper';\nimport TableOverview from '../../../../pages/navigation/content/Table/TableOverview/TableOverview';\nimport ColumnSelectorModal from '../../../../components/ColumnSelectorModal/ColumnSelectorModal';\nimport OffsetSelectorModal from '../../../../pages/navigation/content/Table/OffsetSelectorModal/OffsetSelectorModal';\nimport TableMeta from '../../../../pages/navigation/content/Table/TableMeta/TableMeta';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport FullScreen from '../../../../components/FullScreen/FullScreen';\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {OVERVIEW_HEIGHT} from '../../../../constants/navigation/content/table';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {\n abortAndReset,\n closeColumnSelectorModal,\n getTableData,\n handleScreenChanged,\n updateColumns,\n} from '../../../../store/actions/navigation/content/table/table';\nimport {\n getAllColumns,\n getOffsetValue,\n getSrcColumns,\n getVisibleColumns,\n getVisibleRows,\n isYqlTypesEnabled,\n} from '../../../../store/selectors/navigation/content/table';\nimport {\n getColumns,\n getIsDynamic,\n getKeyColumns,\n getNavigationTableLoadingState,\n getYqlTypes,\n} from '../../../../store/selectors/navigation/content/table-ts';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getTableYsonSettings} from '../../../../store/selectors/thor/unipika';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './Table.scss';\nimport TableColumnsPresetNotice from './TableOverview/TableColumnsPresetNotice';\nimport {makeTableRumId} from '../../../../store/actions/navigation/content/table/table-rum-id';\n\nconst block = cn('navigation-table');\n\nTable.columnsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.shape({\n caption: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n }).isRequired,\n keyColumn: PropTypes.bool.isRequired,\n checked: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n\n accessor: PropTypes.func,\n label: PropTypes.string,\n }),\n);\n\nTable.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n isSplit: PropTypes.bool.isRequired,\n isDynamic: PropTypes.bool.isRequired,\n isFullScreen: PropTypes.bool.isRequired,\n settings: Yson.settingsProps.isRequired,\n isColumnSelectorOpen: PropTypes.bool.isRequired,\n visibleRows: PropTypes.arrayOf(PropTypes.object).isRequired,\n\n columns: Table.columnsProps.isRequired,\n allColumns: Table.columnsProps.isRequired,\n srcColumns: Table.columnsProps.isRequired,\n keyColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yqlTypes: PropTypes.array,\n\n updateColumns: PropTypes.func.isRequired,\n getTableData: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n handleScreenChanged: PropTypes.func.isRequired,\n closeColumnSelectorModal: PropTypes.func.isRequired,\n};\n\nconst renderColumnSelectorModal = (props) => {\n const {updateColumns, allColumns, srcColumns, isColumnSelectorOpen, closeColumnSelectorModal} =\n props;\n\n return (\n <ColumnSelectorModal\n items={allColumns}\n srcItems={srcColumns}\n onConfirm={updateColumns}\n isVisible={isColumnSelectorOpen}\n onCancel={closeColumnSelectorModal}\n />\n );\n};\n\nconst renderTable = (props) => {\n const {\n visibleColumns,\n keyColumns,\n yqlTypes,\n settings,\n visibleRows,\n isDynamic,\n isFullScreen,\n offsetValue,\n loading,\n loaded,\n isSplit,\n } = props;\n\n let stickyTop;\n if (isSplit) {\n stickyTop = 0; // TODO: add sticky for the Overview in the split mode https://github.com/captivationsoftware/react-sticky/issues/282\n } else if (isFullScreen) {\n stickyTop = 0;\n } else {\n stickyTop = HEADER_HEIGHT + OVERVIEW_HEIGHT;\n }\n\n const tableSettings = {\n stickyTop,\n stickyHead: 'moving',\n syncHeadOnResize: true,\n sortable: false,\n stripedRows: true,\n displayIndices: !isDynamic,\n };\n\n return (\n <LoadDataHandler {...props} loaded={false}>\n <DataTableWrapper\n data={visibleRows}\n loaded={loaded}\n loading={loading}\n yqlTypes={yqlTypes}\n keyColumns={keyColumns}\n ysonSettings={settings}\n settings={tableSettings}\n columns={visibleColumns}\n isFullScreen={isFullScreen}\n emptyDataMessage=\"No items to show\"\n startIndex={!isDynamic ? offsetValue : undefined}\n />\n </LoadDataHandler>\n );\n};\n\nfunction Table(props) {\n const {path, getTableData, abortAndReset} = props;\n const isYqlV3Types = useSelector(isYqlTypesEnabled);\n\n useEffect(() => {\n getTableData();\n return abortAndReset;\n }, [path, isYqlV3Types, abortAndReset]);\n\n const {isFullScreen, handleScreenChanged, isDynamic} = props;\n return (\n <div className={block()}>\n <TableMeta />\n <TableColumnsPresetNotice />\n <FullScreen\n className={block('fullscreen')}\n enabled={isFullScreen}\n onChange={handleScreenChanged}\n >\n <StickyContainer>\n <TableOverview />\n {renderTable(props)}\n </StickyContainer>\n </FullScreen>\n {renderColumnSelectorModal(props)}\n {isDynamic && <OffsetSelectorModal />}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, isColumnSelectorOpen, isFullScreen} =\n state.navigation.content.table;\n const settings = getTableYsonSettings(state);\n const {isSplit} = state.global.splitScreen;\n\n const path = getPath(state);\n const columns = getColumns(state);\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n const keyColumns = getKeyColumns(state);\n const allColumns = getAllColumns(state);\n const srcColumns = getSrcColumns(state);\n const visibleRows = getVisibleRows(state);\n const offsetValue = getOffsetValue(state);\n const visibleColumns = getVisibleColumns(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n columns,\n keyColumns,\n allColumns,\n srcColumns,\n visibleColumns,\n isSplit,\n path,\n isDynamic,\n visibleRows,\n yqlTypes,\n settings,\n offsetValue,\n isColumnSelectorOpen,\n isFullScreen,\n };\n};\n\nconst mapDispatchToProps = {\n updateColumns,\n getTableData,\n abortAndReset,\n handleScreenChanged,\n closeColumnSelectorModal,\n};\n\nconst TableConnected = compose(connect(mapStateToProps, mapDispatchToProps))(Table);\n\nexport default function TableWithRum() {\n const loadState = useSelector(getNavigationTableLoadingState);\n const isDynamic = useSelector(getIsDynamic);\n const cluster = useSelector(getCluster);\n\n const measureId = makeTableRumId({cluster, isDynamic}).getMeasureId();\n\n useAppRumMeasureStart({\n type: measureId,\n startDeps: [loadState, measureId],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: measureId,\n stopDeps: [loadState, measureId],\n sybType: isDynamic ? 'dynamic' : 'static',\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TableConnected />;\n}\n","import React from 'react';\n\nimport MetaTable from '../../components/MetaTable/MetaTable';\nimport {TTLLabel, makeTTLItems} from '../../components/MetaTable/presets/ttl';\nimport {Tooltip, TooltipProps} from '../../components/Tooltip/Tooltip';\n\nexport default function TTLInfo({\n attributes,\n onClick,\n size,\n className,\n}: {\n attributes: unknown;\n onClick: TooltipProps['onClick'];\n size: React.ComponentProps<typeof TTLLabel>['size'];\n className?: string;\n}) {\n const ttlItems = makeTTLItems(attributes);\n\n if (!ttlItems.length) {\n return null;\n }\n\n return (\n <Tooltip\n className={className}\n content={<MetaTable items={ttlItems} />}\n forceLinksAppearance={false}\n onClick={onClick}\n >\n <TTLLabel size={size} />\n </Tooltip>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect} from 'react-redux';\n\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport sortBy_ from 'lodash/sortBy';\nimport set_ from 'lodash/set';\n\nimport Button from '../../../../components/Button/Button';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n closeCreateTableModal,\n createTable,\n setCreateTableGroupSuggestions,\n setCreateTableLockSuggestions,\n} from '../../../../store/actions/navigation/modals/create-table';\n\nimport {createNewColumn} from '../../../../store/reducers/navigation/modals/create-table';\n\nimport {\n ColumnAggregateTypes as AggrTypes,\n ColumnAggregateType,\n ColumnDataTypes,\n SELECT_EMPTY_VALUE,\n} from '../../../../constants/navigation/modals/create-table';\nimport {\n getColumnGroupSuggestions,\n getColumnLockSuggestions,\n getCreateTableModalState,\n} from '../../../../store/selectors/navigation/modals/create-table';\nimport {StorageOptions} from '../../../../utils/cypress-attributes';\n\nimport {RootState} from '../../../../store/reducers';\nimport {\n getCompressionCodecs,\n getErasureCodecs,\n getPrimitiveTypes,\n} from '../../../../store/selectors/global/supported-features';\nimport {SelectWithSubItemsProps} from '../../../../components/Dialog/controls/SelectWithSubItems/SelectWithSubItems';\nimport {docsUrl, getNewTableReplicasCount} from '../../../../config';\n\nimport './CreateTableModal.scss';\nimport {DESCENDING} from './CreateTableTabField/CreateTableTabField';\nimport {FIX_MY_TYPE} from '../../../../types';\nimport UIFactory from '../../../../UIFactory';\n\nconst block = cn('create-table-modal');\n\nfunction getNoSuggestionsMsg() {\n return 'There is no any suggestions yet';\n}\n\nexport function makeLink(url: string, label = 'Help', inline = false) {\n const link = (\n <Link target={'_blank'} url={url}>\n {label}\n </Link>\n );\n return inline ? link : <div>{link}</div>;\n}\n\nconst TableType = {\n DYNAMIC: 'dynamic',\n STATIC: 'static',\n};\n\nconst AGGREGATE_CHOICES = [{value: SELECT_EMPTY_VALUE, text: 'default'}].concat(\n map_(AggrTypes, (i) => ({value: i, text: i})),\n);\n\ninterface WithVisibilityCondition {\n visibilityCondition: {\n when: string;\n isActive: (v: any) => boolean;\n };\n extras?: {\n disable?: boolean;\n };\n}\n\nfunction deactivateFieldByVisibilityCondition<T extends WithVisibilityCondition>(\n field: T,\n): Array<T> {\n const {\n visibilityCondition: {when, isActive},\n ...rest\n } = field;\n return [\n {\n ...rest,\n visibilityCondition: {\n when,\n isActive,\n },\n } as any,\n {\n ...rest,\n visibilityCondition: {\n when,\n isActive: (v: any) => !isActive(v),\n },\n extras: {\n disabled: true,\n },\n } as any,\n ];\n}\n\nconst TABLE_SETTINGS = 'tableSettings';\nconst COLUMNS = 'columns';\n\ninterface Props {\n className?: string;\n showModal: boolean;\n\n parentDirectory?: string;\n\n closeCreateTableModal: () => void;\n lockSuggestions: Array<string>;\n groupSuggestions: Array<string>;\n sortedColumnsCount: number;\n columnNameCounters: Record<number, number>;\n\n modifyColumn: () => void;\n removeColumn: () => void;\n setColumnSort: () => void;\n createTable: (path: string, settings: unknown) => Promise<void>;\n setColumnName: () => void;\n\n setCreateTableGroupSuggestions: (items: Array<string>) => void;\n setCreateTableLockSuggestions: (items: Array<string>) => void;\n\n columnsOrder: Record<number, ColumnData>;\n\n keyColumns: Record<string, -1 | 1>;\n\n compressionCodecs: Pick<SelectWithSubItemsProps, 'items' | 'subItemsMap'>;\n erasureCodecs: Array<{value: string; text: string}>;\n primitiveTypes: Array<{value: string; text: string}>;\n}\n\ninterface ColumnData {\n id: string;\n name: string;\n nameError?: string;\n dataType?: string;\n aggregate?: ColumnAggregateType | typeof SELECT_EMPTY_VALUE;\n optional?: boolean;\n ascending?: 1 | -1;\n lock?: string;\n group?: string;\n type?: string;\n sort_order?: string;\n}\n\ninterface TableSettingsTab {\n uniqueKeys: boolean;\n name: string;\n replicasCount: string;\n tableType: 'static' | 'dynamic';\n}\n\nfunction genNewName(items: Array<{name: string}>, name: string) {\n const names = new Set(map_(items, 'name'));\n if (!names.has(name)) {\n return name;\n }\n\n for (let i = 0; i < items.length; ++i) {\n const tmp = `${name}_${i + 1}`;\n if (!names.has(tmp)) {\n return tmp;\n }\n }\n\n return name;\n}\n\nclass CreateTableModalContentImpl extends React.Component<Props> {\n nextId = 2;\n\n tableType = TableType.STATIC;\n tableName = undefined;\n replicasCount = getNewTableReplicasCount();\n uniqueKeys = false;\n activeTabId = TABLE_SETTINGS;\n\n private columns: Array<ColumnData> = [];\n\n // eslint-disable-next-line react/sort-comp\n createNewColumn = (selectedColumnTab?: ColumnData, options: {userOptions?: any} = {}) => {\n const {duplicate} = options?.userOptions || {};\n\n const {primitiveTypes} = this.props;\n const newTab = createNewColumn(this.nextId++, primitiveTypes[0]?.value);\n\n if (!duplicate || !selectedColumnTab) {\n return newTab;\n } else {\n const name = genNewName(this.columns, selectedColumnTab.name + '_copy');\n return {\n ...newTab,\n ...selectedColumnTab,\n name,\n id: newTab.id,\n };\n }\n };\n\n reorderColumns(columns: Array<ColumnData>) {\n const {columnsOrder} = this.props;\n const indexById = reduce_(\n columnsOrder,\n (acc, item, index) => {\n acc[item.id] = index as any;\n return acc;\n },\n {} as Record<string, number>,\n );\n return sortBy_(columns, (item) => indexById[item.id]);\n }\n\n onAdd = (form: FormApi<FIX_MY_TYPE>): Promise<void> => {\n const {values} = form.getState();\n const {\n [TABLE_SETTINGS]: {\n name: path,\n tableType,\n compressionCodec: compCodec,\n storageOption,\n replicasCount,\n erasureCodec,\n uniqueKeys,\n optimize_for,\n },\n [COLUMNS]: columnsRaw,\n } = values;\n const columns = this.reorderColumns(columnsRaw);\n\n const isDynamic = tableType === TableType.DYNAMIC;\n const attributes: Record<string, any> = {\n dynamic: isDynamic,\n optimize_for,\n };\n\n if (!isEqual_(compCodec, [SELECT_EMPTY_VALUE])) {\n attributes.compression_codec = compCodec.join('');\n }\n\n if (storageOption === StorageOptions.REPLICATION) {\n attributes.replication_factor = Number(replicasCount);\n } else {\n attributes.erasure_codec = erasureCodec;\n }\n\n const schemaAttributes: Record<string, any> = {};\n if (uniqueKeys || tableType === TableType.DYNAMIC) {\n schemaAttributes.unique_keys = true;\n }\n\n const {keyColumns} = this.props;\n const schemaColumns = map_(columns, (item) => {\n const {aggregate, dataType: type, group, id, name, optional, lock} = item;\n const ascending = keyColumns[id];\n\n const res: {\n name?: string;\n type_v3?: string;\n group?: string;\n lock?: string;\n aggregate?: ColumnAggregateType;\n optional?: boolean;\n sort_order?: string;\n } = {\n name,\n type_v3: type,\n };\n\n if (group) {\n res.group = group;\n }\n\n if (lock) {\n res.lock = lock;\n }\n\n if (aggregate !== SELECT_EMPTY_VALUE) {\n res.aggregate = aggregate;\n }\n\n if (ascending) {\n res.sort_order = ascending === 1 ? 'ascending' : 'descending';\n }\n return {\n ...res,\n type_v3: !optional ? res.type_v3 : {type_name: 'optional', item: res.type_v3},\n };\n });\n\n return this.props.createTable(path, {\n ...attributes,\n schema: {\n $attributes: schemaAttributes,\n $value: schemaColumns,\n },\n });\n };\n\n validateColumnDataType(columnData: ColumnData, isDynamicTable: boolean) {\n const {dataType, optional} = columnData || {};\n\n if (dataType === ColumnDataTypes.ANY || dataType === ColumnDataTypes.YSON) {\n if (isDynamicTable && this.isOrderedColumn(columnData)) {\n return `Key-column should not be of type [${dataType}]`;\n }\n if (!optional) {\n return `Column with type [${dataType}] should be optional.`;\n }\n }\n\n if (isDynamicTable && this.isDescendingColumn(columnData)) {\n return \"Dynamic tables do not support 'Descending' order\";\n }\n\n return undefined;\n }\n\n validateAggregate(columnData: ColumnData) {\n const {dataType: type, aggregate: aggr} = columnData || {};\n if (aggr === AggrTypes.SUM || aggr === AggrTypes.MIN || aggr === AggrTypes.MAX) {\n if (\n type !== ColumnDataTypes.INT64 &&\n type !== ColumnDataTypes.UINT64 &&\n type !== ColumnDataTypes.DOUBLE\n ) {\n return `[${aggr}] aggregate might be only applied to a column of type int64/uint64/double`;\n }\n }\n return undefined;\n }\n\n validateColumnLock(columnData: ColumnData) {\n const ordered = this.isOrderedColumn(columnData);\n const {lock} = columnData || {};\n if (lock && ordered) {\n return 'Lock cannot be set on a key-column';\n }\n return undefined;\n }\n\n validateColumnData(columnData: ColumnData, isDynamicTable: boolean) {\n const res: Record<string, string> = {};\n const aggregate = this.validateAggregate(columnData);\n if (aggregate) {\n res.aggregate = aggregate;\n }\n const dataType = this.validateColumnDataType(columnData, isDynamicTable);\n if (dataType) {\n res.dataType = dataType;\n }\n const lock = this.validateColumnLock(columnData);\n if (lock) {\n res.lock = lock;\n }\n return isEmpty_(res) ? undefined : res;\n }\n\n validateReplicasCount(str: string) {\n const v = Number(str);\n // @ts-ignore\n if (str != v || v !== Math.round(v)) {\n return 'The value must be defined as a valid integer number';\n }\n if (v < 0 || v > 10) {\n return 'The value must be in range [0; 10]';\n }\n return undefined;\n }\n\n validateTableName = (value: string) => {\n const {parentDirectory} = this.props;\n if (value === parentDirectory + '/' || value === parentDirectory) {\n return 'The name must not match to parent directory name';\n }\n return undefined;\n };\n\n isOrderedColumn(columnData: ColumnData) {\n const {id} = columnData;\n return Boolean(this.props.keyColumns[id]);\n }\n\n isDescendingColumn(columnData: ColumnData) {\n const {id} = columnData;\n return this.props.keyColumns[id] === DESCENDING;\n }\n\n validateTableSettings(tableSettings: TableSettingsTab, columns: Array<ColumnData>) {\n const res: Partial<Record<keyof TableSettingsTab, string>> = {};\n const hasOrderedColumn = some_(columns, (colData) => this.isOrderedColumn(colData));\n const hasUnorderedColumn = some_(columns, (colData) => !this.isOrderedColumn(colData));\n\n const {uniqueKeys, name, replicasCount, tableType} = tableSettings;\n\n const nameError = this.validateTableName(name);\n if (nameError) {\n res.name = nameError;\n }\n\n if (tableType === TableType.DYNAMIC && (!hasOrderedColumn || !hasUnorderedColumn)) {\n res.tableType =\n 'Any dynamic table must have at least one sorted column and one unsorted column';\n }\n\n if (tableType === TableType.DYNAMIC && !res.tableType) {\n const hasDescendingColumns = some_(this.keyColumns, (value) => -1 === value);\n if (hasDescendingColumns) {\n res.tableType = 'Dynamic tables do not support descending-sorted columns';\n }\n }\n\n const replicasCountError = this.validateReplicasCount(replicasCount);\n if (replicasCountError) {\n res.replicasCount = replicasCountError;\n }\n\n if (uniqueKeys && !hasOrderedColumn) {\n res.uniqueKeys = 'The table must contain at least one sorted column.';\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n onClose = () => {\n this.nextId = 2;\n return this.props.closeCreateTableModal();\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lastValidationResult: object | null = null;\n\n validateForm = (values: any) => {\n const errors = {};\n\n const tableSettings = values[TABLE_SETTINGS];\n\n const setError = (path: string, error: any) => {\n if (error) {\n set_(errors, path, error);\n }\n };\n\n const {tableType} = tableSettings;\n\n const columns: Array<ColumnData> = values[COLUMNS];\n this.columns = columns;\n const nameCounters: Record<string, Array<number>> = {};\n forEach_(columns, (columnData, index) => {\n const {name} = columnData;\n const nameIndexes = nameCounters[name];\n if (!nameIndexes) {\n nameCounters[name] = [index];\n } else {\n nameIndexes.push(index);\n }\n\n // Validate column\n setError(\n `${COLUMNS}[${index}]`,\n this.validateColumnData(columnData, tableType === TableType.DYNAMIC),\n );\n });\n forEach_(nameCounters, (indices) => {\n if (indices.length > 1) {\n indices.forEach((index) => {\n set_(\n errors,\n `${COLUMNS}[${index}].name`,\n 'The column with this name already exists',\n );\n });\n }\n });\n\n // validate tableSettings\n setError(TABLE_SETTINGS, this.validateTableSettings(tableSettings, columns));\n\n this.lastValidationResult = errors;\n return errors;\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n keyColumns: Props['keyColumns'] = {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n formValidator = this.validateForm.bind(this);\n getFormValidator() {\n const {keyColumns} = this.props;\n if (this.keyColumns !== keyColumns) {\n this.keyColumns = keyColumns;\n /*\n * keyColumns is modified externally and Dialog knows nothing about it\n * and we need to create new instance of Function to force call its\n * validation with new keyColumns.\n * Without creation of new function validation will not be called\n */\n this.formValidator = this.validateForm.bind(this);\n }\n return this.formValidator;\n }\n\n render() {\n const {\n className,\n parentDirectory,\n showModal,\n compressionCodecs,\n erasureCodecs,\n primitiveTypes,\n groupSuggestions,\n } = this.props;\n const name = `${parentDirectory}/new_table`;\n\n return (\n <YTDFDialog<FIX_MY_TYPE>\n virtualized\n pristineSubmittable\n className={block(null, className)}\n size={'l'}\n visible={showModal}\n headerProps={{\n title: 'Create Table',\n }}\n isApplyDisabled={() => {\n return !isEmpty_(this.lastValidationResult);\n }}\n validate={this.getFormValidator()}\n onActiveTabChange={(tab) => {\n this.activeTabId = tab;\n }}\n onAdd={this.onAdd}\n onClose={this.onClose}\n initialValues={{\n [TABLE_SETTINGS]: {\n name: this.tableName !== undefined ? this.tableName : name,\n tableType: this.tableType,\n compressionCodec: [SELECT_EMPTY_VALUE],\n storageOption: StorageOptions.REPLICATION,\n replicasCount: this.replicasCount,\n erasureCodec: 'lrc_12_2_2',\n uniqueKeys: this.uniqueKeys,\n optimize_for: 'lookup',\n },\n [COLUMNS]: [createNewColumn(1, primitiveTypes[0]?.value)],\n }}\n fields={[\n {\n name: TABLE_SETTINGS,\n type: 'yt-create-table-tab',\n title: 'Table settings',\n fields: [\n {\n name: 'name',\n type: 'text',\n caption: 'Table name',\n },\n {\n name: 'tableType',\n type: 'radio',\n caption: 'Table type',\n tooltip: (\n <div className={block('tooltip')}>\n Data rows of\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:static_tables'],\n ' Static tables ',\n true,\n ),\n ' Static tables ',\n )}\n nearly impossible to modify, but they might be removed or\n merged, also new data rows might be appended to the end of a\n table. As the opposite of the above described restrictions\n there are\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['dynamic-tables:overview'],\n ' Dynamic tables ',\n true,\n ),\n ' Dynamic tables ',\n )}\n which allow to modify data rows by key.\n <div className={block('alert-text')}>\n Before using Dynamic tables in production environment\n with <b>heavy load or strict SLA </b>\n you have to consult with development team.\n </div>\n </div>\n ),\n extras: {\n options: [\n {\n value: TableType.STATIC,\n label: 'Static',\n },\n {\n value: TableType.DYNAMIC,\n label: 'Dynamic',\n },\n ],\n },\n },\n {\n separator: true,\n },\n {\n name: 'optimize_for',\n type: 'radio',\n caption: 'Optimize for',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:chunks#optimize_for']),\n ),\n extras: {\n options: [\n {value: 'scan', label: 'Scan'},\n {value: 'lookup', label: 'Lookup'},\n ],\n },\n },\n {\n name: 'compressionCodec',\n type: 'select-with-subitems',\n caption: 'Compression',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:compression#compression_codecs'\n ],\n ),\n ),\n extras: {\n ...compressionCodecs,\n },\n },\n {\n name: 'storageOption',\n type: 'radio',\n caption: 'Storage options',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#replication']),\n ),\n extras: {\n options: [\n {\n value: StorageOptions.REPLICATION,\n label: 'Replication',\n },\n {\n value: StorageOptions.ERASURE,\n label: 'Erasure encoding',\n },\n ],\n },\n },\n {\n name: 'replicasCount',\n type: 'text',\n caption: 'Number of replicas',\n visibilityCondition: {\n when: `${TABLE_SETTINGS}.storageOption`,\n isActive: (value: string) =>\n value === StorageOptions.REPLICATION,\n },\n },\n {\n name: 'erasureCodec',\n type: 'yt-select-single',\n caption: 'Erasure codec',\n tooltip: (\n <div className={block('tooltip')}>\n Erasure encoding allows to minimize disk space allocated for\n the table comparing with Replication, but it requires more\n CPU time during data access.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:replication#erasure'],\n ),\n )}\n </div>\n ),\n visibilityCondition: {\n when: `${TABLE_SETTINGS}.storageOption`,\n isActive: (value: string) => value === StorageOptions.ERASURE,\n },\n extras: {\n items: erasureCodecs,\n hideFilter: true,\n width: 'max',\n },\n },\n {\n separator: true,\n },\n {\n type: 'block',\n name: 'schemaSettings',\n extras: {\n children: (\n <span className={block('title')}>Schema settings</span>\n ),\n },\n },\n ...deactivateFieldByVisibilityCondition({\n name: 'uniqueKeys',\n type: 'tumbler' as const,\n caption: 'Unique keys',\n tooltip: (\n <div className={block('tooltip')}>\n The parameter is actual only for static tables, for all\n dynamic tables it is always automatically enabled regardless\n of its value.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:static_schema#overview'\n ],\n ),\n )}\n </div>\n ),\n visibilityCondition: {\n when: `${TABLE_SETTINGS}.tableType`,\n isActive: (value) => value === TableType.STATIC,\n },\n }),\n ],\n },\n {\n name: COLUMNS,\n type: 'yt-create-table-tab',\n multiple: true,\n onCreateTab: this.createNewColumn,\n getTitle: (values) => values.name,\n isRemovable: () => false,\n renderControls: (_item, _onCreate, onRemove) => {\n return (\n <Button\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onRemove?.();\n e.stopPropagation();\n }}\n >\n <Icon awesome={'trash-alt'} /> Delete column\n </Button>\n );\n },\n fields: [\n {\n name: 'name',\n type: 'text',\n caption: 'Column name',\n required: true,\n },\n {\n name: 'dataType',\n type: 'yt-select-single',\n caption: 'Data type',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:data_types#schema']),\n ),\n extras: {\n items: primitiveTypes,\n placeholder: 'Select type',\n width: 'max',\n hideClear: true,\n },\n touched: true, // required to display errors even if the field is not touched\n },\n {\n name: 'optional',\n type: 'tumbler',\n caption: 'Optional',\n tooltip: (\n <div className={block('tooltip')}>\n If the parameter is enabled the value might be defined as\n null. For dynamic tables all key-columns are required\n regardless of this value.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:data_types#schema_optional'\n ],\n ),\n )}\n </div>\n ),\n },\n {\n name: 'group',\n type: 'create-table-group-suggest',\n caption: 'Column group name',\n tooltip: (\n <div className={block('tooltip')}>\n When columns have the same group name then the data of such\n columns will be placed in the same blocks.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:static_schema#overview'\n ],\n ),\n )}\n </div>\n ),\n extras: {\n getItems: () => groupSuggestions,\n ...{\n getNoItemsMessage: getNoSuggestionsMsg,\n },\n },\n onChange: (\n _value: unknown,\n _oldValue: unknown,\n _field: unknown,\n _fieldName: unknown,\n _form: unknown,\n {values}: ReturnType<FormApi<FIX_MY_TYPE>['getState']>,\n ) => {\n const allGroups = map_(values?.columns, 'group').filter((v) =>\n Boolean(v),\n );\n this.props.setCreateTableGroupSuggestions(allGroups);\n },\n },\n {\n separator: true,\n },\n {\n name: 'lock',\n type: 'create-table-lock-suggest',\n caption: 'Lock',\n tooltip: (\n <div className={block('tooltip')}>\n By default locking is applied to all columns of row. This\n parameter allows to improve granularity of locking by\n defining groups of columns to lock.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'dynamic-tables:transactions#conflicts'\n ],\n ),\n )}\n </div>\n ),\n onChange: (\n _value: unknown,\n _oldValue: unknown,\n _field: unknown,\n _fieldName: unknown,\n _form: unknown,\n {values}: ReturnType<FormApi<FIX_MY_TYPE>['getState']>,\n ) => {\n const allLocks = map_(values?.columns, 'lock').filter((v) =>\n Boolean(v),\n );\n this.props.setCreateTableLockSuggestions(allLocks);\n },\n },\n {\n name: 'aggregate',\n type: 'yt-select-single',\n caption: 'Aggregate',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'dynamic-tables:sorted_dynamic_tables#aggr_columns'\n ],\n ),\n ),\n extras: {\n items: AGGREGATE_CHOICES,\n placeholder: 'Select aggregation',\n width: 'max',\n hideFilter: true,\n },\n },\n ],\n },\n ]}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {showModal, parentDirectory, columnNameCounters, keyColumns, columnsOrder} =\n getCreateTableModalState(state);\n\n const primitiveTypes = getPrimitiveTypes(state);\n\n return {\n showModal,\n parentDirectory,\n groupSuggestions: getColumnGroupSuggestions(state),\n lockSuggestions: getColumnLockSuggestions(state),\n columnNameCounters,\n\n keyColumns,\n columnsOrder,\n\n compressionCodecs: getCompressionCodecs(state),\n erasureCodecs: getErasureCodecs(state),\n primitiveTypes,\n };\n};\n\nconst mapDispatchToProps = {\n closeCreateTableModal,\n createTable,\n setCreateTableLockSuggestions,\n setCreateTableGroupSuggestions,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateTableModalContentImpl);\n","import React from 'react';\nimport {compose} from 'redux';\nimport axios, {AxiosProgressEvent} from 'axios';\nimport cn from 'bem-cn-lite';\n\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport Button from '../../../../../components/Button/Button';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {ConnectedProps, connect} from 'react-redux';\nimport Error from '../../../../../components/Block/Block';\nimport {YTDFDialog} from '../../../../../components/Dialog';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\nimport format from '../../../../../common/hammer/format';\n\nimport './UploadManager.scss';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport FilePicker from '../../../../../components/FilePicker/FilePicker';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {RootState} from '../../../../../store/reducers';\nimport {getXsrfCookieName} from '../../../../../utils';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport Link from '../../../../../components/Link/Link';\nimport {docsUrl, getConfigUploadTable} from '../../../../../config';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport UIFactory from '../../../../../UIFactory';\n\nconst block = cn('upload-manager');\n\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\ntype Props = PropsFromRedux & WithVisibleProps;\n\nfunction trimXLSX(fileName = '') {\n for (const i of ['.xlsx', '.xls']) {\n if (fileName.toLowerCase().endsWith(i)) {\n return fileName.substr(0, fileName.length - i.length);\n }\n }\n return fileName;\n}\n\ninterface State {\n name: string;\n\n hasUpcomingFile: boolean;\n progress: ProgressState;\n error?: any;\n\n file: File | null;\n fileType: FileType;\n\n firstRowAsNames: boolean;\n secondRowAsTypes: boolean;\n}\n\ntype FileType = 'xlsx';\n\nconst FILE_TYPES: Array<{value: FileType; title: FileType}> = [{value: 'xlsx', title: 'xlsx'}];\n\ntype ProgressState =\n | {inProgress: false}\n | {inProgress: true; event: {total?: number; loaded: number}};\n\nconst getExcelBaseUrl = (payload: {cluster: string}) => {\n return getConfigUploadTable(payload);\n};\n\nclass UploadManagerCreate extends React.Component<Props, State> {\n state: State = {\n name: '',\n hasUpcomingFile: false,\n file: null,\n fileType: 'xlsx',\n progress: {inProgress: false},\n firstRowAsNames: true,\n secondRowAsTypes: true,\n };\n\n private cancelHelper = new CancelHelper();\n\n renderContent() {\n const {hasUpcomingFile, file, error} = this.state;\n return (\n <React.Fragment>\n <div\n className={block('drag-area', {\n dropable: hasUpcomingFile,\n empty: !file,\n })}\n onDrop={this.onDrop}\n onDragEnter={this.onDragEnter}\n onDragLeave={this.onDragLeave}\n onDragOver={this.onDragOver}\n >\n {file ? (\n this.renderFileContent(file)\n ) : (\n <div>\n <div>Drag a file here</div>\n or\n <div>\n <FilePicker onChange={this.onFile}>Pick a file</FilePicker>\n </div>\n </div>\n )}\n </div>\n {error && <Error error={error} message={'The file upload has failed'} />}\n </React.Fragment>\n );\n }\n\n renderFileContent(file: File) {\n return (\n <React.Fragment>\n {this.renderSettings(file)}\n {this.renderProgress()}\n </React.Fragment>\n );\n }\n\n renderSettings(file: File) {\n const {path} = this.props;\n const {name} = this.state;\n const inProgress = this.inProgress();\n return (\n <YTDFDialog\n onAdd={() => Promise.resolve()}\n onClose={() => {}}\n visible={true}\n modal={false}\n initialValues={{\n path,\n name: name,\n size: `${hammer.format['Bytes'](file.size)} / ${hammer.format['Number'](\n file.size,\n )} B`,\n fileType: this.state.fileType,\n firstRowAsNames: this.state.firstRowAsNames,\n secondRowAsTypes: this.state.secondRowAsTypes,\n }}\n fields={[\n {\n name: 'path',\n caption: 'Parent folder',\n type: 'plain',\n },\n {\n name: 'name',\n caption: 'Name',\n type: 'text',\n required: true,\n extras: {\n disabled: inProgress,\n },\n onChange: (name: string | Array<string> | undefined) => {\n this.setState({name: name as string});\n },\n },\n {\n name: 'size',\n caption: 'Size',\n type: 'plain',\n },\n {\n name: 'fileType',\n type: 'yt-select-single',\n caption: 'Type',\n extras: {\n items: FILE_TYPES,\n hideFilter: true,\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'firstRowAsNames',\n type: 'tumbler',\n caption: 'Column names',\n tooltip: 'Interpret first row as column names',\n onChange: (firstRowAsNames: boolean) => {\n this.setState({firstRowAsNames});\n },\n extras: {\n disabled: inProgress,\n },\n },\n {\n name: 'secondRowAsTypes',\n type: 'tumbler',\n caption: 'Types',\n tooltip: 'There is row with types right before data-rows',\n onChange: (secondRowAsTypes: boolean) => {\n this.setState({secondRowAsTypes});\n },\n extras: {\n disabled: inProgress,\n },\n },\n ]}\n />\n );\n }\n\n renderFooterContent() {\n const {file} = this.state;\n const inProgress = this.inProgress();\n const helpLink = docsUrl(<HelpLink url={UIFactory.docsUrls['storage:excel']} />);\n\n if (!file) {\n return helpLink;\n }\n return inProgress ? (\n <React.Fragment>\n <Button onClick={this.cancelUpload}>Cancel upload</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={this.onReset}>Reset</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n );\n }\n\n onReset = () => {\n this.onFile(null);\n this.setState({error: null});\n };\n\n renderProgress() {\n const {progress} = this.state;\n const event = progress.inProgress ? progress.event : {total: 1, loaded: 0};\n const {total, loaded} = event;\n const totalStr = hammer.format['Bytes'](total);\n const loadedStr = hammer.format['Bytes'](loaded);\n return (\n progress.inProgress && (\n <div\n className={block('progress', {\n hidden: !progress.inProgress,\n })}\n >\n <div className={block('progress-wrapper')}>\n <Progress\n text={`${loadedStr} / ${totalStr}`}\n stack={[\n {\n value: (100 * loaded) / ((total ?? loaded) || 1),\n theme: 'info',\n },\n ]}\n />\n </div>\n </div>\n )\n );\n }\n\n cancelUpload = () => {\n this.cancelHelper.removeAllRequests();\n };\n\n inProgress() {\n const {progress} = this.state;\n return progress.inProgress;\n }\n\n onDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n if (!this.state.hasUpcomingFile) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n const {files} = event.dataTransfer;\n if (!files) {\n return;\n }\n\n this.onFile(files);\n };\n\n onFile = (files: FileList | null) => {\n const file = files && files[0];\n this.setState({\n file,\n hasUpcomingFile: false,\n name: trimXLSX(file?.name) || '',\n });\n if (file) {\n const fileError = this.checkFile(file);\n if (fileError) {\n this.setState({error: {message: fileError}});\n }\n }\n };\n\n onDragEnter = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDragLeave = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: false});\n }\n };\n\n renderConfirm = () => {\n const fileError = this.checkFile(this.state.file);\n return (\n <Button\n className={block('confirm')}\n size=\"m\"\n view=\"action\"\n title=\"Upload\"\n disabled={Boolean(fileError) || this.inProgress()}\n onClick={this.onXlsxUpload}\n >\n Upload\n </Button>\n );\n };\n\n checkFile(file: State['file']): string | null {\n if (!file) {\n return 'file is not selected';\n }\n\n const {cluster} = this.props;\n\n const UPLOAD_CONFIG = getExcelBaseUrl({cluster});\n\n if (file.size > UPLOAD_CONFIG.uploadTableMaxSize) {\n return `File size must not be greater than ${format.Bytes(\n UPLOAD_CONFIG.uploadTableMaxSize,\n )}`;\n }\n\n return null;\n }\n\n renderClose = (className: string) => {\n return (\n <Button\n className={block('confirm', className)}\n size=\"m\"\n title=\"Close\"\n disabled={this.inProgress()}\n onClick={this.handleClose}\n >\n Close\n </Button>\n );\n };\n\n onStartUpload(size: number) {\n this.setState({\n progress: {inProgress: true, event: {loaded: 0, total: size}},\n error: undefined,\n });\n }\n\n onUploadProgress = (event: AxiosProgressEvent) => {\n this.setState({progress: {inProgress: true, event}});\n };\n\n onStopUpload(error?: State['error']) {\n this.setState({progress: {inProgress: false}});\n if (!error) {\n this.props.updateView();\n this.props.handleClose();\n } else if (!axios.isCancel(error) && (!error || error.code !== 'cancelled')) {\n error = error.response?.data || error;\n this.setState({error});\n }\n }\n\n onXlsxUpload = () => {\n const {file, fileType} = this.state;\n if (!file || fileType !== 'xlsx') {\n return;\n }\n\n const {path: parentDir, cluster} = this.props;\n const {name} = this.state;\n const path = `${parentDir}/${name}`;\n\n this.onStartUpload(file.size);\n\n const EXCEL_BASE_URL = getExcelBaseUrl({cluster}).uploadTableExcelBaseUrl;\n\n const readyUrl = `${EXCEL_BASE_URL}/${cluster}/api/ready`;\n const uploadUrl = `${EXCEL_BASE_URL}/${cluster}/api/upload`;\n\n this.cancelHelper.removeAllRequests();\n return axios.get(readyUrl).then(\n () => {\n const {firstRowAsNames, secondRowAsTypes} = this.state;\n const start_row = [firstRowAsNames, secondRowAsTypes].filter(Boolean).length + 1;\n const params = new URLSearchParams({\n create: String(true),\n path,\n header: String(firstRowAsNames),\n start_row: String(start_row),\n types: String(secondRowAsTypes),\n });\n const formData = new FormData();\n formData.append('uploadfile', file);\n return wrapApiPromiseByToaster(\n axios.post(`${uploadUrl}?${params}`, formData, {\n onUploadProgress: this.onUploadProgress,\n withCredentials: true,\n withXSRFToken: true,\n xsrfCookieName: getXsrfCookieName(cluster),\n xsrfHeaderName: 'X-Csrf-Token',\n cancelToken: this.cancelHelper.generateNextToken(),\n }),\n {\n toasterName: 'upload_xlsx' + path,\n successTitle: 'Table is created',\n errorTitle: 'Failed to create table',\n successContent: (\n <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link>\n ),\n },\n ).then(\n () => {\n this.onStopUpload();\n },\n (e) => {\n this.onStopUpload(e);\n },\n );\n },\n (e) => {\n this.onStopUpload({\n message: `${readyUrl} responded with error`,\n inner_errors: [e],\n });\n },\n );\n };\n\n handleClose = () => {\n if (this.inProgress()) {\n return;\n }\n this.props.handleClose();\n };\n\n render() {\n const {visible} = this.props;\n return (\n <React.Fragment>\n {visible && (\n <Modal\n size=\"m\"\n title=\"Upload xlsx\"\n visible={visible}\n onCancel={this.handleClose}\n confirmText=\"Upload\"\n content={this.renderContent()}\n footerContent={this.renderFooterContent()}\n renderCustomConfirm={this.renderConfirm}\n renderCustomCancel={this.renderClose}\n contentClassName={block()}\n />\n )}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const path: string = getPath(state);\n\n return {\n path,\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(withVisible, connector)(UploadManagerCreate);\n","import React, {Component} from 'react';\nimport {useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport orderBy_ from 'lodash/orderBy';\nimport reduce_ from 'lodash/reduce';\nimport slice_ from 'lodash/slice';\n\nimport './NodesTypes.scss';\nimport {\n getNodesInfo,\n getSelectedNodes,\n} from '../../../../../store/selectors/navigation/content/map-node';\nimport MultipleActions from '../MultipleActions';\n\nconst b = block('nodes-types');\nconst DISPLAYED_NODES = 3;\n\nclass NodesTypes extends Component {\n static propTypes = {\n nodes: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string.isRequired,\n count: PropTypes.number.isRequired,\n }),\n ).isRequired,\n selectedNodes: PropTypes.array.isRequired,\n };\n\n _prepareNodes(nodes) {\n const sortedNodes = orderBy_(nodes, (node) => node.count, 'desc');\n\n return slice_(sortedNodes, 0, DISPLAYED_NODES);\n }\n\n _getSumCount(nodes) {\n return reduce_(nodes, (sum, node) => sum + node.count, 0);\n }\n\n renderItem(node) {\n return (\n <li className={b('item')} key={node.type}>\n <span className={b('type')}>{node.type}</span>\n <span className={b('count')}>{node.count}</span>\n </li>\n );\n }\n\n renderItems(nodes) {\n return map_(nodes, (node) => this.renderItem(node));\n }\n\n renderSelected() {\n const {selectedNodes} = this.props;\n if (!selectedNodes.length) {\n return null;\n }\n return (\n <li className={b('item')}>\n <span className={b('type')}>Selected</span>\n <span className={b('count')}>{selectedNodes.length}</span>\n <MultipleActions className={b('actions')} />\n </li>\n );\n }\n\n render() {\n const {nodes} = this.props;\n\n const displayedNodes = this._prepareNodes(nodes);\n const allNodesCount = this._getSumCount(nodes);\n const displayedNodesCount = this._getSumCount(displayedNodes);\n const otherNodesCount = allNodesCount - displayedNodesCount;\n\n return (\n <ul className={b('list')}>\n {this.renderItem({type: 'All', count: allNodesCount})}\n {this.renderItems(displayedNodes)}\n {otherNodesCount > 0 && this.renderItem({type: 'Other', count: otherNodesCount})}\n {this.renderSelected()}\n </ul>\n );\n }\n}\n\nfunction NodesInfo() {\n const nodesInfo = useSelector(getNodesInfo);\n const selectedNodes = useSelector(getSelectedNodes);\n\n return <NodesTypes nodes={nodesInfo} selectedNodes={selectedNodes} />;\n}\n\nexport default React.memo(NodesInfo);\n","import {ThunkAction} from 'redux-thunk';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {CREATE_ACO_MODAL} from '../../../../constants/navigation/modals';\nimport {CreateACOModalAction} from '../../../../store/reducers/navigation/modals/create-aco';\nimport {RootState} from '../../../reducers';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {updateView} from '../index';\n\ntype CreateAcoModalThunkAction<R = any> = ThunkAction<R, RootState, unknown, CreateACOModalAction>;\n\nexport function openCreateACOModal(\n params: {path?: string; namespace?: string} = {},\n): CreateAcoModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: CREATE_ACO_MODAL,\n data: {...params, visible: true},\n });\n };\n}\n\nexport function closeCreateACOModal(): CreateAcoModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: CREATE_ACO_MODAL,\n data: {path: undefined, target: undefined, visible: false},\n });\n };\n}\n\ntype CreateACOActionParams = {path: string; name: string; namespace: string};\n\nexport function createACO(params: CreateACOActionParams): CreateAcoModalThunkAction {\n return (dispatch) => {\n const {path, name, namespace} = params;\n\n return ytApiV3\n .create({\n path,\n type: 'access_control_object',\n attributes: {name, namespace},\n })\n .then(() => {\n dispatch(closeCreateACOModal());\n dispatch(updateView());\n\n const toast = new Toaster();\n\n toast.add({\n name: 'create-aco',\n theme: 'success',\n title: 'ACO created',\n content: '',\n });\n });\n };\n}\n","import {DropdownMenu} from '@gravity-ui/uikit';\nimport React, {Component} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {Sticky, StickyContainer} from 'react-sticky';\n\nimport map_ from 'lodash/map';\n\nimport {getConfigUploadTable} from '../../../../config/index';\n\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport RadioButton from '../../../../components/RadioButton/RadioButton';\nimport Button from '../../../../components/Button/Button';\nimport Filter from '../../../../components/Filter/Filter';\nimport {SelectSingle} from '../../../../components/Select/Select';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport TTLInfo from '../../../../components/TTLInfo/TTLInfo';\nimport CreateTableModal from '../../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {isCreateTableModalVisible} from '../../../../store/selectors/navigation/modals/create-table';\n\nimport MapNodesTable from './MapNodesTable';\n\nimport {openCreateTableModal} from '../../../../store/actions/navigation/modals/create-table';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {getNavigationPathAttributes} from '../../../../store/selectors/navigation/navigation';\nimport {getMediumList} from '../../../../store/selectors/thor';\nimport {\n getContentMode,\n getError,\n getFilterState,\n getLoadState,\n getMapNodeResourcesLoading,\n getMediumType,\n isRootNode,\n} from '../../../../store/selectors/navigation/content/map-node';\n\nimport {OPEN_CREATE_DIRECTORY_POPUP} from '../../../../constants/navigation/modals/create-directory';\nimport {HEADER_HEIGHT, LOADING_STATUS} from '../../../../constants/index';\nimport {ContentMode} from '../../../../constants/navigation';\n\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {\n fetchNodes,\n setContentMode,\n setFilter,\n setMediumType,\n updateResourceUsage,\n} from '../../../../store/actions/navigation/content/map-node';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nimport hammer from '../../../../common/hammer';\nimport UploadManagerCreate from '../Table/UploadManager/UploadManagerCreate';\nimport NodesTypes from './NodesTypes/NodesTypes';\n\nimport {NoWrap} from '../../../../components/Text/Text';\nimport {showLinkToModal} from '../../../../store/actions/navigation/modals/link-to-modal';\nimport {openCreateACOModal} from '../../../../store/actions/navigation/modals/create-aco';\nimport NavigationExtraActions from '../../../../containers/NavigationExtraActions/NavigationExtraActions';\nimport UIFactory from '../../../../UIFactory';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport './MapNode.scss';\n\nconst block = cn('map-node');\nconst tbBlock = cn('elements-toolbar');\n\nclass MapNode extends Component {\n static TYPE = 'map_node';\n\n static CONTENT_MODE_OPTIONS = [ContentMode.DEFAULT, ContentMode.RESOURCES];\n\n static propTypes = {\n error: PropTypes.object,\n loadState: PropTypes.string,\n contentMode: PropTypes.oneOf(MapNode.CONTENT_MODE_OPTIONS),\n path: PropTypes.string.isRequired,\n transaction: PropTypes.string,\n mediumList: PropTypes.arrayOf(PropTypes.string),\n mediumType: PropTypes.string.isRequired,\n filterState: PropTypes.string.isRequired,\n\n setFilter: PropTypes.func.isRequired,\n setContentMode: PropTypes.func.isRequired,\n fetchNodes: PropTypes.func.isRequired,\n setMediumType: PropTypes.func.isRequired,\n openEditingPopup: PropTypes.func.isRequired,\n openCreateTableModal: PropTypes.func.isRequired,\n openCreateACOModal: PropTypes.func.isRequired,\n showACOCreateButton: PropTypes.bool.isRequired,\n cluster: PropTypes.bool.isRequired,\n };\n\n componentDidMount() {\n this.props.fetchNodes();\n }\n\n componentDidUpdate(prevProps) {\n const {path, transaction, fetchNodes} = this.props;\n const {path: prevPath, transaction: prevTransaction} = prevProps;\n if (path !== prevPath || transaction !== prevTransaction) {\n fetchNodes();\n }\n }\n\n renderToolbar() {\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={tbBlock({sticky: isSticky})}>\n <MapNodeToolbarConnected />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderError() {\n const {\n error: {message, details},\n } = this.props;\n return (\n <div className={block('error')}>\n <Error message={message} error={details} />\n </div>\n );\n }\n\n renderView() {\n return (\n <StickyContainer>\n {this.renderToolbar()}\n\n <div className={block('content')}>\n <MapNodesTable />\n </div>\n </StickyContainer>\n );\n }\n\n render() {\n const {loadState} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block()}>\n {loadState === LOADING_STATUS.ERROR ? this.renderError() : this.renderView()}\n </div>\n <CreateTableModal />\n </ErrorBoundary>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const path = getPath(state);\n\n return {\n path,\n showACOCreateButton: path === '//sys/access_control_object_namespaces/queries',\n loadState: getLoadState(state),\n error: getError(state),\n contentMode: getContentMode(state),\n filterState: getFilterState(state),\n transaction: getTransaction(state),\n mediumList: getMediumList(state),\n mediumType: getMediumType(state),\n showCreateTableModal: isCreateTableModalVisible(state),\n attributes: getNavigationPathAttributes(state),\n cluster: getCluster(state),\n };\n}\n\nconst mapDispatchToProps = {\n setFilter,\n setContentMode,\n fetchNodes,\n setMediumType,\n openEditingPopup,\n openCreateTableModal,\n showLinkToModal,\n openCreateACOModal,\n};\n\nconst MapNodeConnected = connect(mapStateToProps, mapDispatchToProps)(MapNode);\n\nexport default function MapNodeWithRum() {\n const loadState = useSelector(getLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return loadState === LOADING_STATUS.LOADING;\n },\n });\n return <MapNodeConnected />;\n}\n\nclass MapNodeToolbar extends React.PureComponent {\n uploadXlsRef = React.createRef();\n\n createDirectoryButtonClick = () => {\n const {path, openEditingPopup} = this.props;\n openEditingPopup(null, path + '/', OPEN_CREATE_DIRECTORY_POPUP);\n };\n\n createTableButtonClick = () => {\n const {path} = this.props;\n this.props.openCreateTableModal(path);\n };\n\n uploadTableButtonClick = () => {\n if (this.uploadXlsRef.current) {\n this.uploadXlsRef.current.handleShow();\n }\n };\n\n createLinkButtonClick = () => {\n const {path} = this.props;\n this.props.showLinkToModal({path: `${path}/New link`});\n };\n\n createACOButtonClick = () => {\n const {path} = this.props;\n\n this.props.openCreateACOModal({path, namespace: 'queries'});\n };\n\n render() {\n const {\n setFilter,\n contentMode,\n setContentMode,\n mediumList,\n mediumType,\n setMediumType,\n filterState,\n path,\n attributes,\n showACOCreateButton,\n cluster,\n } = this.props;\n\n const {uploadTableExcelBaseUrl} = getConfigUploadTable({cluster});\n\n const {menuItems, renderModals} = UIFactory.getMapNodeExtraCreateActions([\n {\n action: this.createTableButtonClick,\n text: <NoWrap>Table</NoWrap>,\n icon: <Icon awesome={'table'} face={'solid'} />,\n },\n {\n action: this.createDirectoryButtonClick,\n text: <NoWrap>Directory</NoWrap>,\n icon: <Icon awesome={'folder'} face={'solid'} />,\n },\n ...(!uploadTableExcelBaseUrl\n ? []\n : [\n {\n action: this.uploadTableButtonClick,\n text: <NoWrap>Upload xlsx</NoWrap>,\n icon: <Icon awesome={'upload'} />,\n },\n ]),\n {\n action: this.createLinkButtonClick,\n text: <NoWrap>Link</NoWrap>,\n icon: <Icon awesome={'link'} />,\n },\n showACOCreateButton && {\n action: this.createACOButtonClick,\n text: <NoWrap>ACO</NoWrap>,\n icon: <Icon awesome={'acl-object'} />,\n },\n ]);\n\n return (\n <React.Fragment>\n <div className={tbBlock('container')}>\n <div className={block('filter', tbBlock('component'))}>\n <Filter\n size=\"m\"\n key={path}\n debounce={300}\n value={filterState}\n onChange={setFilter}\n qa=\"map-node-filter\"\n />\n </div>\n\n <TTLInfo attributes={attributes} size={'m'} className={tbBlock('component')} />\n\n <div className={block('content-mode', tbBlock('component'))}>\n <RadioButton\n size=\"m\"\n name=\"navigation-map-node-content-mode\"\n value={contentMode}\n items={map_(\n MapNode.CONTENT_MODE_OPTIONS,\n RadioButton.prepareSimpleValue,\n )}\n onChange={(event) => setContentMode(event.target.value)}\n />\n </div>\n\n <div className={block('show-resources', tbBlock('component'))}>\n <ShowResourcesButton />\n </div>\n\n {mediumList?.length && (\n <div className={block('medium-type', tbBlock('component'))}>\n <SelectSingle\n label=\"Medium:\"\n placeholder=\"All\"\n value={mediumType}\n items={map_(mediumList, (type) => ({\n value: type,\n text: hammer.format['ReadableField'](type),\n }))}\n onChange={setMediumType}\n width=\"max\"\n hideFilter={true}\n />\n </div>\n )}\n\n <NavigationExtraActions\n className={block('copy-to-remote', tbBlock('component'))}\n />\n\n <div className={block('create-object', tbBlock('component'))}>\n <DropdownMenu\n menuSize={'n'}\n popupClass={block('create-popup')}\n items={menuItems}\n switcher={\n <Button size=\"m\" title=\"Create object\">\n Create object\n </Button>\n }\n />\n </div>\n </div>\n <div className=\"nodes-types\">\n <NodesTypes />\n </div>\n <UploadManagerCreate ref={this.uploadXlsRef} />\n {renderModals()}\n </React.Fragment>\n );\n }\n}\n\nfunction ShowResourcesButton() {\n const dispatch = useDispatch();\n const isRoot = useSelector(isRootNode);\n const loading = useSelector(getMapNodeResourcesLoading);\n return (\n <Button\n size=\"m\"\n title=\"Show all nodes resource usage [Shift+S]\"\n disabled={isRoot}\n loading={loading}\n onClick={() => dispatch(updateResourceUsage())}\n hotkey={[{keys: 'shift+s', handler: updateResourceUsage, scope: 'all'}]}\n >\n Show resources\n </Button>\n );\n}\n\nconst MapNodeToolbarConnected = connect(mapStateToProps, mapDispatchToProps)(MapNodeToolbar);\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {getPath} from '../../../selectors/navigation';\nimport {\n GET_DOCUMENT,\n SET_DOCUMENT_EDIT_MODE,\n} from '../../../../constants/navigation/content/document';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../reducers';\nimport {NavigationDocumentAction} from '../../../reducers/navigation/content/document';\nimport {wrapApiPromiseByToaster} from '../../../../utils/utils';\n\nconst requests = new CancelHelper();\n\ntype DocumentThunkAction = ThunkAction<void, RootState, any, NavigationDocumentAction>;\n\nexport const getDocument = (): DocumentThunkAction => (dispatch, getState) => {\n const state = getState();\n const path = getPath(state) as string;\n\n dispatch({type: GET_DOCUMENT.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationGetDocument, {\n parameters: {\n path,\n output_format: {$value: 'json', $attributes: {}},\n },\n cancellation: requests.saveCancelToken,\n })\n .then((document) => {\n dispatch({\n type: GET_DOCUMENT.SUCCESS,\n data: {document},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_DOCUMENT.CANCELLED});\n } else {\n dispatch({\n type: GET_DOCUMENT.FAILURE,\n data: {error},\n });\n }\n });\n};\n\nexport const saveDocument =\n ({path, documentString}: {path: string; documentString: string}): DocumentThunkAction =>\n async (dispatch) => {\n const document = documentString === '' ? null : JSON.parse(documentString);\n try {\n await wrapApiPromiseByToaster(yt.v3.set({path}, document), {\n toasterName: 'navigation-save-document',\n errorTitle: 'Failed to save document',\n successTitle: 'Document successfully saved',\n });\n\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: false});\n dispatch({\n type: GET_DOCUMENT.SUCCESS,\n data: {document: document},\n });\n\n return Promise.resolve();\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\nexport const abortAndReset = (): DocumentThunkAction => (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_DOCUMENT.CANCELLED});\n};\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getNavigationDocumentLoadingStatus = createSelector(\n [\n (store: RootState) => store.navigation.content.document.loading,\n (store: RootState) => store.navigation.content.document.loaded,\n (store: RootState) => store.navigation.content.document.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const selectNavigationDocument = (store: RootState) => store.navigation.content.document;\n","import React, {FC, Fragment} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Alert, Button, Flex} from '@gravity-ui/uikit';\n\n// @ts-ignore\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {main} from '../../../../components/MetaTable/presets';\nimport Yson from '../../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport Icon from '../../../../components/Icon/Icon';\nimport {OpenQueryButtons} from '../../../../containers/OpenQueryButtons/OpenQueryButtons';\nimport {useSelector} from 'react-redux';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport './DocumentBody.scss';\n\nconst block = cn('yt-document-body');\n\ntype Props = {\n attributes: Record<any, any>;\n document: any;\n settings: UnipikaSettings;\n onEditClick: () => void;\n queryAutoOpen?: boolean;\n};\n\nconst EditButton: FC<Pick<Props, 'onEditClick'>> = ({onEditClick}) => {\n return (\n <Button onClick={onEditClick}>\n <Icon awesome={'pencil'} />\n Edit\n </Button>\n );\n};\n\nfunction OpenYqlViewButton({autoOpen}: {autoOpen?: boolean}) {\n const path: string = useSelector(getPath);\n const cluster = useSelector(getCluster);\n\n return (\n <OpenQueryButtons\n path={path}\n cluster={cluster}\n className={block('yql')}\n autoOpen={autoOpen}\n />\n );\n}\n\nfunction DocumentExtraTools({\n onEditClick,\n attributes,\n queryAutoOpen,\n}: Pick<Props, 'attributes' | 'onEditClick' | 'queryAutoOpen'>) {\n const isYqlView = 'view' === ypath.getValue(attributes, '/_yql_type');\n return (\n <Flex gap={4}>\n {isYqlView && <OpenYqlViewButton autoOpen={queryAutoOpen} />}\n <EditButton onEditClick={onEditClick} />\n </Flex>\n );\n}\n\nfunction DocumentBody({attributes, settings, onEditClick, document = null, queryAutoOpen}: Props) {\n const [type] = ypath.getValues(attributes, ['/type']);\n\n return (\n <Fragment>\n <MetaTable items={[main(attributes), [{key: 'type', value: type}]]} />\n {document === null ? (\n <Alert\n layout=\"horizontal\"\n theme=\"info\"\n message=\"Document is empty.\"\n actions={<EditButton onEditClick={onEditClick} />}\n />\n ) : (\n <Yson\n value={document}\n settings={settings}\n folding\n extraTools={\n <DocumentExtraTools\n onEditClick={onEditClick}\n attributes={attributes}\n queryAutoOpen={queryAutoOpen}\n />\n }\n />\n )}\n </Fragment>\n );\n}\n\nexport default DocumentBody;\n","import React, {FC, useCallback} from 'react';\nimport cn from 'bem-cn-lite';\nimport './DocumentEditModal.scss';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {Text} from '@gravity-ui/uikit';\nimport {UnipikaSettings} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\n\ntype Props = {\n open: boolean;\n document: any;\n settings: UnipikaSettings;\n onCancel: () => void;\n onSave: (data: string) => Promise<void>;\n};\n\ntype FormValues = {\n jsonEditor: {value: string};\n};\n\nconst block = cn('document-edit-modal');\n\nconst DocumentEditModal: FC<Props> = ({open, document, settings, onCancel, onSave}) => {\n const handleSaveDocument = useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n return onSave(form.getState().values.jsonEditor.value);\n },\n [onSave],\n );\n\n return (\n <YTDFDialog<FormValues>\n className={block()}\n headerProps={{\n title: (\n <Text variant=\"header-1\" color=\"secondary\">\n Edit document\n </Text>\n ),\n }}\n visible={open}\n onClose={onCancel}\n onAdd={handleSaveDocument}\n initialValues={{jsonEditor: {value: JSON.stringify(document, null, '\\t')}}}\n fields={[\n {\n fullWidth: true,\n name: 'jsonEditor',\n type: 'json',\n extras: {\n className: block('editor'),\n initialSplitSize: '50%',\n initialShowPreview: false,\n unipikaSettings: settings,\n folding: true,\n },\n },\n ]}\n />\n );\n};\n\nexport default DocumentEditModal;\n","import React, {FC, useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {Loader} from '@gravity-ui/uikit';\nimport {\n abortAndReset,\n getDocument,\n saveDocument,\n} from '../../../../store/actions/navigation/content/document';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\nimport {selectNavigationDocument} from '../../../../store/selectors/navigation/content/document';\nimport './Document.scss';\nimport DocumentBody from './DocumentBody';\nimport {SET_DOCUMENT_EDIT_MODE} from '../../../../constants/navigation/content/document';\nimport DocumentEditModal from './DocumentEditModal';\nimport unipika from '../../../../common/thor/unipika';\n\nconst block = cn('navigation-document');\n\nconst Document: FC = () => {\n const dispatch = useDispatch();\n const {loading, loaded, error, errorData, document, editMode} =\n useSelector(selectNavigationDocument);\n const attributes = useSelector(getAttributes);\n const path = useSelector(getPath);\n const settings = unipika.prepareSettings();\n const mode = useSelector(getEffectiveMode);\n const initialLoading = loading && !loaded;\n\n useEffect(() => {\n dispatch(getDocument());\n return () => {\n dispatch(abortAndReset());\n };\n }, [dispatch, path, mode]);\n\n const handleEditClick = useCallback(() => {\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: true});\n }, [dispatch]);\n\n const handleOnCancel = useCallback(() => {\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: false});\n }, [dispatch]);\n\n const handleOnDocumentSave = useCallback(\n async (documentString: string) => {\n await dispatch(saveDocument({path, documentString}));\n },\n [dispatch, path],\n );\n\n return (\n <LoadDataHandler loaded={loaded} error={error} errorData={errorData}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <>\n <DocumentBody\n document={document}\n settings={settings}\n attributes={attributes}\n onEditClick={handleEditClick}\n queryAutoOpen={loaded}\n />\n <DocumentEditModal\n settings={settings}\n open={editMode}\n onCancel={handleOnCancel}\n onSave={handleOnDocumentSave}\n document={document}\n />\n </>\n )}\n </div>\n </LoadDataHandler>\n );\n};\n\nexport default Document;\n","import React, {FC} from 'react';\nimport Document from './Document';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {getNavigationDocumentLoadingStatus} from '../../../../store/selectors/navigation/content/document';\nimport {useSelector} from 'react-redux';\n\nconst DocumentWithRum: FC = () => {\n const loadState = useSelector(getNavigationDocumentLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_DOCUMENT,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_DOCUMENT,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Document />;\n};\n\nexport default DocumentWithRum;\n","import CancelHelper from '../../../../utils/cancel-helper';\nimport {navigateParent} from '../../../../store/actions/navigation';\nimport {ABORT_TRANSACTION} from '../../../../constants/navigation/content/transaction';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function abortTransaction(id) {\n return (dispatch) => {\n dispatch({type: ABORT_TRANSACTION.REQUEST});\n\n return ytApiV3\n .abortTransaction({\n parameters: {transaction_id: id},\n cancellation: requests.saveCancelToken,\n })\n .then(() => {\n dispatch(navigateParent());\n dispatch({type: ABORT_TRANSACTION.SUCCESS});\n })\n .catch((error) => {\n dispatch({\n type: ABORT_TRANSACTION.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function resetStore() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: ABORT_TRANSACTION.CANCELLED});\n };\n}\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {main} from '../../../../components/MetaTable/presets';\nimport Button from '../../../../components/Button/Button';\nimport Modal from '../../../../components/Modal/Modal';\n\nimport {\n abortTransaction,\n resetStore,\n} from '../../../../store/actions/navigation/content/transaction';\nimport {getAttributes, getLoadState} from '../../../../store/selectors/navigation';\nimport withVisible from '../../../../hocs/withVisible';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport Yson from '../../../../components/Yson/Yson';\n\nconst block = cn('navigation-transaction');\n\nTransaction.propTypes = {\n // from withVisible hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n};\n\nfunction Transaction({visible, handleClose, handleShow}) {\n const dispatch = useDispatch();\n const attributes = useSelector(getAttributes);\n\n const [title, startTime, timeout, id] = ypath.getValues(attributes, [\n '/title',\n '/start_time',\n '/timeout',\n '/id',\n ]);\n const {loading, error, errorData} = useSelector(\n (state) => state.navigation.content.transaction,\n );\n\n const handleTransactionAbort = useCallback(() => dispatch(abortTransaction(id)), [dispatch]);\n const handleModalClose = useCallback(() => {\n handleClose();\n dispatch(resetStore());\n }, [dispatch, handleClose]);\n\n const modalContent = (\n <LoadDataHandler loaded={false} error={error} errorData={errorData}>\n About to abort transaction <span className=\"elements-monospace\">{id}</span>\n </LoadDataHandler>\n );\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n main(attributes),\n [\n {\n key: 'title',\n value: <Yson value={title} />,\n visible: Boolean(title),\n },\n {\n key: 'start_time',\n value: startTime,\n visible: Boolean(startTime),\n },\n {\n key: 'timeout',\n value: timeout,\n visible: Boolean(timeout),\n },\n ],\n ]}\n />\n\n <Button onClick={handleShow}>Abort</Button>\n <Modal\n title=\"Abort\"\n visible={visible}\n loading={loading}\n confirmTheme=\"danger\"\n confirmText=\"Abort\"\n content={modalContent}\n onConfirm={handleTransactionAbort}\n onCancel={handleModalClose}\n />\n </div>\n );\n}\n\nconst TransactionConnected = withVisible(Transaction);\n\nexport default function TransactionWithRum() {\n const loadState = useSelector(getLoadState);\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TransactionConnected />;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {prepareNavigationState} from '../../../../utils/navigation';\n\nexport default class Transaction {\n constructor(transaction, parentParsedPath) {\n this.id = ypath.getValue(transaction, '');\n this.attributes = ypath.getValue(transaction, '/@');\n\n this.type = this.attributes.type;\n this.title = this.attributes.title;\n this.owner = this.attributes.owner;\n this.started = this.attributes.start_time;\n\n this.parsedPath = ypath.YPath.clone(parentParsedPath).concat(\n '/' + ypath.YPath.fragmentFromYSON(this.id),\n );\n this.pathState = prepareNavigationState(this.parsedPath);\n this.path = this.parsedPath.stringify();\n }\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport map_ from 'lodash/map';\n\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getParsedPath, getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport Transaction from '../../../../utils/navigation/content/transaction-map/transaction';\nimport {\n CHANGE_FILTER,\n LOAD_TRANSACTIONS,\n} from '../../../../constants/navigation/content/transaction-map';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function loadTransactions() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const parsedPath = getParsedPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_TRANSACTIONS.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .list(YTApiId.navigationListTransactions, {\n parameters: prepareRequest('/', {\n path,\n transaction,\n attributes: ['type', 'title', 'start_time', 'owner'],\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((rawTransactions) => {\n const transactions = ypath.getValue(rawTransactions, '');\n\n dispatch({\n type: LOAD_TRANSACTIONS.SUCCESS,\n data: {\n transactions: map_(\n transactions,\n (transaction) => new Transaction(transaction, parsedPath),\n ),\n },\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_TRANSACTIONS.CANCELLED});\n } else {\n dispatch({\n type: LOAD_TRANSACTIONS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function changeFilter(filter) {\n return {\n type: CHANGE_FILTER,\n data: {filter},\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_TRANSACTIONS.CANCELLED});\n };\n}\n","export const tableItems = {\n icon: {\n sort: false,\n caption: '',\n align: 'center',\n },\n id: {\n align: 'left',\n sort(transaction) {\n return transaction.id;\n },\n },\n owner: {\n align: 'left',\n sort(transaction) {\n return transaction.owner;\n },\n },\n title: {\n align: 'left',\n sort(transaction) {\n return transaction.title;\n },\n },\n start_time: {\n align: 'right',\n sort(transaction) {\n return transaction.started;\n },\n },\n actions: {\n caption: '',\n align: 'center',\n sort: false,\n },\n};\n","import hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {tableItems} from '../../../../utils/navigation/content/transaction-map/table';\nimport {NAVIGATION_TRANSACTION_MAP_TABLE_ID} from '../../../../constants/navigation/content/transaction-map';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nconst getRawTransactions = (state) => state.navigation.content.transactionMap.transactions;\nconst getSortState = (state) => state.tables[NAVIGATION_TRANSACTION_MAP_TABLE_ID];\nconst getFilter = (state) => state.navigation.content.transactionMap.filter;\n\nconst getFilteredTransactions = createSelector(\n [getRawTransactions, getFilter],\n (rawTransactions, filter) =>\n hammer.filter.filter({\n data: rawTransactions,\n input: filter,\n factors: ['id', 'title'],\n }),\n);\n\nexport const getTransactions = createSelector(\n [getFilteredTransactions, getSortState],\n (filteredTransactions, sortState) =>\n hammer.utils.sort(filteredTransactions, sortState, tableItems),\n);\n\nexport const getNavigationTransactionMapLoadingStatus = createSelector(\n [\n (store) => store.navigation.content.transactionMap.loading,\n (store) => store.navigation.content.transactionMap.loaded,\n (store) => store.navigation.content.transactionMap.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import React, {Component} from 'react';\nimport {Sticky, StickyContainer} from 'react-sticky';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {FormattedText, FormattedTextOrLink} from '../../../../components/formatters';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport Filter from '../../../../components/Filter/Filter';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {NAVIGATION_TRANSACTION_MAP_TABLE_ID} from '../../../../constants/navigation/content/transaction-map';\nimport {\n changeFilter,\n loadTransactions,\n} from '../../../../store/actions/navigation/content/transaction-map';\nimport {\n getNavigationTransactionMapLoadingStatus,\n getTransactions,\n} from '../../../../store/selectors/navigation/content/transaction-map';\nimport {tableItems} from '../../../../utils/navigation/content/transaction-map/table';\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {itemNavigationAllowed} from '../../../../pages/navigation/Navigation/ContentViewer/helpers';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './TransactionMap.scss';\n\nconst block = cn('navigation-transaction-map');\n\nclass TransactionMap extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n filter: PropTypes.string.isRequired,\n transactions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n transaction: PropTypes.string,\n\n changeFilter: PropTypes.func.isRequired,\n loadTransactions: PropTypes.func.isRequired,\n };\n\n static renderIcon(item) {\n const iconName = getIconNameForType(item.type);\n\n return <Icon awesome={iconName} />;\n }\n\n static renderId(item) {\n const isLink = itemNavigationAllowed(item);\n\n return <FormattedTextOrLink state={item.pathState} asLink={isLink} text={item.id} />;\n }\n\n static renderOwner(item) {\n return <FormattedText text={item.owner} />;\n }\n\n static renderStartTime(item) {\n return hammer.format['DateTime'](item.started, {format: 'full'});\n }\n\n static renderTitle(item) {\n return <FormattedText text={item.title} />;\n }\n\n static renderActions(item) {\n return (\n <ClickableAttributesButton\n title={item.id}\n path={`//sys/transactions/${item.id}`}\n withTooltip\n />\n );\n }\n\n componentDidMount() {\n this.props.loadTransactions();\n }\n\n componentDidUpdate(prevProps) {\n const {path, transaction, loadTransactions} = this.props;\n\n if (prevProps.path !== path || prevProps.transaction !== transaction) {\n loadTransactions();\n }\n }\n\n get tableSettings() {\n return {\n css: block(),\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: NAVIGATION_TRANSACTION_MAP_TABLE_ID,\n columns: {\n items: tableItems,\n sets: {\n default: {\n items: ['icon', 'id', 'title', 'owner', 'start_time', 'actions'],\n },\n },\n mode: 'default',\n },\n templates: {\n icon: TransactionMap.renderIcon,\n id: TransactionMap.renderId,\n owner: TransactionMap.renderOwner,\n start_time: TransactionMap.renderStartTime,\n title: TransactionMap.renderTitle,\n actions: TransactionMap.renderActions,\n },\n computeKey(item) {\n return item.id;\n },\n };\n }\n\n handleFilterChange = (value) => this.props.changeFilter(value);\n\n render() {\n const {filter, loading, transactions} = this.props;\n\n return (\n <div className={block()}>\n <StickyContainer>\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n })}\n >\n <Filter\n hasClear\n size=\"m\"\n value={filter}\n debounce={300}\n className={block('filter')}\n onChange={this.handleFilterChange}\n placeholder=\"Filter transactions...\"\n />\n </div>\n )}\n </Sticky>\n\n <LoadDataHandler {...this.props}>\n <ElementsTable\n {...this.tableSettings}\n items={transactions}\n isLoading={loading}\n />\n </LoadDataHandler>\n </StickyContainer>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {filter, loading, loaded, error, errorData} = state.navigation.content.transactionMap;\n const path = getPath(state);\n const transaction = getTransaction(state);\n const transactions = getTransactions(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n transaction,\n filter,\n transactions,\n };\n};\n\nconst mapDispatchToProps = {\n loadTransactions,\n changeFilter,\n};\n\nconst TransactionMapConnected = connect(mapStateToProps, mapDispatchToProps)(TransactionMap);\n\nexport default function TranscationMapWithRum() {\n const loadState = useSelector(getNavigationTransactionMapLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION_MAP,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION_MAP,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TransactionMapConnected />;\n}\n","import {AccessAclTab} from '../../../tabs/ACL/ACL';\nimport ReplicatedTable from '../../../../../pages/navigation/content/ReplicatedTable/ReplicatedTable';\nimport ReplicatedTableMeta from '../../../content/ReplicatedTable/ReplicatedTableMeta';\n\nimport Link from '../../../../../pages/navigation/content/Link/Link';\nimport File from '../../../../../pages/navigation/content/File/File';\nimport Table from '../../../../../pages/navigation/content/Table/Table';\nimport MapNode from '../../../../../pages/navigation/content/MapNode/MapNode';\nimport Document from '../../../content/Document/DocumentWithRum';\nimport Transaction from '../../../../../pages/navigation/content/Transaction/Transaction';\nimport TransactionMap from '../../../../../pages/navigation/content/TransactionMap/TransactionMap';\n\nconst supportedContentTypes = {\n map_node: MapNode,\n portal_entrance: MapNode,\n portal_exit: MapNode,\n rootstock: MapNode,\n scion: MapNode,\n cell_node_map: MapNode,\n sys_node: MapNode,\n access_control_object_namespace_map: MapNode,\n access_control_object_namespace: MapNode,\n access_control_object: AccessAclTab,\n tablet_cell: MapNode,\n scheduler_pool_tree_map: MapNode,\n scheduler_pool: MapNode,\n document: Document,\n string_node: Document,\n int64_node: Document,\n uint64_node: Document,\n double_node: Document,\n boolean_node: Document,\n link: Link,\n file: File,\n table: Table,\n replicated_table: ReplicatedTable,\n chaos_replicated_table: ReplicatedTable,\n replication_log_table: ReplicatedTableMeta,\n transaction: Transaction,\n nested_transaction: Transaction,\n topmost_transaction_map: TransactionMap,\n transaction_map: TransactionMap,\n};\n\nexport default (type: string) => supportedContentTypes[type as keyof typeof supportedContentTypes];\n","import {createSelector} from 'reselect';\n\nimport type {RootState} from '../../../../store/reducers';\nimport type {YtQueueStatus} from '../../../../store/reducers/navigation/tabs/queue/types';\n\nconst metaMock = {cell_id: '890', host: 'lbk-vla-249.search.yandex.net'};\nexport const emptyRate = {'1m': 0, '1h': 0, '1d': 0};\n\nexport const getFamily = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.family;\n\nexport const getPartitionCount = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.partition_count;\n\nexport const getReadDataWeightRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.read_data_weight_rate ?? emptyRate;\n\nexport const getReadRowCountRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.read_row_count_rate ?? emptyRate;\n\nexport const getWriteDataWeightRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.write_data_weight_rate ?? emptyRate;\n\nexport const getWriteRowCountRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.write_row_count_rate ?? emptyRate;\n\nexport const getStatusError = (state: RootState) => state.navigation.tabs.queue.status.statusError;\n\nexport const getStatusLoading = (state: RootState) =>\n state.navigation.tabs.queue.status.statusLoading;\n\nexport const getStatusLoaded = (state: RootState) =>\n state.navigation.tabs.queue.status.statusLoaded;\n\nexport const getQueueStatusDataAlerts = (state: RootState): YtQueueStatus['alerts'] =>\n state.navigation.tabs.queue.status?.statusData?.alerts;\n\nexport const getQueueMode = (state: RootState) => state.navigation.tabs.queue.filters.queueMode;\n\nexport const getQueuePartitionIndex = (state: RootState) =>\n state.navigation.tabs.queue.filters.queuePartitionIndex;\n\nexport const getQueuePartitionsColumns = (state: RootState) =>\n state.navigation.tabs.queue.filters.partitionsColumns;\n\nexport const getQueueTabletCellHost = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTabletCellHost;\n\nexport const getQueueTabletCellId = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTabletCellId;\n\nexport const getQueueConsumerName = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueConsumerName;\n\nexport const getQueueOwner = (state: RootState) => state.navigation.tabs.queue.filters.queueOwner;\n\nexport const getQueueRateMode = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueRateMode;\n\nexport const getQueueTimeWindow = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTimeWindow;\n\nconst getPartitionsData = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsData;\n\nexport const getPartitions = createSelector(\n [getQueuePartitionIndex, getQueueTabletCellHost, getQueueTabletCellId, getPartitionsData],\n (queuePartitionIndex, queueTabletCellHost, queueTabletCellId, partitionsData) =>\n partitionsData\n ?.map((partition, index) => ({\n ...partition,\n meta: partition.meta ?? metaMock,\n partition_index: index,\n write_data_weight_rate: partition.write_data_weight_rate ?? emptyRate,\n write_row_count_rate: partition.write_row_count_rate ?? emptyRate,\n }))\n ?.filter(\n (partition) =>\n partition.partition_index.toString(10).includes(queuePartitionIndex) &&\n partition.meta.host.includes(queueTabletCellHost) &&\n partition.meta.cell_id.includes(queueTabletCellId),\n ) ?? [],\n);\n\nexport type SelectedPartition = NonNullable<ReturnType<typeof getPartitions>>[0];\n\nexport const getPartitionsError = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsError;\n\nexport const getPartitionsLoading = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsLoading;\n\nexport const getPartitionsLoaded = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsLoaded;\n\nconst getRawConsumers = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.registrations;\n\nexport const getConsumers = createSelector(\n [getQueueConsumerName, getRawConsumers],\n (queueConsumerName, consumers) =>\n (consumers ? consumers : [])\n ?.map((consumer) => ({\n ...consumer,\n read_data_weight_rate: emptyRate,\n read_row_count_rate: emptyRate,\n }))\n ?.filter((item) => item.consumer.includes(queueConsumerName)),\n);\n\nexport type SelectedConsumer = NonNullable<ReturnType<typeof getConsumers>>[0];\n","import {createSelector} from 'reselect';\nimport type {RootState} from '../../../../store/reducers';\nimport {emptyRate} from './queue';\n\nexport const getConsumerPartitionIndex = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerPartitionIndex;\n\nexport const getConsumerRateMode = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerRateMode;\n\nexport const getConsumerPartitionsColumns = (state: RootState) =>\n state.navigation.tabs.consumer.filters.partitionsColumns;\n\nexport const getConsumerTimeWindow = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerTimeWindow;\n\nexport const getTargetQueue = (state: RootState) =>\n state.navigation.tabs.consumer.filters.targetQueue;\n\nexport const getConsumerRegisteredQueues = (state: RootState) =>\n state.navigation.tabs.consumer.status.consumerData?.registrations;\n\nconst getStatusData = (state: RootState) => state.navigation.tabs.consumer.status.consumerData;\n\nconst getTargetQueueStatusData = (state: RootState) => {\n const statusData = getStatusData(state);\n const {queue = ''} = getTargetQueue(state) ?? {};\n\n return statusData?.queues?.[queue];\n};\n\nexport const getOwner = (state: RootState) => getTargetQueueStatusData(state)?.owner;\n\nexport const getPartitionCount = (state: RootState) =>\n getTargetQueueStatusData(state)?.partition_count;\n\nexport const getReadDataWeightRate = (state: RootState) =>\n getTargetQueueStatusData(state)?.read_data_weight_rate ?? emptyRate;\n\nexport const getReadRowCountRate = (state: RootState) =>\n getTargetQueueStatusData(state)?.read_row_count_rate ?? emptyRate;\n\nexport const getTargetQueueError = (state: RootState) => {\n const targetQueueStatusData = getTargetQueueStatusData(state);\n return targetQueueStatusData?.error;\n};\n\nexport const getStatusError = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusError;\n\nexport const getStatusLoading = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusLoading;\n\nexport const getStatusLoaded = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusLoaded;\n\nexport const getConsumerMode = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerMode;\n\nconst getPartitionsData = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsData;\n\nexport const getPartitions = createSelector(\n [getConsumerPartitionIndex, getPartitionsData],\n (consumerPartitionIndex, partitionsData) =>\n partitionsData\n ?.map((partition, index) => ({\n ...partition,\n partition_index: index,\n read_data_weight_rate: partition.read_data_weight_rate ?? emptyRate,\n read_row_count_rate: partition.read_row_count_rate ?? emptyRate,\n }))\n ?.filter((partition) =>\n partition.partition_index.toString(10).includes(consumerPartitionIndex),\n ) ?? [],\n);\n\nexport type SelectedPartition = NonNullable<ReturnType<typeof getPartitions>>[0];\n\nexport const getPartitionsError = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsError;\n\nexport const getPartitionsLoading = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsLoading;\n\nexport const getPartitionsLoaded = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsLoaded;\n","import type {ChangeEvent} from 'react';\n\nimport {\n CONSUMER_CHANGE_FILTERS,\n CONSUMER_MODE,\n CONSUMER_RATE_MODE,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport type {\n ConsumerFiltersAction,\n ConsumerFiltersState,\n ConsumerPartitionsColumns,\n PartitionColumn,\n} from '../../../../../store/reducers/navigation/tabs/consumer/filters';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\n\nexport function changeConsumerMode(evt: ChangeEvent<HTMLInputElement>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerMode: evt.target.value as CONSUMER_MODE},\n };\n}\n\nexport function changeConsumerPartitionIndex(value: string): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerPartitionIndex: value},\n };\n}\n\nexport function changeConsumerRateMode(evt: ChangeEvent<HTMLInputElement>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerRateMode: evt.target.value as CONSUMER_RATE_MODE},\n };\n}\n\ninterface CompactColumnSelectorPayload {\n items: Array<PartitionColumn<ConsumerPartitionsColumns>>;\n}\nexport function changeConsumerPartitionsColumns({\n items,\n}: CompactColumnSelectorPayload): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {partitionsColumns: items},\n };\n}\n\nexport function changeConsumerTimeWindow(\n evt: ChangeEvent<HTMLInputElement>,\n): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerTimeWindow: evt.target.value as keyof TPerformanceCounters},\n };\n}\n\nexport function changeConsumerFilters(data: Partial<ConsumerFiltersState>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data,\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getConsumerRegisteredQueues,\n getTargetQueue,\n getTargetQueueError,\n} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport ErrorBlock from '../../../../../components/Block/Block';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Link from '../../../../../components/Link/Link';\nimport {findCommonPathParent, genNavigationUrl} from '../../../../../utils/navigation/navigation';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport {Item, SelectSingle} from '../../../../../components/Select/Select';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {changeConsumerFilters} from '../../../../../store/actions/navigation/tabs/consumer/filters';\n\nimport './TargetQueue.scss';\n\nconst block = cn('target-queue');\n\nexport default function TargetQueue() {\n const {queue} = useSelector(getTargetQueue) ?? {};\n const error = useSelector(getTargetQueueError);\n\n let clusterQueueUrl;\n if (queue) {\n const firstColon = queue.indexOf(':');\n if (firstColon === -1) {\n throw new Error(\n 'Unexpected behavior: queue should be formatted like \"${cluster}:${path}\"',\n );\n }\n const cluster = queue.slice(0, firstColon);\n const path = queue.slice(firstColon + 1);\n clusterQueueUrl = genNavigationUrl({cluster, path});\n }\n\n return (\n <div className={block()}>\n <div className=\"elements-heading elements-heading_size_xs\">Target queue</div>\n <ConsumerQueueSelector>\n {queue && (\n <Link theme=\"secondary\" url={clusterQueueUrl} routed>\n <Icon awesome=\"link\" />\n </Link>\n )}\n </ConsumerQueueSelector>\n {error && <ErrorBlock error={error} topMargin=\"half\" />}\n </div>\n );\n}\n\ninterface ConsumerQueueSelectorProps {\n className?: string;\n\n children?: React.ReactNode;\n}\n\nexport function ConsumerQueueSelector({className, children}: ConsumerQueueSelectorProps) {\n const dispatch = useDispatch();\n const registrations = useSelector(getConsumerRegisteredQueues);\n\n const handleSelect = (value?: string) => {\n const item = value ? registrations?.find(({queue}) => queue === value) : undefined;\n dispatch(changeConsumerFilters({targetQueue: item}));\n };\n\n const {prefix, items, renderItem} = React.useMemo(() => {\n const pref = reduce_(\n registrations,\n (acc, {queue}) => {\n return findCommonPathParent(acc, queue);\n },\n registrations?.[0]?.queue ?? '',\n );\n\n const options = map_(registrations, ({queue}) => {\n return {\n value: `${queue}`,\n text: queue,\n };\n });\n\n if (options.length === 1) {\n const [{value}] = options;\n requestAnimationFrame(() => {\n handleSelect(value);\n });\n }\n\n return {\n prefix: pref,\n items: options,\n renderItem: (item: Item) => {\n return item.value.slice(pref.length);\n },\n };\n }, [registrations, dispatch]);\n\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n return (\n <div className={block('selector', className)}>\n {items.length > 1 ? (\n <>\n <Prefix text={prefix} />{' '}\n <SelectSingle\n value={queue}\n items={items}\n className={block('queue-selector-value')}\n renderItem={renderItem}\n width=\"auto\"\n onChange={handleSelect}\n placeholder=\"Select queue... \"\n />\n </>\n ) : (\n <Prefix text={queue ?? ''} />\n )}\n {queue && <ClipboardButton text={queue} view=\"clear\" />}\n {children}\n </div>\n );\n}\n\nfunction Prefix({text}: {text: string}) {\n const parts = text.split('/');\n\n return (\n <Tooltip className={block('prefix')} content={text}>\n {parts.map((item, index) => {\n return (\n <React.Fragment key={index}>\n {item && <span className={block('prefix-item')}>{item}</span>}\n {index !== parts.length - 1 ? '/' : null}\n </React.Fragment>\n );\n })}\n </Tooltip>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './BarChart.scss';\n\nconst block = cn('multimeter');\n\ninterface Props {\n values: number[];\n size?: number;\n}\n\nconst BarChart: React.VFC<Props> = ({values, size = 20}) => {\n let min = Math.min(0, ...values);\n let max = Math.max(0, ...values);\n\n if (min === max) {\n min = 0;\n max = 1;\n }\n\n const width = Math.floor((size * 3) / (4 * values.length - 1));\n\n return (\n <div className={block('barchart')} style={{width: size, height: size}}>\n {values.map((v, i) => {\n const marginRight = Math.floor(\n i === values.length - 1 ? 0 : size / (4 * values.length - 1),\n );\n const style = {\n height: `${Math.abs(v * 100) / (max - min)}%`,\n width: `${width}px`,\n marginBottom: `${(100 * (Math.min(0, v) - min)) / (max - min)}%`,\n marginRight: `max(1px,${marginRight}px)`,\n } as any;\n if (!v) {\n style.height = '100%';\n // if there is no bar, make full height, but transparent bar so that it height is the same as full\n // bar's one\n style.backgroundColor = 'inherit';\n }\n return <div key={i} className={block('barchart-bar')} style={style} />;\n })}\n </div>\n );\n};\n\nexport default BarChart;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport hummerFormat from '../../common/hammer/format';\nimport type {TPerformanceCounters} from '../../store/reducers/navigation/tabs/queue/types';\nimport BarChart from './BarChart';\nimport {Tooltip} from '../Tooltip/Tooltip';\nimport MetaTable from '../MetaTable/MetaTable';\n\nimport './Multimeter.scss';\n\nconst block = cn('multimeter');\n\ninterface Props extends Partial<TPerformanceCounters> {\n show: keyof TPerformanceCounters;\n showTooltip?: boolean;\n format?: (value: number) => React.ReactNode;\n}\n\nconst Multimeter: React.VFC<Props> = ({show, format, ...counters}) => {\n const formatter = format || hummerFormat.Number;\n\n const counterNames = ['1d', '1h', '1m'] as const;\n const content = (\n <MetaTable\n className={block('tooltip')}\n items={counterNames.map((key) => {\n return {key, value: formatter(counters[key] ?? 0)};\n })}\n />\n );\n\n return (\n <div className={block()}>\n <Tooltip content={content}>\n <BarChart values={counterNames.map((key) => counters[key] ?? 0)} />\n </Tooltip>\n <div className={block('value')}>{formatter(counters[show] ?? 0)}</div>\n </div>\n );\n};\n\nexport default Multimeter;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\n\nimport format from '../../../../../common/hammer/format';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport Label from '../../../../../components/Label/Label';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport {SubjectCard} from '../../../../../components/SubjectLink/SubjectLink';\n\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {isNull} from '../../../../../utils';\nimport {getTargetQueue} from '../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Meta.scss';\n\nconst block = cn('consumer-meta');\n\ninterface Props {\n targetQueue?: string;\n owner?: string;\n partitionCount?: number;\n readDataWeightRate?: TPerformanceCounters;\n readRowCountRate?: TPerformanceCounters;\n}\n\nconst Meta: React.FC<Props> = ({owner, partitionCount, readDataWeightRate, readRowCountRate}) => {\n const {vital} = useSelector(getTargetQueue) ?? {};\n\n return (\n <ErrorBoundary>\n <div className={block('header')}>\n <div className={block('header-title', 'elements-heading elements-heading_size_xs')}>\n Meta\n </div>\n </div>\n <MetaTable\n className={block()}\n items={[\n [\n {\n key: 'owner',\n label: 'Owner',\n value: owner && <SubjectCard name={owner} />,\n visible: !isNull(owner),\n },\n ],\n [\n {\n key: 'vital',\n label: 'Vital',\n value: <Label theme=\"default\" text={vital ? 'True' : 'False'} />,\n visible: !isNull(vital),\n },\n {\n key: 'partition_count',\n label: 'Partition count',\n value: partitionCount,\n visible: !isNull(partitionCount),\n },\n ],\n [\n {\n key: 'read-data-weight-rate',\n label: 'Data weight read rate',\n value: (\n <Multimeter\n {...readDataWeightRate}\n show=\"1m\"\n format={format.BytesPerSecond}\n />\n ),\n visible: !isNull(readDataWeightRate),\n },\n {\n key: 'read-row-count-rate',\n label: 'Rows read rate',\n value: (\n <Multimeter\n {...readRowCountRate}\n show=\"1m\"\n format={format.RowsPerSecond}\n />\n ),\n visible: !isNull(readRowCountRate),\n },\n ],\n ]}\n />\n </ErrorBoundary>\n );\n};\n\nexport default React.memo(Meta);\n","import React, {ComponentType} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {CONSUMER_MODE} from '../../../../../constants/navigation/tabs/consumer';\nimport {changeConsumerMode} from '../../../../../store/actions/navigation/tabs/consumer/filters';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getConsumerMode} from '../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Toolbar.scss';\n\nconst block = cn('consumer-toolbar');\n\ninterface Props extends PropsFromRedux {\n extras: ComponentType;\n}\n\nconst tabItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: CONSUMER_MODE.METRICS,\n text: 'Metrics',\n },\n {\n value: CONSUMER_MODE.PARTITIONS,\n text: 'Partitions',\n },\n];\n\nconst Toolbar: React.VFC<Props> = ({extras: Extras, consumerMode, changeConsumerMode}) => {\n return (\n <div className={block()}>\n <RadioButton value={consumerMode} onChange={changeConsumerMode} items={tabItems} />\n <Extras />\n </div>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n consumerMode: getConsumerMode(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeConsumerMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Toolbar);\n","import React from 'react';\nimport moment from 'moment';\nimport type {Column} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../common/hammer/format';\nimport Label from '../../../../../components/Label/Label';\nimport Link from '../../../../../components/Link/Link';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport {SubjectCard} from '../../../../../components/SubjectLink/SubjectLink';\nimport WarningIcon from '../../../../../components/WarningIcon/WarningIcon';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {Host} from '../../../../../containers/Host/Host';\nimport type {YTError} from '../../../../../types';\nimport {genNavigationUrl} from '../../../../../utils/navigation/navigation';\nimport {ClickableText} from '../../../../../components/ClickableText/ClickableText';\nimport {showErrorPopup} from '../../../../../utils/utils';\n\nconst DISPLAY_FORMAT = 'DD-MM-YYYY HH:mm:ss';\n\nexport function bool<T>(name: string, getter: (row: T) => boolean): Column<T> {\n return {\n name,\n render({row}) {\n return <Label theme=\"default\" text={getter(row) ? 'True' : 'False'} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function datetime<T>(name: string, getter: (row: T) => string | null): Column<T> {\n return {\n name,\n render({row}) {\n return moment(getter(row)).format(DISPLAY_FORMAT);\n },\n sortAccessor(row) {\n return moment(getter(row)).valueOf();\n },\n };\n}\n\nexport function error<T>(\n name: string,\n getter: (row: T) => YTError | undefined,\n className?: string,\n): Column<T> {\n return {\n name,\n render({row}) {\n const error = getter(row);\n if (!error) return null;\n\n return (\n <WarningIcon\n className={className}\n color=\"danger\"\n hoverContent={<HoverContent error={error} />}\n >\n Error\n </WarningIcon>\n );\n },\n sortAccessor: getter,\n };\n}\n\nfunction HoverContent({error}: {error: YTError}) {\n return (\n <span>\n {error.message ?? 'Error'}{' '}\n <ClickableText onClick={() => showErrorPopup(error)}>Details</ClickableText>\n </span>\n );\n}\n\nexport function host<T>(name: string, getter: (row: T) => string, classNames: string): Column<T> {\n return {\n name,\n render({row}) {\n const host = getter(row);\n return <Host asTabletNode address={host} copyBtnClassName={classNames} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function multimeter<T>(\n name: string,\n getter: (row: T) => TPerformanceCounters,\n show: keyof TPerformanceCounters,\n valueFormat: (value: number) => React.ReactNode = format.Number,\n): Column<T> {\n return {\n name,\n render({row}) {\n const counters = getter(row);\n return <Multimeter {...counters} show={show} format={valueFormat} />;\n },\n sortAccessor(row) {\n const counters = getter(row);\n return counters['1m'];\n },\n };\n}\n\nexport function number<T>(name: string, getter: (row: T) => number | null): Column<T> {\n return {\n name,\n align: 'right',\n render({row}) {\n return format.Number(getter(row));\n },\n sortAccessor: getter,\n };\n}\n\nexport function string<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n return getter(row);\n },\n sortAccessor: getter,\n };\n}\n\nexport function user<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n return <SubjectCard name={getter(row)} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function ypath<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n const consumer = getter(row);\n if (!consumer) return null;\n\n const [cluster, path] = consumer.split(':');\n const url = genNavigationUrl({cluster, path});\n\n return (\n <Link url={url} routed>\n {consumer}\n </Link>\n );\n },\n sortAccessor: getter,\n };\n}\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../../components/Block/Block';\nimport {NoContent} from '../../../../../../components/NoContent/NoContent';\nimport {CONSUMER_RATE_MODE} from '../../../../../../constants/navigation/tabs/consumer';\nimport {\n datetime,\n error,\n multimeter,\n number,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport {loadConsumerPartitions} from '../../../../../../store/actions/navigation/tabs/consumer/partitions';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedPartition,\n getConsumerPartitionsColumns,\n getConsumerRateMode,\n getConsumerTimeWindow,\n getPartitions,\n getPartitionsError,\n getPartitionsLoaded,\n getPartitionsLoading,\n getTargetQueue,\n} from '../../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Partitions.scss';\n\nconst block = cn('consumer-partitions');\n\nconst readRateName: Record<CONSUMER_RATE_MODE, string> = {\n [CONSUMER_RATE_MODE.ROWS]: 'Read rate',\n [CONSUMER_RATE_MODE.DATA_WEIGHT]: 'Read rate',\n};\nconst readRateGetter: Record<CONSUMER_RATE_MODE, (row: SelectedPartition) => TPerformanceCounters> =\n {\n [CONSUMER_RATE_MODE.ROWS]: (x) => x.read_row_count_rate,\n [CONSUMER_RATE_MODE.DATA_WEIGHT]: (x) => x.read_data_weight_rate,\n };\n\nconst getColumns = createSelector(\n [getConsumerRateMode, getConsumerTimeWindow, getConsumerPartitionsColumns],\n (rateMode, timeWindow, columns): Array<Column<SelectedPartition>> => {\n return columns\n .filter((column) => column.checked)\n .map(({name, caption}) => {\n if (name === 'error') {\n return error<SelectedPartition>(caption, (x) => x[name], block('error'));\n } else if (name === 'read_rate') {\n return multimeter<SelectedPartition>(\n readRateName[rateMode],\n readRateGetter[rateMode],\n timeWindow,\n rateMode === CONSUMER_RATE_MODE.ROWS\n ? format.RowsPerSecond\n : format.BytesPerSecond,\n );\n } else if (name === 'next_row_commit_time') {\n return datetime<SelectedPartition>(caption, (x) => x[name]);\n } else {\n return number<SelectedPartition>(caption, (x) => x[name]);\n }\n });\n },\n);\n\nconst settings: Settings = {displayIndices: false};\n\nconst Partitions: React.VFC<PropsFromRedux> = ({\n loadConsumerPartitions,\n columns,\n partitions,\n partitionsError,\n partitionsLoading,\n partitionsLoaded,\n}) => {\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n useEffect(() => {\n if (queue) {\n loadConsumerPartitions(queue);\n }\n }, [queue]);\n\n if (!queue) {\n return (\n <NoContent\n hint={'Please select a queue'}\n warning={\"You don't have any selected queues\"}\n />\n );\n }\n\n if (partitionsError) {\n return <ErrorBlock error={partitionsError} topMargin=\"half\" />;\n }\n\n return (\n <DataTableYT\n className={block('table-row')}\n columns={columns}\n data={partitions}\n loading={partitionsLoading}\n loaded={partitionsLoaded}\n useThemeYT\n settings={settings}\n />\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n columns: getColumns(state),\n partitions: getPartitions(state),\n partitionsError: getPartitionsError(state),\n partitionsLoading: getPartitionsLoading(state),\n partitionsLoaded: getPartitionsLoaded(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadConsumerPartitions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Partitions);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n CONSUMER_PARTITIONS_LOAD_FAILURE,\n CONSUMER_PARTITIONS_LOAD_REQUEST,\n CONSUMER_PARTITIONS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {ConsumerPartitionsAction} from '../../../../../store/reducers/navigation/tabs/consumer/partitions';\nimport type {YtConsumerPartition} from '../../../../../store/reducers/navigation/tabs/consumer/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype ConsumerThunkAction = ThunkAction<void, RootState, unknown, ConsumerPartitionsAction>;\n\nexport function loadConsumerPartitions(queue: string): ConsumerThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: CONSUMER_PARTITIONS_LOAD_REQUEST});\n return ytApiV3Id\n .get(\n YTApiId.queueConsumerPartitions,\n prepareRequest(`/@queue_consumer_partitions/${queue.replace(/\\//g, '\\\\/')}`, {\n path,\n transaction,\n }),\n )\n .then((data: YtConsumerPartition[]) => {\n dispatch({\n type: CONSUMER_PARTITIONS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: CONSUMER_PARTITIONS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport Filter from '../../../../../../components/Filter/Filter';\nimport ColumnSelector from '../../../../../../components/ColumnSelector/ColumnSelector';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {CONSUMER_RATE_MODE} from '../../../../../../constants/navigation/tabs/consumer';\nimport {\n changeConsumerPartitionIndex,\n changeConsumerPartitionsColumns,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/consumer/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n getConsumerPartitionIndex,\n getConsumerPartitionsColumns,\n getConsumerRateMode,\n getConsumerTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/consumer';\nimport Button from '../../../../../../components/Button/Button';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport Dropdown from '../../../../../../components/Dropdown/Dropdown';\n\nimport './PartitionsExtraControls.scss';\nimport {PartitionColumn} from '../../../../../../store/reducers/navigation/tabs/consumer/filters';\n\nconst block = cn('consumer-partitions');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: CONSUMER_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: CONSUMER_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nexport const timeItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: '1m' as keyof TPerformanceCounters,\n text: '1m',\n },\n {\n value: '1h' as keyof TPerformanceCounters,\n text: '1h',\n },\n {\n value: '1d' as keyof TPerformanceCounters,\n text: '1d',\n },\n];\n\nexport interface CompactColumnSelectorProps<Names> {\n items: Array<PartitionColumn<Names>>;\n onChange: Function;\n}\nexport function CompactColumnSelector<Names>({items, onChange}: CompactColumnSelectorProps<Names>) {\n return (\n <Dropdown\n className={block('filters-item')}\n trigger=\"click\"\n directions={['bottom']}\n button={\n <Button pin={'round-round'}>\n <Icon awesome=\"table\" face=\"light\" />\n Columns\n </Button>\n }\n template={\n <ColumnSelector\n items={items}\n onChange={onChange}\n className={block('custom-column-selector')}\n />\n }\n />\n );\n}\n\nconst PartitionsExtraControls: React.VFC<Props> = ({\n consumerPartitionIndex,\n consumerRateMode,\n consumerTimeWindow,\n partitionsColumns,\n changeConsumerPartitionIndex,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n changeConsumerPartitionsColumns,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={consumerPartitionIndex}\n onChange={changeConsumerPartitionIndex}\n placeholder=\"Partition index...\"\n />\n <div className={block('divider')} />\n <RadioButton\n value={consumerRateMode}\n onChange={changeConsumerRateMode}\n items={rateItems}\n />\n <RadioButton\n value={consumerTimeWindow}\n onChange={changeConsumerTimeWindow}\n items={timeItems}\n />\n <CompactColumnSelector\n onChange={changeConsumerPartitionsColumns}\n items={partitionsColumns}\n />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n consumerPartitionIndex: getConsumerPartitionIndex(state),\n consumerRateMode: getConsumerRateMode(state),\n consumerTimeWindow: getConsumerTimeWindow(state),\n partitionsColumns: getConsumerPartitionsColumns(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeConsumerPartitionIndex,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n changeConsumerPartitionsColumns,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(PartitionsExtraControls);\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ErrorBlock from '../../../../components/Block/Block';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {CONSUMER_MODE} from '../../../../constants/navigation/tabs/consumer';\nimport {loadConsumerStatus} from '../../../../store/actions/navigation/tabs/consumer/status';\nimport type {RootState} from '../../../../store/reducers';\nimport {\n getConsumerMode,\n getOwner,\n getPartitionCount,\n getReadDataWeightRate,\n getReadRowCountRate,\n getStatusError,\n} from '../../../../store/selectors/navigation/tabs/consumer';\n\nimport TargetQueue from './TargetQueue/TargetQueue';\nimport Meta from './Meta/Meta';\nimport Toolbar from './Toolbar/Toolbar';\nimport ConsumerMetrics from './views/ConsumerMetrics/ConsumerMetrics';\nimport Partitions from './views/Partitions/Partitions';\nimport PartitionsExtraControls from './views/Partitions/PartitionsExtraControls';\n\nconst views: Record<CONSUMER_MODE, {ExtraControls: ComponentType; View: ComponentType}> = {\n [CONSUMER_MODE.METRICS]: {ExtraControls: () => null, View: ConsumerMetrics},\n [CONSUMER_MODE.PARTITIONS]: {ExtraControls: PartitionsExtraControls, View: Partitions},\n};\n\nconst emptyView: {ExtraControls: ComponentType; View: ComponentType} = {\n ExtraControls: () => null,\n View: () => null,\n};\n\nfunction useViewByMode(mode: CONSUMER_MODE): {ExtraControls: ComponentType; View: ComponentType} {\n return views[mode] || emptyView;\n}\n\nconst Consumer: React.VFC<PropsFromRedux> = ({\n loadConsumerStatus,\n owner,\n partitionCount,\n readDataWeightRate,\n readRowCountRate,\n consumerMode,\n statusError,\n}) => {\n useEffect(() => {\n loadConsumerStatus();\n }, []);\n\n const {ExtraControls, View} = useViewByMode(consumerMode);\n\n if (statusError) {\n return <ErrorBlock error={statusError} topMargin=\"none\" />;\n }\n\n return (\n <ErrorBoundary>\n <TargetQueue />\n <Meta\n owner={owner}\n partitionCount={partitionCount}\n readDataWeightRate={readDataWeightRate}\n readRowCountRate={readRowCountRate}\n />\n <WithStickyToolbar toolbar={<Toolbar extras={ExtraControls} />} content={<View />} />\n </ErrorBoundary>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n owner: getOwner(state),\n partitionCount: getPartitionCount(state),\n readDataWeightRate: getReadDataWeightRate(state),\n readRowCountRate: getReadRowCountRate(state),\n consumerMode: getConsumerMode(state),\n statusError: getStatusError(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadConsumerStatus,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Consumer);\n","import React from 'react';\n\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {getPath} from '../../../../../../store/selectors/navigation';\nimport {getTargetQueue} from '../../../../../../store/selectors/navigation/tabs/consumer';\nimport {useSelector} from 'react-redux';\nimport ErrorBoundary from '../../../../../../components/ErrorBoundary/ErrorBoundary';\nimport {NoContent} from '../../../../../../components/NoContent/NoContent';\nimport UIFactory from '../../../../../../UIFactory';\n\nexport default function ConsumerMetrics() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n const MetricsComponent = UIFactory.getComponentForConsumerMetrics()!;\n\n if (!MetricsComponent) {\n return <NoContent warning={'Metrics are not supported for the installation'} />;\n }\n\n if (!queue) {\n return (\n <NoContent\n hint={'Please select a queue'}\n warning={\"You don't have any selected queues\"}\n />\n );\n }\n\n return (\n <ErrorBoundary>\n <MetricsComponent {...{cluster, path, targetQueue: queue}} />{' '}\n </ErrorBoundary>\n );\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n CONSUMER_STATUS_LOAD_FAILURE,\n CONSUMER_STATUS_LOAD_REQUEST,\n CONSUMER_STATUS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {ConsumerStatusAction} from '../../../../../store/reducers/navigation/tabs/consumer/status';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {ConsumerFiltersAction} from '../../../../../store/reducers/navigation/tabs/consumer/filters';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport {\n getConsumerRegisteredQueues,\n getTargetQueue,\n} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport {changeConsumerFilters} from './filters';\n\ntype ConsumerThunkAction = ThunkAction<\n void,\n RootState,\n unknown,\n ConsumerStatusAction | ConsumerFiltersAction\n>;\n\nexport function loadConsumerStatus(): ConsumerThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: CONSUMER_STATUS_LOAD_REQUEST});\n return ytApiV3Id\n .get(\n YTApiId.queueConsumerStatus,\n prepareRequest('/@queue_consumer_status', {path, transaction}),\n )\n .then((data) => {\n if (data.error) {\n throw data.error;\n }\n dispatch({\n type: CONSUMER_STATUS_LOAD_SUCCESS,\n data,\n });\n\n const state2 = getState();\n const targetQueue = getTargetQueue(state2);\n const queues = getConsumerRegisteredQueues(state2);\n if (targetQueue && !queues?.find(({queue}) => targetQueue.queue === queue)) {\n dispatch(changeConsumerFilters({targetQueue: undefined}));\n }\n })\n .catch((error: Error) => {\n dispatch({\n type: CONSUMER_STATUS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection, {\n CollapsibleSectionProps,\n} from '../../components/CollapsibleSection/CollapsibleSection';\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Alert from '../../components/Alert/Alert';\nimport {UI_COLLAPSIBLE_SIZE} from '../../constants/global/index';\nimport {YTError} from '../../types/index';\n\nconst block = cn('yt-alerts');\n\nexport type AlertsProps = {\n className?: string;\n items?: Array<YTError> | Record<string, YTError>;\n marginDirection?: CollapsibleSectionProps['marginDirection'];\n};\n\nexport function Alerts({className, items, marginDirection = 'bottom'}: AlertsProps) {\n if (isEmpty_(items)) {\n return null;\n }\n\n return (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <CollapsibleSection\n name=\"Alerts\"\n size={UI_COLLAPSIBLE_SIZE}\n marginDirection={marginDirection}\n >\n {map_(items, (alert, index) => {\n return <Alert key={index} error={alert} />;\n })}\n </CollapsibleSection>\n </div>\n </ErrorBoundary>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../../common/hammer/format';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {isNull} from '../../../../../utils';\n\nimport './Meta.scss';\n\nconst block = cn('queue-meta');\n\ninterface Props {\n partitionCount?: number;\n family?: string;\n writeDataWeightRate?: TPerformanceCounters;\n writeRowCountRate?: TPerformanceCounters;\n}\n\nconst Meta: React.VFC<Props> = ({\n partitionCount,\n family,\n writeDataWeightRate,\n writeRowCountRate,\n}) => {\n return (\n <ErrorBoundary>\n <div className=\"elements-heading elements-heading_size_xs\">Meta</div>\n <MetaTable\n className={block()}\n items={[\n [\n {\n key: 'partition-count',\n label: 'Partition count',\n value: partitionCount,\n visible: !isNull(partitionCount),\n },\n {\n key: 'family',\n label: 'Family',\n value: family,\n visible: !isNull(family),\n },\n ],\n [\n {\n key: 'write-row-count-rate',\n label: 'Rows write rate',\n value: (\n <Multimeter\n {...writeRowCountRate}\n show=\"1m\"\n format={format.RowsPerSecond}\n />\n ),\n visible: !isNull(writeRowCountRate),\n },\n {\n key: 'write-data-weight-rate',\n label: 'Data weight write rate',\n value: (\n <Multimeter\n {...writeDataWeightRate}\n show=\"1m\"\n format={format.BytesPerSecond}\n />\n ),\n visible: !isNull(writeDataWeightRate),\n },\n ],\n ]}\n />\n </ErrorBoundary>\n );\n};\n\nexport default React.memo(Meta);\n","import type {ChangeEvent} from 'react';\n\nimport {\n QUEUE_CHANGE_PARTITIONS_COLUMNS,\n QUEUE_CHANGE_PERSISTED_STATE,\n QUEUE_MODE,\n QUEUE_RATE_MODE,\n} from '../../../../../constants/navigation/tabs/queue';\nimport type {\n QueueFiltersAction,\n QueuePartitionsColumns,\n} from '../../../../../store/reducers/navigation/tabs/queue/filters';\nimport {PartitionColumn} from '../../../../reducers/navigation/tabs/consumer/filters';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\n\nexport function changeQueueMode(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueMode: evt.target.value as QUEUE_MODE},\n };\n}\n\nexport function changeQueuePartitionIndex(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queuePartitionIndex: value},\n };\n}\n\nexport function changeQueueTabletCellHost(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTabletCellHost: value},\n };\n}\n\nexport function changeQueueTabletCellId(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTabletCellId: value},\n };\n}\n\nexport function changeQueueConsumerName(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueConsumerName: value},\n };\n}\n\nexport function changeQueueOwner(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueOwner: value},\n };\n}\n\nexport function changeQueueRateMode(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueRateMode: evt.target.value as QUEUE_RATE_MODE},\n };\n}\n\nexport function changeQueueTimeWindow(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTimeWindow: evt.target.value as keyof TPerformanceCounters},\n };\n}\n\ninterface CompactColumnSelectorPayload {\n items: Array<PartitionColumn<QueuePartitionsColumns>>;\n}\nexport function changeQueuePartitionsColumns({\n items,\n}: CompactColumnSelectorPayload): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PARTITIONS_COLUMNS,\n data: {partitionsColumns: items},\n };\n}\n","import React, {ComponentType} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_MODE} from '../../../../../constants/navigation/tabs/queue';\nimport {changeQueueMode} from '../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getQueueMode} from '../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Toolbar.scss';\n\nconst block = cn('queue-toolbar');\n\ninterface Props extends PropsFromRedux {\n extras: ComponentType;\n}\n\nconst tabItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_MODE.METRICS,\n text: 'Metrics',\n },\n {\n value: QUEUE_MODE.PARTITIONS,\n text: 'Partitions',\n },\n {\n value: QUEUE_MODE.CONSUMERS,\n text: 'Consumers',\n },\n];\n\nconst Toolbar: React.VFC<Props> = ({extras: Extras, queueMode, changeQueueMode}) => {\n return (\n <div className={block()}>\n <RadioButton value={queueMode} onChange={changeQueueMode} items={tabItems} />\n <Extras />\n </div>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queueMode: getQueueMode(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueueMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Toolbar);\n","import React from 'react';\n\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {getPath} from '../../../../../../store/selectors/navigation';\nimport {useSelector} from 'react-redux';\nimport ErrorBoundary from '../../../../../../components/ErrorBoundary/ErrorBoundary';\nimport UIFactory from '../../../../../../UIFactory';\n\nexport default function QueueMetrics() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n\n const MetricsComponent = UIFactory.getComonentForQueueMetrics()!;\n\n return (\n <ErrorBoundary>\n <MetricsComponent {...{cluster, path}} />\n </ErrorBoundary>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n bool,\n error,\n multimeter,\n ypath,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedConsumer,\n getConsumers,\n getQueueRateMode,\n getQueueTimeWindow,\n getStatusLoaded,\n getStatusLoading,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Consumers.scss';\n\nconst block = cn('queue-consumers');\n\nconst readRateName: Record<QUEUE_RATE_MODE, string> = {\n [QUEUE_RATE_MODE.ROWS]: 'Read rate',\n [QUEUE_RATE_MODE.DATA_WEIGHT]: 'Read rate',\n};\nconst readRateGetter: Record<QUEUE_RATE_MODE, (row: SelectedConsumer) => TPerformanceCounters> = {\n [QUEUE_RATE_MODE.ROWS]: (x) => x.read_row_count_rate,\n [QUEUE_RATE_MODE.DATA_WEIGHT]: (x) => x.read_data_weight_rate,\n};\n\nconst getColumns = createSelector(\n [getQueueRateMode, getQueueTimeWindow],\n (rateMode, timeWindow): Array<Column<SelectedConsumer>> => [\n ypath<SelectedConsumer>('Consumer', (x) => x.consumer),\n error<SelectedConsumer>('Error', (x) => x.error),\n multimeter<SelectedConsumer>(\n readRateName[rateMode],\n readRateGetter[rateMode],\n timeWindow,\n rateMode === QUEUE_RATE_MODE.ROWS ? format.RowsPerSecond : format.BytesPerSecond,\n ),\n bool<SelectedConsumer>('Vital', (x) => x.vital),\n ],\n);\n\nconst settings: Settings = {displayIndices: false};\n\nexport default function Consumers() {\n const columns = useSelector(getColumns);\n const consumers = useSelector(getConsumers);\n const consumersLoading = useSelector(getStatusLoading);\n const consumersLoaded = useSelector(getStatusLoaded);\n\n return (\n <DataTableYT\n className={block('table-row')}\n columns={columns}\n data={consumers}\n loading={consumersLoading}\n loaded={consumersLoaded}\n useThemeYT\n settings={settings}\n />\n );\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport Filter from '../../../../../../components/Filter/Filter';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n changeQueueConsumerName,\n changeQueueOwner,\n changeQueueRateMode,\n changeQueueTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport {\n getQueueConsumerName,\n getQueueOwner,\n getQueueRateMode,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './ConsumersExtraControls.scss';\n\nconst block = cn('queue-consumers');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: QUEUE_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nconst ConsumersExtraControls: React.VFC<Props> = ({\n queueConsumerName,\n queueRateMode,\n changeQueueConsumerName,\n changeQueueRateMode,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={queueConsumerName}\n onChange={changeQueueConsumerName}\n placeholder=\"Consumer name...\"\n />\n <RadioButton value={queueRateMode} onChange={changeQueueRateMode} items={rateItems} />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queueConsumerName: getQueueConsumerName(state),\n queueOwner: getQueueOwner(state),\n queueRateMode: getQueueRateMode(state),\n queueTimeWindow: getQueueTimeWindow(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueueConsumerName,\n changeQueueOwner,\n changeQueueRateMode,\n changeQueueTimeWindow,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(ConsumersExtraControls);\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../../components/Block/Block';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n datetime,\n error,\n host,\n multimeter,\n number,\n string,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport {loadQueuePartitions} from '../../../../../../store/actions/navigation/tabs/queue/partitions';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedPartition,\n getPartitions,\n getPartitionsError,\n getPartitionsLoaded,\n getPartitionsLoading,\n getQueuePartitionsColumns,\n getQueueRateMode,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Partitions.scss';\n\nconst block = cn('queue-partitions');\n\nconst writeRateName: Record<QUEUE_RATE_MODE, string> = {\n [QUEUE_RATE_MODE.ROWS]: 'Write rate',\n [QUEUE_RATE_MODE.DATA_WEIGHT]: 'Write rate',\n};\n\nconst writeRateGetter: Record<QUEUE_RATE_MODE, (row: SelectedPartition) => TPerformanceCounters> = {\n [QUEUE_RATE_MODE.ROWS]: (x) => x.write_row_count_rate,\n [QUEUE_RATE_MODE.DATA_WEIGHT]: (x) => x.write_data_weight_rate,\n};\n\nconst getColumns = createSelector(\n [getQueueRateMode, getQueueTimeWindow, getQueuePartitionsColumns],\n (rateMode, timeWindow, columns): Array<Column<SelectedPartition>> => {\n return columns\n .filter((column) => column.checked)\n .map(({name, caption}) => {\n if (name === 'error') {\n return error<SelectedPartition>(caption, (x) => x[name], block('error'));\n } else if (name === 'host') {\n return host<SelectedPartition>(\n caption,\n (x) => x.meta?.host,\n block('hover-action'),\n );\n } else if (name === 'cell_id') {\n return string<SelectedPartition>(caption, (x) => x.meta?.cell_id);\n } else if (name === 'write_rate') {\n return multimeter<SelectedPartition>(\n writeRateName[rateMode],\n writeRateGetter[rateMode],\n timeWindow,\n rateMode === QUEUE_RATE_MODE.ROWS\n ? format.RowsPerSecond\n : format.BytesPerSecond,\n );\n } else if (name === 'last_row_commit_time') {\n return datetime<SelectedPartition>(caption, (x) => x[name]);\n } else {\n return number<SelectedPartition>(caption, (x) => x[name]);\n }\n });\n },\n);\n\nconst settings: Settings = {displayIndices: false};\n\nconst Partitions: React.VFC<PropsFromRedux> = ({\n loadQueuePartitions,\n columns,\n partitions,\n partitionsError,\n partitionsLoading,\n partitionsLoaded,\n}) => {\n useEffect(() => {\n loadQueuePartitions();\n }, []);\n\n if (partitionsError) {\n return <ErrorBlock error={partitionsError} topMargin=\"half\" />;\n }\n\n return (\n <DataTableYT\n className={block()}\n columns={columns}\n data={partitions}\n loading={partitionsLoading}\n loaded={partitionsLoaded}\n useThemeYT\n settings={settings}\n />\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n columns: getColumns(state),\n partitions: getPartitions(state),\n partitionsError: getPartitionsError(state),\n partitionsLoading: getPartitionsLoading(state),\n partitionsLoaded: getPartitionsLoaded(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadQueuePartitions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Partitions);\n","import type {ThunkAction} from 'redux-thunk';\nimport {\n QUEUE_PARTITIONS_LOAD_FAILURE,\n QUEUE_PARTITIONS_LOAD_REQUEST,\n QUEUE_PARTITIONS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/queue';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {QueuePartitionsAction} from '../../../../../store/reducers/navigation/tabs/queue/partitions';\nimport type {YtQueuePartition} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype QueueThunkAction = ThunkAction<void, RootState, unknown, QueuePartitionsAction>;\n\nexport function loadQueuePartitions(): QueueThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: QUEUE_PARTITIONS_LOAD_REQUEST});\n\n return ytApiV3Id\n .get(YTApiId.queuePartitions, prepareRequest('/@queue_partitions', {path, transaction}))\n .then(async (data: YtQueuePartition[]) => {\n dispatch({\n type: QUEUE_PARTITIONS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: QUEUE_PARTITIONS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {\n CompactColumnSelector,\n timeItems,\n} from '../../../Consumer/views/Partitions/PartitionsExtraControls';\nimport Filter from '../../../../../../components/Filter/Filter';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n changeQueuePartitionIndex,\n changeQueuePartitionsColumns,\n changeQueueRateMode,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport {\n getQueuePartitionIndex,\n getQueuePartitionsColumns,\n getQueueRateMode,\n getQueueTabletCellHost,\n getQueueTabletCellId,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './PartitionsExtraControls.scss';\n\nconst block = cn('queue-partitions');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: QUEUE_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nconst PartitionsExtraControls: React.VFC<Props> = ({\n queuePartitionIndex,\n queueTabletCellHost,\n queueTabletCellId,\n queueRateMode,\n queueTimeWindow,\n queuePartitionsColumns,\n changeQueuePartitionIndex,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueRateMode,\n changeQueueTimeWindow,\n changeQueuePartitionsColumns,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={queuePartitionIndex}\n onChange={changeQueuePartitionIndex}\n placeholder=\"Partition index...\"\n />\n <Filter\n className={block('filter')}\n value={queueTabletCellHost}\n onChange={changeQueueTabletCellHost}\n placeholder=\"Tablet cell host...\"\n />\n <Filter\n className={block('filter')}\n value={queueTabletCellId}\n onChange={changeQueueTabletCellId}\n placeholder=\"Tablet cell ID...\"\n />\n <div className={block('divider')} />\n <RadioButton value={queueRateMode} onChange={changeQueueRateMode} items={rateItems} />\n <RadioButton\n value={queueTimeWindow}\n onChange={changeQueueTimeWindow}\n items={timeItems}\n />\n <CompactColumnSelector\n items={queuePartitionsColumns}\n onChange={changeQueuePartitionsColumns}\n />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queuePartitionIndex: getQueuePartitionIndex(state),\n queueTabletCellHost: getQueueTabletCellHost(state),\n queueTabletCellId: getQueueTabletCellId(state),\n queueRateMode: getQueueRateMode(state),\n queueTimeWindow: getQueueTimeWindow(state),\n queuePartitionsColumns: getQueuePartitionsColumns(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueuePartitionIndex,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueRateMode,\n changeQueueTimeWindow,\n changeQueuePartitionsColumns,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(PartitionsExtraControls);\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport {Alerts} from '../../../../components/Alerts/Alerts';\nimport ErrorBlock from '../../../../components/Block/Block';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {QUEUE_MODE} from '../../../../constants/navigation/tabs/queue';\nimport {loadQueueStatus} from '../../../../store/actions/navigation/tabs/queue/status';\nimport type {RootState} from '../../../../store/reducers';\nimport {\n getFamily,\n getPartitionCount,\n getQueueMode,\n getQueueStatusDataAlerts,\n getStatusError,\n getWriteDataWeightRate,\n getWriteRowCountRate,\n} from '../../../../store/selectors/navigation/tabs/queue';\n\nimport Meta from './Meta/Meta';\nimport Toolbar from './Toolbar/Toolbar';\nimport QueueMetrics from './views/QueueMetrics/QueueMetrics';\nimport Consumers from './views/Consumers/Consumers';\nimport ConsumersExtraControls from './views/Consumers/ConsumersExtraControls';\nimport Partitions from './views/Partitions/Partitions';\nimport PartitionsExtraControls from './views/Partitions/PartitionsExtraControls';\nimport UIFactory from '../../../../UIFactory';\n\nconst emptyView = {ExtraControls: () => null, View: () => null};\n\nconst views: Record<QUEUE_MODE, {ExtraControls: ComponentType; View: ComponentType}> = {\n [QUEUE_MODE.METRICS]: {ExtraControls: () => null, View: () => null},\n [QUEUE_MODE.PARTITIONS]: {ExtraControls: PartitionsExtraControls, View: Partitions},\n [QUEUE_MODE.CONSUMERS]: {ExtraControls: ConsumersExtraControls, View: Consumers},\n};\n\nfunction useViewByMode(mode: QUEUE_MODE) {\n const component = UIFactory.getComonentForQueueMetrics();\n if (component && mode === QUEUE_MODE.METRICS) {\n return {ExtraControls: () => null, View: QueueMetrics};\n }\n\n return views[mode] || emptyView;\n}\n\nconst Queue: React.VFC<PropsFromRedux> = ({\n loadQueueStatus,\n family,\n partitionCount,\n writeDataWeightRate,\n writeRowCountRate,\n queueMode,\n statusError,\n}) => {\n useEffect(() => {\n loadQueueStatus();\n }, []);\n\n const {ExtraControls, View} = useViewByMode(queueMode);\n\n const items = useSelector(getQueueStatusDataAlerts);\n\n if (statusError) {\n return <ErrorBlock error={statusError} topMargin=\"none\" />;\n }\n\n return (\n <ErrorBoundary>\n <Alerts items={items} />\n <Meta\n family={family}\n partitionCount={partitionCount}\n writeDataWeightRate={writeDataWeightRate}\n writeRowCountRate={writeRowCountRate}\n />\n <WithStickyToolbar toolbar={<Toolbar extras={ExtraControls} />} content={<View />} />\n </ErrorBoundary>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n family: getFamily(state),\n partitionCount: getPartitionCount(state),\n writeDataWeightRate: getWriteDataWeightRate(state),\n writeRowCountRate: getWriteRowCountRate(state),\n queueMode: getQueueMode(state),\n statusError: getStatusError(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadQueueStatus,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Queue);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n QUEUE_STATUS_LOAD_FAILURE,\n QUEUE_STATUS_LOAD_REQUEST,\n QUEUE_STATUS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/queue';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {QueueStatusAction} from '../../../../../store/reducers/navigation/tabs/queue/status';\nimport type {YtQueueStatus} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype QueueThunkAction = ThunkAction<void, RootState, unknown, QueueStatusAction>;\n\nexport function loadQueueStatus(): QueueThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: QUEUE_STATUS_LOAD_REQUEST});\n return ytApiV3Id\n .get(YTApiId.queueStatus, prepareRequest('/@queue_status', {path, transaction}))\n .then((data: YtQueueStatus) => {\n if (data.error) {\n throw data.error;\n }\n dispatch({\n type: QUEUE_STATUS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: QUEUE_STATUS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport map_ from 'lodash/map';\nimport slice_ from 'lodash/slice';\n\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {\n GET_LOCKS,\n IS_PARTIAL,\n MAX_TRANSACTIONS_REQUESTS,\n} from '../../../../constants/navigation/tabs/locks';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {splitBatchResults} from '../../../../utils/utils';\n\nconst requests = new CancelHelper();\n\nfunction prepareData(locks, transactions = []) {\n return map_(locks, (lock, index) => {\n const item = {...lock};\n item.transaction = transactions[index] || {};\n item.transaction.id = item.transaction_id;\n item.index = index;\n\n return item;\n });\n}\n\nfunction getTransactions(rowLocks) {\n return (dispatch) => {\n const requests = map_(slice_(rowLocks, 0, MAX_TRANSACTIONS_REQUESTS), (lock) => {\n return {\n command: 'get',\n parameters: {\n path: '//sys/transactions/' + lock.transaction_id + '/@',\n attributes: ['title', 'start_time', 'operation_id'],\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTransactions, {requests})\n .then((data) => {\n const {error, results: transactions} = splitBatchResults(\n data,\n 'Failed to get transactions',\n );\n if (error) {\n return Promise.reject(error);\n }\n\n const locks = prepareData(rowLocks, transactions);\n const isPartial = locks.length > MAX_TRANSACTIONS_REQUESTS;\n\n dispatch({\n type: IS_PARTIAL,\n data: {isPartial},\n });\n\n dispatch({\n type: GET_LOCKS.SUCCESS,\n data: {locks},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_LOCKS.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function getLocks() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_LOCKS.REQUEST});\n requests.removeAllRequests();\n\n ytApiV3Id\n .get(YTApiId.navigationLocks, {\n parameters: prepareRequest('/@locks', {path, transaction}),\n cancellation: requests.saveCancelToken,\n })\n .then((locks) => dispatch(getTransactions(locks)))\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_LOCKS.CANCELLED});\n } else {\n dispatch({\n type: GET_LOCKS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_LOCKS.CANCELLED});\n };\n}\n\nexport function setLocksModeFilter(modeFilter) {\n return {type: GET_LOCKS.PARTITION, data: {modeFilter}};\n}\n","import find_ from 'lodash/find';\n\nimport {rumLogError} from '../rum/rum-counter';\nimport YT from '../config/yt-config';\n\nconst {clusters} = YT;\n\nexport function findClusterConfigByOperationId(operationId: string) {\n try {\n const cellTag = Number.parseInt(operationId?.split('-')[2], 16) >> 16; // eslint-disable-line no-bitwise\n return find_(clusters, (clusterConfig) => clusterConfig.primaryMaster?.cellTag === cellTag);\n } catch (error) {\n rumLogError(\n {\n message: 'Cannot find cluster config for operation',\n additional: {\n operationId,\n },\n },\n error as any,\n );\n }\n return null;\n}\n","import filter_ from 'lodash/filter';\n\nimport {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nconst getLocks = (state: RootState) => state.navigation.tabs.locks.locks;\nconst getLocksLoading = (state: RootState) => state.navigation.tabs.locks.loading;\nconst getLocksLoaded = (state: RootState) => state.navigation.tabs.locks.loaded;\nconst getLocksError = (state: RootState) => state.navigation.tabs.locks.error;\nexport const getLocksModeFilter = (state: RootState) => state.navigation.tabs.locks.modeFilter;\n\nexport const getLocksLoadStatus = createSelector(\n [getLocksLoading, getLocksLoaded, getLocksError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getLocksFiltered = createSelector(\n [getLocksModeFilter, getLocks],\n (modeFilter, items) => {\n if (!modeFilter) {\n return items;\n }\n return filter_(items, ({mode}) => mode === modeFilter);\n },\n);\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport unipika from '../../../../common/thor/unipika';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {FormattedLink, FormattedText} from '../../../../components/formatters';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable, {TemplateTime} from '../../../../components/MetaTable/MetaTable';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {Loader} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\nimport {Linkify} from '../../../../components/Linkify/Linkify';\n\nimport {MAX_TRANSACTIONS_REQUESTS} from '../../../../constants/navigation/tabs/locks';\nimport {\n abortAndReset,\n getLocks,\n setLocksModeFilter,\n} from '../../../../store/actions/navigation/tabs/locks';\nimport {Page} from '../../../../constants/index';\nimport {findClusterConfigByOperationId} from '../../../../utils/clusters';\n\nimport {\n getLocksFiltered,\n getLocksLoadStatus,\n getLocksModeFilter,\n} from '../../../../store/selectors/navigation/tabs/locks';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport Yson from '../../../../components/Yson/Yson';\nimport CustomRadioButton from '../../../../components/RadioButton/RadioButton';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\n\nimport './Locks.scss';\n\nconst block = cn('navigation-locks');\nconst messageBlock = cn('elements-message');\n\nclass Locks extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n isPartial: PropTypes.bool.isRequired,\n locks: PropTypes.arrayOf(\n PropTypes.shape({\n child_key: PropTypes.string,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n mode: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n transaction_id: PropTypes.string.isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.string.isRequired,\n start_time: PropTypes.string,\n title: PropTypes.string,\n operation_id: PropTypes.string,\n }).isRequired,\n }),\n ).isRequired,\n\n getLocks: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n };\n\n static renderIndex({index}) {\n return <FormattedText text={index + 1} />;\n }\n\n static renderLock(item) {\n return (\n <MetaTable\n qa=\"lock-meta-table\"\n items={[\n {key: 'id', value: item.id, className: block('id')},\n {key: 'mode', value: item.mode},\n {key: 'state', value: item.state},\n {\n key: 'child_key',\n value: item.child_key,\n visible: Boolean(item.child_key),\n },\n {\n key: 'attribute_key',\n value: item.attribute_key,\n visible: Boolean(item.attribute_key),\n },\n ]}\n />\n );\n }\n\n componentDidMount() {\n this.props.getLocks();\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n tableSettings = {\n theme: 'light',\n itemHeight: 100,\n columns: {\n items: {\n index: {\n sort: false,\n caption: '#',\n align: 'center',\n },\n lock: {\n sort: false,\n align: 'left',\n },\n transaction: {\n sort: false,\n align: 'left',\n },\n },\n sets: {\n default: {\n items: ['index', 'lock', 'transaction'],\n },\n },\n mode: 'default',\n },\n computeKey(item) {\n return item.id;\n },\n };\n\n renderTransaction = ({transaction}) => {\n const operationId = transaction.operation_id;\n const {id: clusterId} = findClusterConfigByOperationId(operationId) || {};\n if (operationId && !clusterId) {\n console.error(new Error(`Cannot find cluster by operation id ${operationId}`));\n }\n const operationIdUrl = `/${clusterId}/operations/${operationId}`;\n\n const title = unipika.decode(String(transaction.title));\n\n return (\n <MetaTable\n items={[\n {\n key: 'id',\n value: (\n <FormattedLink\n text={transaction.id}\n state={{\n page: Page.NAVIGATION,\n path: '//sys/transactions/' + transaction.id,\n }}\n />\n ),\n className: block('id'),\n },\n {\n key: 'title',\n value: (\n <Tooltip\n content={<Yson value={transaction.title} />}\n to={['top-center', 'bottom-center']}\n >\n <div className={block('title-tooltip')}>\n <div className={block('title', 'unipika')}>\n <Linkify className={'string'} text={title} />\n </div>\n </div>\n </Tooltip>\n ),\n visible: Boolean(transaction.title),\n },\n {\n key: 'start_time',\n value: (\n <TemplateTime time={transaction.start_time} valueFormat=\"DateTime\" />\n ),\n visible: Boolean(transaction.start_time),\n className: block('start-time'),\n },\n {\n key: 'operation_id',\n value: <Link url={operationIdUrl}>{operationId}</Link>,\n visible: Boolean(operationId) || Boolean(clusterId),\n },\n ]}\n />\n );\n };\n\n get templates() {\n return {\n index: Locks.renderIndex,\n lock: Locks.renderLock,\n transaction: this.renderTransaction,\n };\n }\n\n renderMessage() {\n return (\n <div className={messageBlock({theme: 'info'})}>\n <p className=\"elements-message__paragraph\">\n Transaction information was only loaded for first {MAX_TRANSACTIONS_REQUESTS}{' '}\n locks.\n </p>\n </div>\n );\n }\n\n onModeFilter = (e) => {\n const mode = e.target.value;\n this.props.setLocksModeFilter(mode);\n };\n\n renderModeFilter() {\n const {modeFilter} = this.props;\n return (\n <Toolbar\n className={block('toolbar')}\n itemsToWrap={[\n {\n name: 'buttons',\n node: (\n <CustomRadioButton\n qa=\"locks-type-filter\"\n onChange={this.onModeFilter}\n value={modeFilter}\n items={[\n {\n text: 'All',\n value: '',\n },\n {\n text: 'Exclusive',\n value: 'exclusive',\n },\n {\n text: 'Shared',\n value: 'shared',\n },\n {\n text: 'Snapshot',\n value: 'snapshot',\n },\n ]}\n />\n ),\n },\n ]}\n />\n );\n }\n\n renderContent() {\n const {isPartial, locks} = this.props;\n const toolbar = this.renderModeFilter();\n\n return (\n <WithStickyToolbar\n toolbar={toolbar}\n content={\n <Fragment>\n {isPartial && this.renderMessage()}\n <ElementsTable\n {...this.tableSettings}\n templates={this.templates}\n items={locks}\n css={block()}\n />\n </Fragment>\n }\n />\n );\n }\n\n render() {\n const {loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...this.props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? <Loader /> : this.renderContent()}\n </div>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, isPartial} = state.navigation.tabs.locks;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n modeFilter: getLocksModeFilter(state),\n locks: getLocksFiltered(state),\n isPartial,\n };\n};\nconst mapDispatchToProps = {\n getLocks,\n abortAndReset,\n setLocksModeFilter,\n};\n\nconst LocksConnected = connect(mapStateToProps, mapDispatchToProps)(Locks);\n\nexport default function LocksWithRum() {\n const loadState = useSelector(getLocksLoadStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_LOCKS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_LOCKS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <LocksConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Icon from '../Icon/Icon';\nimport {Button} from '@gravity-ui/uikit';\n\nimport './ErrorIcon.scss';\nimport {showErrorPopup} from '../../utils/utils';\n\nconst b = cn('yt-error-icon');\n\ninterface Props {\n className?: string;\n error?: any;\n}\n\nexport default function ErrorIcon(props: Props) {\n const {className, error} = props;\n return (\n <span className={b(null, className)}>\n <Button view=\"flat\" size=\"s\" pin=\"circle-circle\" onClick={() => showErrorPopup(error)}>\n <Icon className={b('icon')} awesome=\"exclamation-circle\" />\n </Button>\n </span>\n );\n}\n","import React, {useState} from 'react';\nimport {Text} from '@gravity-ui/uikit';\nimport Button from '../Button/Button';\nimport Icon from '../Icon/Icon';\nimport Modal from '../Modal/Modal';\nimport cn from 'bem-cn-lite';\n\nimport {useMarkdown} from '../Markdown/Markdown';\nimport './MarkdownLinePreview.scss';\n\nconst block = cn('one-line-text-preview');\nconst mdBlock = cn('yt-markdown');\n\ninterface Props {\n text: string;\n title: string;\n className?: string;\n allowHTML?: boolean;\n}\n\nexport function MarkdownLinePreview({text, title, className, allowHTML = false}: Props) {\n const [visible, setVisible] = useState(false);\n\n const showModal = () => {\n setVisible(true);\n };\n\n const hideModal = () => {\n setVisible(false);\n };\n\n const {result} = useMarkdown({text, allowHTML});\n\n const {plainText, html} = React.useMemo(() => {\n const {html} = result ?? {};\n const div = document.createElement('div');\n div.innerHTML = html ?? '';\n const plainText = div.innerText;\n return {html, plainText};\n }, [result]);\n\n return (\n <div className={block(null, className)}>\n <Text className={block('preview-text')} color={'primary'} ellipsis>\n {plainText}\n </Text>\n <Button onClick={showModal} view={'flat-secondary'} size={'m'} width={'auto'}>\n <Icon awesome=\"window-maximize\"></Icon>\n </Button>\n {visible ? (\n <Modal\n visible={visible}\n title={title}\n onOutsideClick={hideModal}\n onCancel={hideModal}\n footer={false}\n content={\n <div\n className={mdBlock(null, 'yfm')}\n dangerouslySetInnerHTML={{__html: html ?? ''}}\n />\n }\n />\n ) : null}\n </div>\n );\n}\n","import React from 'react';\nimport {Popover, Text} from '@gravity-ui/uikit';\nimport Icon from '../../../../../components/Icon/Icon';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {MarkdownLinePreview} from '../../../../../components/MarkdownLinePreview/MarkdownLinePreview';\nimport cn from 'bem-cn-lite';\n\nimport './ExternalDescription.scss';\n\nconst block = cn('external-description');\n\nexport interface ExternalSchemaDescription {\n name: string;\n type: string;\n glossaryEntity: {\n description: string;\n title: string;\n };\n}\n\ninterface Props {\n type: string;\n data: ExternalSchemaDescription;\n column: keyof ExternalSchemaDescription['glossaryEntity'];\n}\n\nexport function ExternalDescription({type, data, column}: Props) {\n const hasWarning = type !== data.type;\n const {[column]: markdown} = data.glossaryEntity ?? {};\n\n const typeMismatchElement = (\n <>\n <Text color={'warning'}>\n <Icon awesome=\"exclamation-triangle\" face=\"solid\" />\n There might be a type mismatch\n </Text>\n <MetaTable\n className={block('meta')}\n items={[\n {\n key: 'type',\n value: type,\n },\n {\n key: 'external type',\n value: data.type,\n },\n ]}\n />\n </>\n );\n return (\n <div className={block()}>\n {hasWarning ? (\n <Popover\n className={block('warning')}\n content={typeMismatchElement}\n placement={'left'}\n disabled={!hasWarning}\n >\n <Icon className={block('icon')} awesome=\"exclamation-triangle\" face=\"solid\" />\n </Popover>\n ) : null}\n {markdown ? (\n <MarkdownLinePreview\n className={block('preview')}\n text={markdown}\n title={data.name}\n allowHTML={true}\n />\n ) : (\n <Text className={block('preview')} color={'hint'} ellipsis>\n {'no description'}\n </Text>\n )}\n </div>\n );\n}\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport omit_ from 'lodash/omit';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport HelpLink from '../../../../components/HelpLink/HelpLink';\nimport Link from '../../../../components/Link/Link';\nimport {FormattedText} from '../../../../components/formatters';\nimport Filter from '../../../../components/Filter/Filter';\nimport Icon from '../../../../components/Icon/Icon';\nimport ErrorIcon from '../../../../components/ErrorIcon/ErrorIcon';\nimport SchemaDataType from '../../../../components/SchemaDataType/SchemaDataType';\nimport UIFactory from '../../../../UIFactory';\nimport {\n ExternalDescription,\n ExternalSchemaDescription,\n} from './ExternalDescription/ExternalDescription';\n\nimport {\n getComputedColumns,\n getFilteredSchema,\n getSchema,\n getSchemaMeta,\n} from '../../../../store/selectors/navigation/tabs/schema';\nimport {updateSchemaFilter} from '../../../../store/actions/navigation/tabs/schema';\nimport {getCluster} from '../../../../store/selectors/global';\nimport hammer from '../../../../common/hammer';\n\nimport './Schema.scss';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {getAttributesPath, getLoadState} from '../../../../store/selectors/navigation';\nimport {isFinalLoadingStatus, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {docsUrl} from '../../../../config';\nimport {YTError} from '../../../../../@types/types';\nimport {RootState} from '../../../../store/reducers';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst block = cn('navigation-schema');\nconst elementsBlock = cn('elements-message');\n\nconst COLUMNS_TO_HIDE: Partial<Record<SchemaColumnNames, boolean>> = {\n required: true,\n type: true,\n};\n\nexport type SchemaColumnNames = keyof SchemaItem | 'description' | 'title';\n\nexport type SchemaProps = {\n cluster: string;\n column?: string;\n path: string;\n schema: Array<SchemaItem>;\n filteredSchema?: Array<SchemaItem>;\n meta: Array<SchemaMetaItem>;\n computedColumns: SchemaComputedColumns<SchemaColumnNames>;\n\n updateFilter: (filter: string) => void;\n};\n\ntype SchemaItem = {\n index: number;\n name: string;\n required: boolean;\n type: string;\n type_v3: unknown;\n};\n\ntype SchemaMetaItem = {\n value: 'strong' | boolean;\n key: 'schema_mode' | 'strict' | 'unique_keys' | string;\n};\n\ntype SchemaComputedColumns<ColumnName extends string = string> = {\n items: Partial<Record<ColumnName, ColumnInfo>>;\n set: Array<ColumnName>;\n};\n\ntype SchemaState = {\n externalSchema?: Map<string, ExternalSchemaDescription>;\n externalSchemaUrl?: string;\n externalSchemaError?: YTError;\n};\n\nclass Schema extends Component<SchemaProps> {\n state: SchemaState;\n\n constructor(props: SchemaProps) {\n super(props);\n this.state = {\n externalSchemaUrl: undefined,\n externalSchema: undefined,\n externalSchemaError: undefined,\n };\n }\n\n componentDidMount() {\n this.loadExternalSchemaData();\n }\n\n get templates() {\n return {\n __default__(\n item: SchemaItem,\n column: Exclude<keyof SchemaItem, 'type_v3' | 'name' | 'required'>,\n ) {\n return <FormattedText text={item[column]} />;\n },\n name(item: Record<string, string>, column: string) {\n const {sort_order} = item;\n return (\n <span>\n {Boolean(sort_order) && (\n <Icon\n className={block('sort-icon')}\n awesome={\n sort_order === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n <FormattedText text={item[column]} />\n </span>\n );\n },\n required(item: SchemaItem) {\n const {required} = item;\n return (\n <span>\n {typeof required === 'boolean' ? String(required) : hammer.format.NO_VALUE}\n </span>\n );\n },\n type_v3(item: SchemaItem) {\n const {type_v3} = item;\n return <SchemaDataType type_v3={type_v3} />;\n },\n description: (item: SchemaItem) => {\n return this.renderExternalColumn(item, 'description');\n },\n title: (item: SchemaItem) => {\n return this.renderExternalColumn(item, 'title');\n },\n };\n }\n\n renderExternalColumn(item: SchemaItem, column: 'description' | 'title') {\n const {externalSchema} = this.state;\n const {type, name} = item;\n const data = externalSchema?.get(name);\n return data ? <ExternalDescription type={type} data={data} column={column} /> : null;\n }\n\n get tableSettings() {\n const {externalSchema, externalSchemaUrl, externalSchemaError} = this.state;\n const {items, set} = this.props.computedColumns;\n\n const preparedSet = set.filter((col) => !COLUMNS_TO_HIDE[col]);\n\n const preparedItems = omit_(items, 'type_v2');\n\n if (externalSchema) {\n (['title', 'description'] as const).forEach((column) => {\n const {columns} = UIFactory.externalSchemaDescriptionSetup;\n const caption = columns?.[column] ?? `External ${column}`;\n preparedItems[column] = {\n caption,\n sort: false,\n align: 'left',\n renderHeader: () => (\n <div className={block('description')}>\n <div className={block('table-item')}>{caption}</div>\n {externalSchemaUrl ? (\n <Link className={block('icon')} url={externalSchemaUrl}>\n <Icon awesome=\"external-link\" />\n </Link>\n ) : null}\n {externalSchemaError ? (\n <ErrorIcon className={block('icon')} error={externalSchemaError} />\n ) : null}\n </div>\n ),\n };\n preparedSet.push(column);\n });\n }\n\n return {\n templates: this.templates,\n columns: {\n items: preparedItems,\n sets: {\n default: {\n items: preparedSet,\n },\n },\n mode: 'default',\n },\n virtualType: 'simple',\n theme: 'light',\n striped: false,\n computeKey(item: SchemaItem) {\n return item.name;\n },\n };\n }\n\n async loadExternalSchemaData() {\n const {cluster, path} = this.props;\n const truePath = await wrapApiPromiseByToaster(\n ytApiV3.get({\n parameters: {\n path: `${path}/@path`,\n },\n }),\n {\n skipSuccessToast: true,\n toasterName: 'get_true_path',\n errorTitle: 'Failed to load true path',\n },\n );\n\n try {\n const {url, externalSchema} = await UIFactory.externalSchemaDescriptionSetup.load(\n cluster,\n truePath || path,\n );\n\n this.setState({\n externalSchemaUrl: url,\n externalSchema: externalSchema,\n });\n } catch (err) {\n this.setState({\n externalSchema: new Map(),\n externalSchemaError: err,\n });\n }\n }\n\n renderContent() {\n const {column, filteredSchema, updateFilter} = this.props;\n return (\n <Fragment>\n <Filter\n placeholder=\"Filter by name...\"\n className={block('filter')}\n onChange={updateFilter}\n value={column ?? ''}\n size=\"m\"\n />\n\n <ElementsTable {...this.tableSettings} items={filteredSchema} css={block()} />\n </Fragment>\n );\n }\n\n renderPlaceholder() {\n return (\n <div className={elementsBlock({theme: 'warning'})}>\n <p className={elementsBlock('paragraph')}>Schema is empty.</p>\n </div>\n );\n }\n\n render() {\n const {meta, schema} = this.props;\n\n return (\n <div className={block()}>\n {docsUrl(\n <div className={block('help')}>\n <HelpLink url={UIFactory.docsUrls['storage:static_schema']} />\n </div>,\n )}\n\n <MetaTable items={meta} />\n\n {schema?.length > 0 ? this.renderContent() : this.renderPlaceholder()}\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {column} = state.navigation.tabs.schema;\n\n const cluster = getCluster(state);\n const path = getAttributesPath(state);\n const schema = getSchema(state);\n const meta = getSchemaMeta(state);\n const filteredSchema = getFilteredSchema(state);\n const computedColumns = getComputedColumns(state);\n\n return {column, meta, schema, filteredSchema, computedColumns, cluster, path};\n};\n\nconst mapDispatchToProps = {\n updateFilter: updateSchemaFilter,\n};\n\nconst SchemaConnected = connect(mapStateToProps, mapDispatchToProps)(Schema);\n\nexport default function SchemaWithRum() {\n const loadState = useSelector(getLoadState);\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_SCHEMA,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_SCHEMA,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n return <SchemaConnected />;\n}\n","import {SCHEMA_UPDATE_FILTER} from '../../../../constants/navigation/tabs/schema';\n\nexport function updateSchemaFilter(column) {\n return {\n type: SCHEMA_UPDATE_FILTER,\n data: {column},\n };\n}\n","import filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\n\nimport ypath from '../../../common/thor/ypath';\nimport hammer from '../../../common/hammer';\nimport {tableItems} from '../../../utils/navigation/tabs/tables';\n\nfunction prepareFlatColumns(columns, flatColumns = {}, prefix) {\n const correctPrefix = prefix ? prefix + '_' : '';\n\n forEach_(columns, (column, columnName) => {\n if (column.group) {\n prepareFlatColumns(column.items, flatColumns, columnName);\n } else {\n const flatColumnName = correctPrefix + columnName;\n flatColumns[flatColumnName] = column;\n }\n });\n\n return flatColumns;\n}\n\nexport function prepareDataForColumns(collection) {\n const preparedColumns = prepareFlatColumns(tableItems);\n\n return map_(collection, (item) => {\n return mapValues_(preparedColumns, (column) => {\n return typeof column.get === 'function' ? column.get(item) : undefined;\n });\n });\n}\n\nexport function prepareAggregation(preparedCollection) {\n let preparedColumns = map_(prepareFlatColumns(tableItems), (column, columnName) => ({\n name: columnName,\n type: column.overall,\n }));\n preparedColumns = filter_(preparedColumns, 'type');\n\n const aggregation = hammer.aggregation.prepare(preparedCollection, preparedColumns)[0];\n aggregation['index'] = 'aggregation';\n\n return aggregation;\n}\n\nexport function getStorePreloadValues(tablet) {\n return {\n completed: Number(ypath.getValue(tablet, '/statistics/preload_completed_store_count')),\n failed: Number(ypath.getValue(tablet, '/statistics/preload_failed_store_count')),\n pending: Number(ypath.getValue(tablet, '/statistics/preload_pending_store_count')),\n };\n}\n","import ypath from '../../../common/thor/ypath';\nimport {getStorePreloadValues} from '../../../utils/navigation/tabs/tablets';\nimport {DESC_ASC_UNORDERED} from '../../sort-helpers';\n\nexport const tableItems = {\n name_tablet_id: {\n caption: 'Node / Tablet id',\n sort(item) {\n return item.name;\n },\n },\n name_cell_id: {\n caption: 'Cell id / Tablet id',\n sort(item) {\n return item.name;\n },\n },\n index: {\n sort: true,\n caption: 'Tablet index',\n align: 'left',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/index'));\n },\n },\n tablet_id: {\n sort: true,\n align: 'left',\n get(tablet) {\n return ypath.getValue(tablet, '/tablet_id');\n },\n },\n cell_leader_address: {\n sort: true,\n align: 'left',\n caption: 'Node',\n get(item) {\n return ypath.getValue(item, '/cell_leader_address');\n },\n },\n state: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getValue(tablet, '/state');\n },\n },\n cell_id: {\n sort: true,\n align: 'left',\n get(tablet) {\n return ypath.getValue(tablet, '/cell_id');\n },\n },\n error_count: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getNumberDeprecated(tablet, '/error_count', NaN);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n overall: 'sum',\n },\n replication_error_count: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getNumberDeprecated(tablet, '/replication_error_count', NaN);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n overall: 'sum',\n },\n pivot_key: {\n sort: false,\n align: 'left',\n caption: 'Pivot Key',\n get(tablet) {\n return ypath.getValue(tablet, '/pivot_key');\n },\n },\n // Structure\n chunk_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/chunk_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n partition_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/partition_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n store_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/store_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n overlapping_store_count: {\n sort: true,\n align: 'right',\n overall: 'max',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/overlapping_store_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n store_preload: {\n align: 'center',\n sort(tablet) {\n const storePreload = getStorePreloadValues(tablet);\n const completed = storePreload.completed;\n const failed = storePreload.failed;\n const pending = storePreload.pending;\n const total = completed + failed + pending;\n\n return [total > 0 ? completed / total : 0, total > 0 ? failed / total : 0, total];\n },\n overall(aggregation, tablet, name) {\n const aggregatedStorePreload = (aggregation[name] = aggregation[name] || {\n completed: 0,\n failed: 0,\n pending: 0,\n });\n const currentStorePreload = tablet[name];\n\n aggregatedStorePreload.completed += currentStorePreload.completed;\n aggregatedStorePreload.failed += currentStorePreload.failed;\n aggregatedStorePreload.pending += currentStorePreload.pending;\n },\n get(tablet) {\n return getStorePreloadValues(tablet);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n // Data\n unmerged_row_count: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/unmerged_row_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n uncompressed_data_size: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/uncompressed_data_size'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n compressed_data_size: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/compressed_data_size'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n disk_space: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/disk_space'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n // Performance\n static_chunk: {\n group: true,\n items: {\n read: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/static_chunk_row_read_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n lookup: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(\n tablet,\n '/performance_counters/static_chunk_row_lookup_rate',\n ),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n },\n set: ['read', 'lookup'],\n },\n dynamic: {\n group: true,\n items: {\n read: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_read_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n lookup: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_lookup_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n write: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_write_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n delete: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_delete_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n },\n set: ['read', 'lookup', 'write', 'delete'],\n },\n unmerged_row_read_rate: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/performance_counters/unmerged_row_read_rate'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n merged_row_read_rate: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/performance_counters/merged_row_read_rate'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n actions: {\n align: 'right',\n caption: '',\n },\n};\n\nexport const histogramItems = {\n unmerged_row_count: {\n format: 'Number',\n },\n uncompressed_data_size: {\n dataName: 'bytes',\n format: 'Bytes',\n },\n compressed_data_size: {\n dataName: 'bytes',\n format: 'Bytes',\n },\n store_count: {\n format: 'Number',\n },\n partition_count: {\n format: 'Number',\n },\n chunk_count: {\n format: 'Number',\n },\n overlapping_store_count: {\n format: 'Number',\n },\n static_chunk_read: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['static_chunk'].items['read'].get(tablet);\n },\n },\n static_chunk_lookup: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['static_chunk'].items['lookup'].get(tablet);\n },\n },\n unmerged_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n },\n merged_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n },\n dynamic_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['read'].get(tablet);\n },\n },\n dynamic_row_lookup_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['lookup'].get(tablet);\n },\n },\n dynamic_row_write_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['write'].get(tablet);\n },\n },\n dynamic_row_delete_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['delete'].get(tablet);\n },\n },\n};\n","import mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\n\nimport hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {histogramItems, tableItems} from '../../../../utils/navigation/tabs/tables';\nimport {NAVIGATION_TABLETS_TABLE_ID} from '../../../../constants/navigation/tabs/tablets';\nimport {prepareAggregation, prepareDataForColumns} from '../../../../utils/navigation/tabs/tablets';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getTabletsMode = (state) => state.navigation.tabs.tablets.tabletsMode;\n\nconst getRawTablets = (state) => state.navigation.tabs.tablets.tablets;\n/** @returns { OldSortState } */\nexport const getTabletsSortState = (state) => state.tables[NAVIGATION_TABLETS_TABLE_ID];\nconst getTabletsFilter = (state) => state.navigation.tabs.tablets.tabletsFilter;\nexport const getActiveHistogram = (state) => state.navigation.tabs.tablets.histogramType;\n\nconst getSortedTablets = createSelector(\n [getRawTablets, getTabletsSortState],\n (rawTablets, sortState) => hammer.utils.sort(rawTablets, sortState, tableItems),\n);\n\nconst getFilteredTablets = createSelector(\n [getSortedTablets, getTabletsFilter],\n (sortedTablets, tabletsFilter) =>\n hammer.filter.filter({\n data: sortedTablets,\n input: tabletsFilter,\n factors: [\n function (item) {\n return tableItems['tablet_id'].get(item);\n },\n function (item) {\n return tableItems['cell_id'].get(item);\n },\n function (item) {\n return tableItems['state'].get(item);\n },\n function (item) {\n return tableItems['cell_leader_address'].get(item);\n },\n ],\n }),\n);\n\nexport const getPreparedDataForColumns = createSelector([getFilteredTablets], (items) => {\n /** @type {Array<TabletInfo>} */\n const res = prepareDataForColumns(items);\n return res;\n});\n\nexport const getTablets = createSelector(getPreparedDataForColumns, (filteredTablets) => {\n const aggregation = prepareAggregation(filteredTablets);\n return [aggregation, ...filteredTablets];\n});\n\nconst getHistograms = createSelector(getRawTablets, (tablets) => {\n return mapValues_(histogramItems, (histogramItem, key) => {\n const get = histogramItem.get || tableItems[key].get;\n\n return {\n ...histogramItem,\n data: map_(tablets, get),\n dataFormat: histogramItem.format,\n dataName: histogramItem.dataName || hammer.format['ReadableField'](key, {caps: 'none'}),\n };\n });\n});\n\nexport const getHistogram = createSelector(\n [getHistograms, getActiveHistogram],\n (histograms, activeHistogram) => histograms[activeHistogram],\n);\n\nexport const getNavigationTabletsLoadingStatus = createSelector(\n [\n (state) => state.navigation.tabs.tablets.loading,\n (state) => state.navigation.tabs.tablets.loaded,\n (state) => state.navigation.tabs.tablets.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport max_ from 'lodash/max';\nimport reduce_ from 'lodash/reduce';\nimport toArray_ from 'lodash/toArray';\n\nimport {createSelector} from 'reselect';\nimport {getPreparedDataForColumns, getTabletsMode, getTabletsSortState} from './tablets';\nimport {\n FieldDescr,\n TreeItem,\n TreeNode,\n flattenTree,\n sortTree,\n} from '../../../../common/hammer/tree-list';\nimport {OldSortState, TypedKeys} from '../../../../types';\nimport {RootState} from '../../../reducers';\n\nexport const getTabletsExpandedHosts = (state: RootState): Array<string> =>\n state.navigation.tabs.tablets.expandedHosts;\n\ninterface TabletInfo {\n name: string;\n level?: number;\n tablet_id: string;\n cell_id: string;\n cell_leader_address: string;\n unmerged_row_count: number;\n uncompressed_data_size: number;\n compressed_data_size: number;\n disk_space: number;\n childrenCount?: number;\n}\n\nconst SUM_FIELDS: Array<TypedKeys<TabletInfo, number>> = [\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n];\n\nfunction addHostItem(\n dst: TreeNode<TabletInfo, TabletInfo>,\n item: TabletInfo,\n maxDst: Pick<TabletInfo, TypedKeys<TabletInfo, number>>,\n) {\n dst.children.push({\n name: item.tablet_id,\n parent: dst.name,\n attributes: {\n ...item,\n name: item.tablet_id,\n level: 1,\n },\n leaves: [],\n children: [],\n });\n\n forEach_(SUM_FIELDS, (k) => {\n dst.attributes[k] += item[k];\n\n maxDst[k] = max_([maxDst[k], item[k]])!;\n });\n}\n\nexport const getTabletsMax = createSelector([getPreparedDataForColumns], (items) => {\n const max = {\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n };\n forEach_(items, (item) => {\n forEach_(SUM_FIELDS, (k) => {\n max[k] = max_([max[k], item[k]])!;\n });\n });\n return max;\n});\n\nconst getTabletsByNameRoot = createSelector(\n [getPreparedDataForColumns, getTabletsSortState, getTabletsMode],\n (sortedAndFilteredItems, sortState, mode) => {\n const groupByKey = mode === 'by_host' ? 'cell_leader_address' : 'cell_id';\n\n const maxDst = {\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n };\n const maxHost = {...maxDst};\n const mapByName: Record<string, TreeNode<TabletInfo, TabletInfo>> = {};\n forEach_(sortedAndFilteredItems, (item) => {\n const {[groupByKey]: groupBy, cell_leader_address, cell_id} = item;\n const dst = (mapByName[groupBy] = mapByName[groupBy] || {\n name: groupBy,\n children: [],\n leaves: [],\n attributes: {\n isTopLevel: true,\n name: groupBy,\n cell_leader_address,\n cell_id,\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n level: 0,\n },\n });\n addHostItem(dst, item, maxDst);\n });\n\n const root = {\n name: '',\n children: toArray_(mapByName),\n leaves: [],\n attributes: {} as any,\n };\n\n forEach_(root.children, (item) => {\n item.attributes.childrenCount = item.children.length;\n forEach_(SUM_FIELDS, (k) => {\n maxHost[k] = max_([maxHost[k], item.attributes[k]])!;\n });\n });\n\n sortTreeInPlace(root, sortState);\n return {\n maxByLevel: [maxHost, maxDst] as const,\n root,\n };\n },\n);\n\nexport const getTabletsByName = createSelector(\n [getTabletsByNameRoot, getTabletsExpandedHosts],\n ({root, maxByLevel}, expandedHosts) => {\n const expanded = new Set(expandedHosts);\n const children = map_(root.children, (item) => {\n const {name} = item;\n const isCollapsed = !expanded.has(name);\n return {\n ...item,\n attributes: {\n ...item.attributes,\n isCollapsed,\n },\n children: isCollapsed ? [] : item.children,\n };\n });\n\n return {\n maxByLevel,\n items: map_(flattenTree({...root, children}), 'attributes'),\n };\n },\n);\n\nfunction sortTreeInPlace(root: TreeNode<TabletInfo, TabletInfo>, sortState?: OldSortState) {\n if (!sortState?.field) {\n return;\n }\n\n sortTree(root, sortState, {\n name_tablet_id: {\n get(item) {\n return item.attributes.name;\n },\n },\n name_cell_id: {\n get(item) {\n return item.attributes.name;\n },\n },\n ...reduce_(\n Object.keys(root.children[0]?.attributes! || {}) as Array<keyof TabletInfo>,\n (acc, k) => {\n acc[k] = {\n get(item: TreeItem<TabletInfo, TabletInfo>) {\n return item.attributes[k];\n },\n };\n return acc;\n },\n {} as Record<string, FieldDescr<TabletInfo, TabletInfo>>,\n ),\n });\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants/index';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {\n CHANGE_ACTIVE_HISTOGRAM,\n CHANGE_TABLETS_MODE,\n GET_TABLETS,\n TABLETS_STATE_PARTIAL,\n TOGGLE_HISTOGRAM,\n} from '../../../../constants/navigation/tabs/tablets';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {getTabletsExpandedHosts} from '../../../../store/selectors/navigation/tabs/tablets-ts';\n\nconst requests = new CancelHelper();\n\nexport function loadTablets() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_TABLETS.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationTablets, {\n parameters: prepareRequest('/@tablets', {\n path,\n transaction,\n output_format: TYPED_OUTPUT_FORMAT,\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((tablets) => {\n dispatch({\n type: GET_TABLETS.SUCCESS,\n data: {tablets},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLETS.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLETS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function changeTabletsFilter(tabletsFilter) {\n return {\n type: TABLETS_STATE_PARTIAL,\n data: {tabletsFilter},\n };\n}\n\nexport function changeTabletsMode(evt) {\n return {\n type: CHANGE_TABLETS_MODE,\n data: {tabletsMode: evt.target.value},\n };\n}\n\nexport function toggleExpandedHost(name) {\n return (dispatch, getState) => {\n const expandedHosts = getTabletsExpandedHosts(getState()).slice();\n const index = expandedHosts.indexOf(name);\n if (index >= 0) {\n expandedHosts.splice(index, 1);\n } else {\n expandedHosts.push(name);\n }\n dispatch({type: TABLETS_STATE_PARTIAL, data: {expandedHosts}});\n };\n}\n\nexport function changeActiveHistogram(histogramType) {\n return {\n type: CHANGE_ACTIVE_HISTOGRAM,\n data: {histogramType},\n };\n}\n\nexport function toggleHistogram() {\n return {\n type: TOGGLE_HISTOGRAM,\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_TABLETS.CANCELLED});\n };\n}\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport RadioButton from '../../../../components/RadioButton/RadioButton';\nimport {Loader, Progress} from '@gravity-ui/uikit';\nimport Histogram from '../../../../components/Histogram/Histogram';\nimport Filter from '../../../../components/Filter/Filter';\nimport Label from '../../../../components/Label/Label';\nimport Link from '../../../../components/Link/Link';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {getPath, getType} from '../../../../store/selectors/navigation';\n\nimport {\n getActiveHistogram,\n getHistogram,\n getNavigationTabletsLoadingStatus,\n getTablets,\n} from '../../../../store/selectors/navigation/tabs/tablets';\n\nimport {NAVIGATION_TABLETS_TABLE_ID} from '../../../../constants/navigation/tabs/tablets';\nimport {HEADER_HEIGHT, Page} from '../../../../constants/index';\n\nimport {\n abortAndReset,\n changeActiveHistogram,\n changeTabletsFilter,\n changeTabletsMode,\n loadTablets,\n toggleExpandedHost,\n toggleHistogram,\n} from '../../../../store/actions/navigation/tabs/tablets';\n\nimport {histogramItems, tableItems} from '../../../../utils/navigation/tabs/tables';\nimport {asNumber} from '../../../../components/templates/utils';\nimport hammer from '../../../../common/hammer';\nimport ypath from '../../../../common/thor/ypath';\nimport unipika from '../../../../common/thor/unipika';\n\nimport {genTabletCellBundlesCellUrl} from '../../../../utils/tablet_cell_bundles';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {Host} from '../../../../containers/Host/Host';\nimport {\n getTabletsByName,\n getTabletsMax,\n} from '../../../../store/selectors/navigation/tabs/tablets-ts';\nimport {getProgressBarColorByIndex} from '../../../../constants/colors';\n\nimport './Tablets.scss';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../constants/global';\n\nconst block = cn('navigation-tablets');\n\nclass Tablets extends Component {\n static typedValueProps = PropTypes.shape({\n $type: PropTypes.string.isRequired,\n $value: PropTypes.string.isRequired,\n });\n\n static tabletProps = PropTypes.shape({\n index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n cell_id: PropTypes.string,\n error_count: PropTypes.number,\n last_commit_timestamp: PropTypes.number,\n replication_error_count: PropTypes.number,\n state: PropTypes.string,\n tablet_id: PropTypes.string,\n\n performance_counters: PropTypes.object,\n statistics: PropTypes.object,\n\n pivot_key: PropTypes.arrayOf(Tablets.typedValueProps),\n });\n\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n tabletsMode: PropTypes.string.isRequired,\n tabletsFilter: PropTypes.string.isRequired,\n activeHistogram: PropTypes.string.isRequired,\n histogramCollapsed: PropTypes.bool.isRequired,\n tablets: PropTypes.arrayOf(Tablets.tabletProps).isRequired,\n histogram: PropTypes.shape({\n data: PropTypes.array.isRequired,\n format: PropTypes.string.isRequired,\n dataName: PropTypes.string.isRequired,\n dataFormat: PropTypes.string.isRequired,\n }).isRequired,\n\n loadTablets: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n toggleHistogram: PropTypes.func.isRequired,\n changeTabletsMode: PropTypes.func.isRequired,\n changeTabletsFilter: PropTypes.func.isRequired,\n changeActiveHistogram: PropTypes.func.isRequired,\n };\n\n static prepareStorePreloadProgress(storePreload) {\n const completed = storePreload?.completed || 0;\n const failed = storePreload?.failed || 0;\n const pending = storePreload?.pending || 0;\n const total = completed + failed + pending;\n\n return {\n text: hammer.format['Number'](completed) + ' / ' + hammer.format['Number'](total),\n value: total > 0 ? ((failed + completed) / total) * 100 : 0,\n stack: [\n {\n value: total > 0 ? (completed / total) * 100 : 0,\n theme: 'info',\n },\n {\n value: total > 0 ? (failed / total) * 100 : 0,\n theme: 'danger',\n },\n ],\n };\n }\n\n static rowClassName(item) {\n const {level} = item;\n return block('row', {top: level === 0});\n }\n\n static renderName(item) {\n const {name, level, isCollapsed, cell_leader_address} = item;\n const content =\n level === 0 ? (\n <React.Fragment>\n <Button view={'flat-secondary'}>\n <Icon awesome={isCollapsed ? 'angle-down' : 'angle-up'} />\n </Button>{' '}\n {name === cell_leader_address\n ? Tablets.renderHost(item)\n : Tablets.renderCellId(item)}\n </React.Fragment>\n ) : (\n Tablets.renderTabletId(item)\n );\n\n return <div className={block('name', {level})}>{content}</div>;\n }\n\n static isTopLevel(item) {\n const {level, name, cell_leader_address, cell_id} = item;\n return level === 0 && (name === cell_leader_address || name === cell_id);\n }\n\n static renderIndex(item, columnName) {\n if (Tablets.isTopLevel(item) && item.childrenCount) {\n return `(total ${item.childrenCount})`;\n }\n if (Tablets)\n if (item.index === 'aggregation') {\n return hammer.format['ReadableField'](item.index);\n } else {\n return hammer.format['Number'](item[columnName]);\n }\n }\n\n static renderTabletId(item) {\n const id = item.tablet_id;\n const url = `${Page.TABLET}/${id}`;\n\n return Tablets.renderIdWithLink(id, url);\n }\n\n static renderCellId(item) {\n const id = item.cell_id;\n const url = genTabletCellBundlesCellUrl(id);\n\n return Tablets.renderIdWithLink(id, url);\n }\n\n static renderHost(item) {\n const host = item.cell_leader_address;\n return (\n <Host\n asTabletNode\n address={host}\n className={block('host')}\n copyBtnClassName={block('copy-btn')}\n />\n );\n }\n\n static renderIdWithLink(id, url) {\n return id ? (\n <div className={block('id-link')}>\n <Link url={url}>{id}</Link>\n <ClipboardButton className={block('copy-btn')} view={'flat-secondary'} text={id} />\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderState(item, columnName) {\n const state = item[columnName];\n const theme = {\n none: 'default',\n unmounted: 'default',\n mounted: 'info',\n frozen: 'info',\n freezing: 'warning',\n unfreezing: 'warning',\n mounting: 'warning',\n unmounting: 'warning',\n mixed: 'danger',\n }[state];\n\n return typeof state !== 'undefined' ? (\n <Label theme={theme} text={state} />\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderPivotKey(item, columnName) {\n const pivotKey = item[columnName];\n\n const text = unipika.prettyprint(pivotKey, {\n break: false,\n indent: 0,\n asHTML: false,\n });\n const title = text.split(',').join(',\\n');\n\n return typeof pivotKey !== 'undefined' ? (\n <div className=\"elements-column_with-hover-button unipika navigation-tablets__pivot-key\">\n [\n <span title={title} className=\"uint64 elements-ellipsis\">\n {text.slice(1, -1)}\n </span>\n ]\n <ClipboardButton\n text={text}\n view=\"flat-secondary\"\n size=\"s\"\n title=\"Copy Pivot Key\"\n />\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderActions(item) {\n if (item.index === 'aggregation' || Tablets.isTopLevel(item)) {\n return null;\n } else {\n const tablet = ypath.getValue(item, '/tablet_id');\n\n return (\n <ClickableAttributesButton\n title={item.tablet_id}\n path={`//sys/tablets/${tablet}`}\n withTooltip\n />\n );\n }\n }\n\n static renderStorePreload(item, columnName) {\n const storePreload = item[columnName];\n const storePreloadProgress = Tablets.prepareStorePreloadProgress(storePreload);\n\n return <Progress {...storePreloadProgress} />;\n }\n\n componentDidMount() {\n this.props.loadTablets();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.path !== this.props.path) {\n this.props.loadTablets();\n }\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n get defaultItems() {\n const {type} = this.props;\n\n const newDefaultItemsForReplicatedTable = [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'state',\n 'cell_id',\n 'error_count',\n 'replication_error_count',\n 'pivot_key',\n 'actions',\n ];\n const newDefaultItemsForTable = [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'state',\n 'cell_id',\n 'error_count',\n 'pivot_key',\n 'actions',\n ];\n\n const newDefaultItems =\n type === 'replicated_table'\n ? newDefaultItemsForReplicatedTable\n : newDefaultItemsForTable;\n\n return newDefaultItems;\n }\n\n get tableSets() {\n return {\n default: {\n items: this.defaultItems,\n },\n data: {\n items: [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n structure: {\n items: [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'chunk_count',\n 'partition_count',\n 'store_count',\n 'overlapping_store_count',\n 'store_preload',\n 'actions',\n ],\n },\n performance: {\n items: [\n 'index',\n 'cell_leader_address',\n 'dynamic',\n 'static_chunk',\n 'unmerged_row_read_rate',\n 'merged_row_read_rate',\n 'actions',\n ],\n },\n by_host: {\n items: [\n 'name_tablet_id',\n 'index',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n by_cell: {\n items: [\n 'name_cell_id',\n 'index',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n };\n }\n\n get tableSettings() {\n const {tabletsMode} = this.props;\n\n return {\n css: block(),\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: NAVIGATION_TABLETS_TABLE_ID,\n columns: {\n items: tableItems,\n sets: this.tableSets,\n mode: tabletsMode,\n },\n templates: {\n name_tablet_id: Tablets.renderName,\n name_cell_id: Tablets.renderName,\n index: Tablets.renderIndex,\n tablet_id: Tablets.renderTabletId,\n cell_id: Tablets.renderCellId,\n cell_leader_address: Tablets.renderHost,\n state: Tablets.renderState,\n pivot_key: Tablets.renderPivotKey,\n actions: Tablets.renderActions,\n store_preload: Tablets.renderStorePreload,\n error_count: asNumber,\n replication_error_count: asNumber,\n chunk_count: asNumber,\n partition_count: asNumber,\n store_count: asNumber,\n overlapping_store_count: asNumber,\n unmerged_row_count: this.renderNumberProgress,\n uncompressed_data_size: this.renderBytesProgress,\n compressed_data_size: this.renderBytesProgress,\n disk_space: this.renderBytesProgress,\n static_chunk_read: asNumber,\n static_chunk_lookup: asNumber,\n dynamic_read: asNumber,\n dynamic_lookup: asNumber,\n dynamic_write: asNumber,\n dynamic_delete: asNumber,\n unmerged_row_read_rate: asNumber,\n merged_row_read_rate: asNumber,\n },\n computeKey(item) {\n return item.name || item.tablet_id;\n },\n itemMods(tablet) {\n return (\n tablet.index === 'aggregation' && {\n aggregation: 'yes',\n }\n );\n },\n };\n }\n\n renderProgress = (item, column, useBytes) => {\n const {maxByLevel = []} = this.props;\n const {level = 0, [column]: value, index} = item;\n if (value === undefined) {\n return hammer.format.NO_VALUE;\n }\n const {[column]: max} = maxByLevel[level] || {};\n if (!max || index === 'aggregation') {\n return asNumber(item, column);\n }\n\n const progress = (value / max) * 100;\n const text = hammer.format[useBytes ? 'Bytes' : 'Number'](value);\n\n if (level === 1) {\n return (\n <Progress\n stack={[\n {\n value: progress,\n color: getProgressBarColorByIndex(3),\n },\n ]}\n text={text}\n />\n );\n }\n\n return <Progress value={progress} text={text} theme={'info'} />;\n };\n\n renderBytesProgress = (item, column) => {\n return this.renderProgress(item, column, true);\n };\n\n renderNumberProgress = (item, column) => {\n return this.renderProgress(item, column, false);\n };\n\n renderOverview() {\n const {tabletsFilter, changeTabletsFilter, tabletsMode, changeTabletsMode} = this.props;\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={block('overview', {sticky: isSticky})}>\n <Filter\n size=\"m\"\n value={tabletsFilter}\n onChange={changeTabletsFilter}\n placeholder=\"Filter by Tablet Id/Cell Id/State/Host...\"\n className={block('tablets-filter')}\n />\n\n <RadioButton\n size=\"m\"\n value={tabletsMode}\n onChange={changeTabletsMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'default',\n text: 'Default',\n },\n {\n value: 'data',\n text: 'Data',\n },\n {\n value: 'by_host',\n text: 'Data by nodes',\n },\n {\n value: 'by_cell',\n text: 'Data by cells',\n },\n {\n value: 'structure',\n text: 'Structure',\n },\n {\n value: 'performance',\n text: 'Performance',\n },\n ]}\n />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderContent() {\n const {\n tablets,\n histogramCollapsed,\n toggleHistogram,\n histogram,\n activeHistogram,\n changeActiveHistogram,\n collapsibleSize,\n } = this.props;\n\n return (\n <Fragment>\n <CollapsibleSection\n name=\"Histogram\"\n collapsed={histogramCollapsed}\n onToggle={toggleHistogram}\n size={collapsibleSize}\n >\n <Histogram\n activeHistogram={activeHistogram}\n handleHistogramChange={changeActiveHistogram}\n histogramItems={histogramItems}\n histogram={histogram}\n />\n </CollapsibleSection>\n\n <CollapsibleSection name=\"Tablets\" size={collapsibleSize}>\n <StickyContainer>\n {this.renderOverview()}\n\n <ElementsTable\n {...this.tableSettings}\n items={tablets}\n rowClassName={Tablets.rowClassName}\n onItemClick={this.onRowClick}\n />\n </StickyContainer>\n </CollapsibleSection>\n </Fragment>\n );\n }\n\n onRowClick = (item) => {\n const {isTopLevel, name} = item;\n if (isTopLevel) {\n this.props.toggleExpandedHost(name);\n }\n };\n\n render() {\n const {loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...this.props}>\n <ErrorBoundary>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? <Loader /> : this.renderContent()}\n </div>\n </ErrorBoundary>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, tabletsMode, tabletsFilter, histogramCollapsed} =\n state.navigation.tabs.tablets;\n const path = getPath(state);\n let tablets;\n let maxByLevel = [];\n if (tabletsMode === 'by_host' || tabletsMode === 'by_cell') {\n const data = getTabletsByName(state);\n tablets = data.items;\n maxByLevel = data.maxByLevel;\n } else {\n tablets = getTablets(state);\n maxByLevel = [getTabletsMax(state)];\n }\n\n const histogram = getHistogram(state);\n const activeHistogram = getActiveHistogram(state);\n const type = getType(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n tablets,\n maxByLevel,\n tabletsMode,\n tabletsFilter,\n histogramCollapsed,\n activeHistogram,\n histogram,\n type,\n collapsibleSize: UI_COLLAPSIBLE_SIZE,\n };\n};\n\nconst mapDispatchToProps = {\n loadTablets,\n abortAndReset,\n toggleHistogram,\n changeTabletsMode,\n changeTabletsFilter,\n changeActiveHistogram,\n toggleExpandedHost,\n};\n\nconst TabletsConnected = connect(mapStateToProps, mapDispatchToProps)(Tablets);\n\nexport default function TabletsWithRum() {\n const loadState = useSelector(getNavigationTabletsLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLETS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLETS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TabletsConnected />;\n}\n","import {RootState} from '../../../reducers';\n\nexport const getAttributesTab = (state: RootState) => state.navigation.tabs.attributes.attributes;\n\nexport const getAttributesLoadingInfo = (state: RootState) => ({\n loading: state.navigation.tabs.attributes.loading,\n loaded: state.navigation.tabs.attributes.loaded,\n error: state.navigation.tabs.attributes.error,\n});\n","import {UnknownAction} from 'redux';\nimport {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {attributesActions} from '../../../../reducers/navigation/tabs/attributes';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../../constants';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function requestAttributes(): AsyncAction<Promise<void>> {\n return async (dispatch, getState) => {\n dispatch(attributesActions.onRequest());\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n const requestParams = {\n path,\n transaction,\n };\n\n try {\n const response = await ytApiV3Id.executeBatch(YTApiId.nodeAttributes, {\n parameters: {\n requests: [\n {\n command: 'get',\n parameters: prepareRequest('/@', {...requestParams}),\n },\n ],\n output_format: TYPED_OUTPUT_FORMAT,\n },\n cancellation: cancelHelper.removeAllAndSave,\n });\n\n const {output, error} = response[0];\n if (error) {\n throw error;\n }\n\n dispatch(attributesActions.onSuccess({attributes: output}));\n } catch (error: any) {\n if (!isCancelled(error)) {\n dispatch(attributesActions.onFailure({error}));\n }\n }\n };\n}\n","import React, {Fragment, useEffect} from 'react';\nimport b from 'bem-cn-lite';\nimport unipika from '../../../../common/thor/unipika';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport Yson from '../../../../components/Yson/Yson';\nimport {YsonDownloadButton} from '../../../../components/DownloadAttributesButton';\nimport ErrorBlock from '../../../../components/Block/Block';\n\nimport {\n getAttributesPath,\n getAttributesWithTypes,\n getLoadState,\n} from '../../../../store/selectors/navigation';\nimport {\n getAttributesLoadingInfo,\n getAttributesTab,\n} from '../../../../store/selectors/navigation/tabs/attributes';\nimport {requestAttributes} from '../../../../store/actions/navigation/tabs/attributes/attributes';\n\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nimport {pathToFileName} from '../../helpers/pathToFileName';\n\nimport './Attributes.scss';\n\nconst block = b('yt-attributes');\n\nfunction Attributes() {\n const dispatch = useDispatch();\n\n const attributes = useSelector(getAttributesTab);\n const attributesPath = useSelector(getAttributesPath);\n const {loading, loaded, error} = useSelector(getAttributesLoadingInfo);\n\n const settings = unipika.prepareSettings();\n\n useEffect(() => {\n dispatch(requestAttributes());\n }, [attributesPath]);\n\n const initialLoading = !loaded && loading;\n\n if (initialLoading) {\n return <Loader className={block({loading: initialLoading})} />;\n }\n\n return (\n <Fragment>\n {error != undefined && <ErrorBlock error={error} />}\n <Yson\n settings={settings}\n value={attributes}\n folding\n extraTools={\n <YsonDownloadButton\n value={attributes}\n settings={settings}\n name={`attributes_${pathToFileName(attributesPath)}`}\n />\n }\n />\n </Fragment>\n );\n}\n\nexport default function AttributesWithRum() {\n const loadState = useSelector(getLoadState);\n const attributes = useSelector(getAttributesWithTypes);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_ATTRIBUTES,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_ATTRIBUTES,\n stopDeps: [loadState, attributes],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Attributes />;\n}\n","export {TimelinePicker} from './TimelinePicker/TimelinePicker';\n\nexport {convertTimeToRequestParams, formatInterval} from './util';\n\nfunction shortcut(time: string, title?: string) {\n return {time, title: title || time};\n}\n\nexport const TIMELINE_RANGE_PICKER_SHORTCUTS = [\n [shortcut('4h'), shortcut('8h'), shortcut('12h'), shortcut('24h')],\n [shortcut('2d'), shortcut('7d', 'Week'), shortcut('2w', '2 Weeks')],\n [shortcut('1M', 'Month'), shortcut('2M', '2 Months')],\n];\n","import isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getPath} from '../../../../store/selectors/navigation/index';\nimport {convertTimeToRequestParams} from '../../../../components/common/Timeline';\n\nconst getAccessLogFiltersState = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters;\n\nexport const getAccessLogFilterPagination = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.pagination;\n\nexport const getAccessLogFilterPathRegex = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.path_regex;\n\nexport const getAccessLogFilterUserRegex = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.user_regex;\n\nexport const getAccessLogFilterMethod = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.method_group;\n\nexport const getAccessLogFilterUserType = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.user_type;\n\nexport const getAccessLogFilterScope = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.scope;\n\nexport const getAccessLogFilterTime = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.time;\n\nexport const getAccessLogFilterFieldSelector = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.field_selector;\n\nexport const getAccessLogFilterMetadata = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.metadata;\n\nexport const getAccessLogFilterDistinctBy = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.distinct_by;\n\nexport const getAccessLogLoading = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.loading;\n\nexport const getAccessLogReady = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.ready;\n\nexport const getAccessLogLoaded = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.loaded;\n\nexport const getAccessLogError = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.error;\n\nexport const getAccessLogItems = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.accesses;\n\nexport const getAccessLogTotalRowCount = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.total_row_count;\n\nexport const getAccessLogAvailableTimeRange = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.availableTimeRange;\n\nexport const getAccessLogPagesCount = createSelector(\n [getAccessLogTotalRowCount, (state) => getAccessLogFilterPagination(state).size],\n (totalRowCount, size) => {\n return Math.ceil(totalRowCount / size);\n },\n);\n\nexport const getAccessLogLastLoadedParams = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.params;\n\nfunction skipEmpty<T>(v: T) {\n return isEmpty_(v) ? undefined : v;\n}\n\nexport const getAccessLogRequestParams = createSelector(\n [getCluster, getPath, getAccessLogFiltersState],\n (cluster, path, filters) => {\n const {time, field_selector, method_group, user_type, scope, ...rest} = filters;\n\n const {from, to} = convertTimeToRequestParams(time) || {};\n return {\n ...rest,\n begin: from === undefined ? undefined : from / 1000,\n end: to === undefined ? undefined : to / 1000,\n cluster,\n path,\n field_selector: skipEmpty(field_selector),\n method_group: skipEmpty(method_group),\n user_type: skipEmpty(user_type),\n scope: skipEmpty(scope),\n };\n },\n);\n\nexport const getAccessLogHasChangedFilters = createSelector(\n [getAccessLogLastLoadedParams, getAccessLogRequestParams],\n (lastLoaded, current) => {\n return Boolean(lastLoaded.path) && !isEqual_(lastLoaded, current);\n },\n);\n\nexport const getAccessLogLastLoadedFieldSelector = createSelector(\n [getAccessLogLastLoadedParams],\n (params) => {\n return params.field_selector;\n },\n);\n","import axios from 'axios';\nimport {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {\n AccessLogAction,\n AccessLogAvailableTimeRange,\n AccessLogData,\n} from '../../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport {\n ACCESS_LOG_FAILURE,\n ACCESS_LOG_FILTERS,\n ACCESS_LOG_PARTIAL,\n ACCESS_LOG_PATH_CHANGED,\n ACCESS_LOG_REQUEST,\n ACCESS_LOG_RESET_FILTERS,\n ACCESS_LOG_SUCCESS,\n} from '../../../../../constants/navigation/tabs/access-log';\nimport {\n getAccessLogFilterPagination,\n getAccessLogLastLoadedParams,\n getAccessLogRequestParams,\n} from '../../../../../store/selectors/navigation/tabs/access-log';\nimport {\n AccessLogFilterAction,\n AccessLogFiltersState,\n} from '../../../../../store/reducers/navigation/tabs/access-log/access-log-filters';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {getAccessLogBasePath} from '../../../../../config';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {getCluster} from '../../../../selectors/global';\n\ntype AccessLogThunkAction<Res = any> = ThunkAction<Res, RootState, any, AccessLogAction>;\ntype AccessLogFiltersThunkAction<Res = any> = ThunkAction<\n Res,\n RootState,\n any,\n AccessLogFilterAction\n>;\n\nexport function resetPaginationIfNeededAndCheckIfPathChanged(): AccessLogFiltersThunkAction<Boolean> {\n return (dispatch, getState) => {\n const state = getState();\n\n const lastLoadedParams = getAccessLogLastLoadedParams(state);\n const params = getAccessLogRequestParams(state);\n\n const result = params.path !== lastLoadedParams.path;\n\n if (result) {\n dispatch({type: ACCESS_LOG_PATH_CHANGED});\n }\n\n return result;\n };\n}\n\nconst accesLogCancelHelper = new CancelHelper();\n\nexport function fetchAccessLog(): AccessLogThunkAction {\n return (dispatch, getState) => {\n const pathChanged = dispatch(resetPaginationIfNeededAndCheckIfPathChanged());\n dispatch({type: ACCESS_LOG_REQUEST, data: pathChanged ? {loaded: false} : {}});\n\n const state = getState();\n const params = getAccessLogRequestParams(state);\n\n dispatch({type: ACCESS_LOG_PARTIAL, data: {params}});\n return Promise.all([\n axios.get(`${getAccessLogBasePath()}/ready`),\n axios\n .request<AccessLogAvailableTimeRange>({\n method: 'POST',\n url: `${getAccessLogBasePath()}/visible-time-range`,\n withCredentials: true,\n data: {cluster: params.cluster},\n cancelToken: accesLogCancelHelper.removeAllAndGenerateNextToken(),\n })\n .catch((e) => {\n console.log(e);\n return {data: {latest: undefined, erliest: undefined}};\n }),\n axios.request<AccessLogData>({\n method: 'POST',\n url: `${getAccessLogBasePath()}/access_log`,\n data: params,\n withCredentials: true,\n cancelToken: accesLogCancelHelper.generateNextToken(),\n }),\n ])\n .then(([{data: ready}, {data: availableTimeRange}, {data}]) => {\n dispatch({\n type: ACCESS_LOG_SUCCESS,\n data: {...data, ready, availableTimeRange, params},\n });\n })\n .catch((e: any) => {\n if (!isCancelled(e)) {\n const error = e?.response?.data || e;\n dispatch({type: ACCESS_LOG_FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport const fetchAccessLogQtId = (): AccessLogThunkAction => async (_, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const params = getAccessLogRequestParams(state);\n\n const newParams = {...params} as Partial<typeof params>;\n delete newParams.pagination;\n\n const {data} = await wrapApiPromiseByToaster(\n axios.request({\n method: 'POST',\n url: `${getAccessLogBasePath()}/qt_access_log`,\n withCredentials: true,\n data: newParams,\n }),\n {\n toasterName: 'getAccessLogQtId',\n errorTitle: 'Failed to load access log query id',\n skipSuccessToast: true,\n },\n );\n\n window.open(`/${cluster}/queries/${data.query_id}`);\n};\n\nexport function applyAccessLogFilters(): AccessLogFiltersThunkAction {\n return (dispatch) => {\n dispatch(setAccessLogFiltersPage(0));\n };\n}\n\nexport function setAccessLogFilters(\n data: Partial<AccessLogFiltersState>,\n): AccessLogFiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCESS_LOG_FILTERS, data});\n };\n}\n\nexport function setAccessLogFiltersPage(index: number): AccessLogFiltersThunkAction {\n return (dispatch, getState) => {\n const {size} = getAccessLogFilterPagination(getState());\n dispatch({type: ACCESS_LOG_FILTERS, data: {pagination: {index, size}}});\n dispatch(fetchAccessLog());\n };\n}\n\nexport function accessLogResetFilters(): AccessLogFiltersThunkAction {\n return (dispatch, getState) => {\n const lastLoadedParams = getAccessLogLastLoadedParams(getState());\n if (!lastLoadedParams.path) {\n // skip for initial loading\n return;\n }\n\n return dispatch({type: ACCESS_LOG_RESET_FILTERS});\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport Yson from '../../../../components/Yson/Yson';\nimport {AccessLogTransactionInfo} from '../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport './AccountsLogTransactionInfo.scss';\n\nconst block = cn('accounts-log-transaction-info');\n\ninterface Props {\n data: AccessLogTransactionInfo;\n}\n\nfunction TransactionInfo(props: Props) {\n const {data} = props;\n return (\n <MetaTable\n items={[\n {\n key: 'Id',\n value: <CopyText text={data.transaction_id} />,\n },\n {\n key: 'Title',\n value: <CopyText text={data.transaction_title || ''} />,\n visible: Boolean(data.transaction_title),\n },\n {\n key: 'Operation Id',\n value: <CopyText text={data.operation_id || ''} />,\n visible: Boolean(data.operation_id),\n },\n {\n key: 'Operation title',\n value: <CopyText text={data.operation_title || ''} />,\n visible: Boolean(data.operation_title),\n },\n {\n key: 'Parent',\n value: <Yson value={data.parent} />,\n visible: Boolean(data.parent),\n },\n ]}\n />\n );\n}\n\nfunction CopyText({text, copyText}: {text: string; copyText?: string}) {\n return (\n <div className={block('copy')}>\n <span className={block('copy-text')}>{text}</span>\n <ClipboardButton\n className={block('copy-btn')}\n view=\"flat-secondary\"\n text={copyText ?? text}\n />\n </div>\n );\n}\n\nexport default React.memo(TransactionInfo);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport compact_ from 'lodash/compact';\n\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../common/hammer/format';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport Label from '../../../../components/Label/Label';\nimport Link from '../../../../components/Link/Link';\nimport {Secondary, Warning} from '../../../../components/Text/Text';\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {STICKY_DOUBLE_TOOLBAR_BOTTOM} from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\n\nimport {\n getAccessLogFilterPagination,\n getAccessLogItems,\n getAccessLogLastLoadedFieldSelector,\n getAccessLogLoaded,\n getAccessLogLoading,\n getAccessLogPagesCount,\n getAccessLogReady,\n} from '../../../../store/selectors/navigation/tabs/access-log';\nimport {AccessLogItem} from '../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport {genNavigationUrl} from '../../../../utils/navigation/navigation';\n\nimport AccountsLogTransactionInfo from './AccountsLogTransactionInfo';\n\nimport './AccessLogTable.scss';\n\nconst block = cn('access-log-table');\n\nconst DateHeaderMemo = React.memo(DateHeader);\n\nconst TABLE_SETTINGS: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_DOUBLE_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n sortable: false,\n};\n\nfunction useColumns() {\n const cluster = useSelector(getCluster);\n const fieldSelector = useSelector(getAccessLogLastLoadedFieldSelector);\n const columns: Array<Column<AccessLogItem>> = React.useMemo(() => {\n const res: Array<Column<AccessLogItem>> = compact_([\n {\n name: 'Date',\n render({row}) {\n return <Secondary>{row.instant}</Secondary>;\n },\n header: <DateHeaderMemo />,\n },\n {\n name: 'Method',\n render({row}) {\n return row.method;\n },\n },\n {\n name: 'Path',\n render({row: {path, target_path, original_path}}) {\n if (!path) {\n return (\n <Secondary>\n Path is hidden due to access permission restrictions\n </Secondary>\n );\n }\n return (\n <div className={block('path')}>\n <span className={block('path-link')}>\n <Link\n url={genNavigationUrl({cluster, path})}\n className={block('path-link-link')}\n >\n {path}\n {''}\n </Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n </span>\n {target_path && (\n <PathTag text=\"target\" cluster={cluster} path={target_path} />\n )}\n {original_path && (\n <PathTag text=\"original\" cluster={cluster} path={original_path} />\n )}\n </div>\n );\n },\n },\n {\n name: 'User',\n render({row: {user}}) {\n return <SubjectCard name={user} />;\n },\n },\n {\n name: 'Type',\n render({row: {type}}) {\n return format.ReadableField(type);\n },\n },\n fieldSelector?.scope && {\n name: 'Scope',\n render({row: {scope}}) {\n return format.ReadableField(scope);\n },\n },\n fieldSelector?.user_type && {\n name: 'User type',\n render({row: {user_type}}) {\n return user_type;\n },\n },\n fieldSelector?.method_group && {\n name: 'Method group',\n render({row: {method_group}}) {\n return method_group;\n },\n },\n fieldSelector?.transaction_info && {\n name: 'Tx',\n headerTitle: 'Transaction info',\n render({row: {transaction_info}}) {\n if (!transaction_info) {\n return null;\n }\n return (\n <Tooltip\n placement={'left'}\n content={<AccountsLogTransactionInfo data={transaction_info} />}\n >\n <Label text=\"Tx\" />\n </Tooltip>\n );\n },\n },\n ]);\n return res;\n }, [cluster, fieldSelector]);\n return columns;\n}\n\nfunction AccessLogTable() {\n const items = useSelector(getAccessLogItems);\n const columns = useColumns();\n\n const loading = useSelector(getAccessLogLoading);\n const loaded = useSelector(getAccessLogLoaded);\n\n const ready = useSelector(getAccessLogReady);\n\n return ready ? (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={loaded ? items : []}\n useThemeYT\n settings={TABLE_SETTINGS}\n />\n ) : (\n <Warning>The service is under maintenance. Please try again later.</Warning>\n );\n}\n\nexport default React.memo(AccessLogTable);\n\nfunction DateHeader() {\n const loading = useSelector(getAccessLogLoading);\n const {index} = useSelector(getAccessLogFilterPagination);\n const pageCount = useSelector(getAccessLogPagesCount);\n\n return <ColumnHeader column=\"Date\" loading={loading} pageIndex={index} pageCount={pageCount} />;\n}\n\nfunction PathTag({\n text,\n path,\n cluster,\n}: {\n text: 'target' | 'original';\n path?: string;\n cluster: string;\n}) {\n const isTarget = text === 'target';\n return path ? (\n <Tooltip\n content={\n <div>\n <Link url={genNavigationUrl({cluster, path})}>{path}</Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n {isTarget ? (\n <div>\n The Target directs to the node/attribute that has been accessed by the\n link from the Path.\n </div>\n ) : (\n <div>The Path has been accessed by the link from the Original.</div>\n )}\n </div>\n }\n >\n <Label text={text} capitalize />\n </Tooltip>\n ) : null;\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport ErrorBlock from '../../../../components/Block/Block';\nimport {getAccessLogError} from '../../../../store/selectors/navigation/tabs/access-log';\n\nfunction AccessLogError() {\n const error = useSelector(getAccessLogError);\n\n return !error ? null : <ErrorBlock error={error} topMargin={'half'} />;\n}\n\nexport default React.memo(AccessLogError);\n","import reduce_ from 'lodash/reduce';\n\nimport type {\n AccessLogFieldSelectorType,\n AccessLogMethodType,\n AccessLogScopeType,\n AccessLogUserType,\n} from '../../../store/reducers/navigation/tabs/access-log/access-log-filters';\n\nexport function valueToSelection<KeyType extends string, V>(value: Record<KeyType, V>) {\n return reduce_(\n value,\n (acc, v, key) => {\n if (v) {\n acc.push(key as KeyType);\n }\n return acc;\n },\n [] as Array<KeyType>,\n );\n}\n\nfunction selectionToValue<KeyType extends string, EmptyValue>(\n selected: Array<KeyType>,\n emptyValue: EmptyValue,\n) {\n if (!selected.length) {\n return emptyValue;\n }\n return reduce_(\n selected,\n (acc, item) => {\n acc[item as KeyType] = true;\n return acc;\n },\n {} as Record<KeyType, boolean>,\n );\n}\n\nexport const ACCESS_LOG_FIELD_SELECTOR_ITEMS: Array<{\n text: string;\n value: AccessLogFieldSelectorType;\n}> = [\n {text: 'Scope', value: 'scope'},\n {text: 'User type', value: 'user_type'},\n {text: 'Method group', value: 'method_group'},\n {text: 'Transaction info', value: 'transaction_info'},\n];\n\nexport function accessLogFieldSelectorSelectionToValue<EmptyValue>(\n selection: Array<AccessLogFieldSelectorType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_METHOD_ITEMS: Array<{text: string; value: AccessLogMethodType}> = [\n {text: 'Read', value: 'read'},\n {text: 'Write', value: 'write'},\n {text: 'Lock', value: 'lock'},\n {text: 'Link', value: 'link'},\n {text: 'Copy/Move', value: 'copy_move'},\n {text: 'Dynamic table commands', value: 'dynamic_table_commands'},\n];\n\nexport function accessLogMethodSelectionToValue<EmptyValue>(\n selection: Array<AccessLogMethodType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_USER_TYPE_ITEMS: Array<{text: string; value: AccessLogUserType}> = [\n {text: 'Human', value: 'human'},\n {text: 'Robot', value: 'robot'},\n {text: 'System', value: 'system'},\n];\n\nexport function accessLogUserTypeSelectionToValue<EmptyValue>(\n selection: Array<AccessLogUserType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_SCOPE_ITEMS: Array<{text: string; value: AccessLogScopeType}> = [\n {text: 'Table', value: 'table'},\n {text: 'Directory', value: 'directory'},\n {text: 'File', value: 'file'},\n {text: 'Document', value: 'document'},\n {text: 'Other', value: 'other'},\n];\n\nexport function accessLogScopeSelectionToValue<EmptyValue>(\n selection: Array<AccessLogScopeType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n","const SvgAbbrSql = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#abbr-sql_svg__a)\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M13.5 4.75a.75.75 0 0 0-1.5 0v6.5c0 .414.336.75.75.75h2.5a.75.75 0 0 0 0-1.5H13.5zM11 8c0 1.32-.257 2.314-.709 2.98l.99.99a.75.75 0 1 1-1.061 1.06l-1.132-1.132a2.4 2.4 0 0 1-.713.102C6.8 12 5.75 10.667 5.75 8S6.8 4 8.375 4 11 5.333 11 8m-1.957 2.15c.222-.322.457-.98.457-2.149 0-1.168-.235-1.826-.457-2.149-.175-.254-.366-.35-.668-.35s-.493.096-.668.35c-.222.323-.457.981-.457 2.15 0 1.167.235 1.826.457 2.148.175.254.366.351.668.351s.493-.097.668-.351M2.562 4.002c-.689 0-1.285.249-1.702.713C.453 5.17.277 5.76.277 6.352c0 .732.326 1.28.759 1.658.41.358.908.561 1.305.684.398.122.684.217.89.372.147.113.27.266.27.625 0 .29-.109.469-.253.589a1.08 1.08 0 0 1-.686.222c-.202 0-.438-.093-.658-.293a1.4 1.4 0 0 1-.423-.684.75.75 0 1 0-1.462.333c.127.557.453 1.079.878 1.463.426.386 1.006.681 1.665.681.578 0 1.177-.18 1.647-.57.485-.405.791-1.006.791-1.74 0-.843-.352-1.433-.864-1.82-.434-.33-.962-.492-1.306-.597l-.047-.015c-.31-.095-.579-.221-.76-.38a.65.65 0 0 1-.246-.528c0-.304.09-.512.2-.635.099-.11.27-.215.585-.215.322 0 .498.099.612.206.13.123.233.313.3.56a.75.75 0 1 0 1.449-.386c-.113-.42-.325-.892-.719-1.263-.409-.387-.961-.617-1.642-.617\" clipRule=\"evenodd\" /></g><defs><clipPath id=\"abbr-sql_svg__a\"><path fill=\"currentColor\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgAbbrSql;","import React, {FC, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {fetchAccessLogQtId} from '../../../../store/actions/navigation/tabs/access-log/access-log';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport AbbrSqlIcon from '@gravity-ui/icons/svgs/abbr-sql.svg';\n\nexport const AccessLogOpenQtButton: FC = () => {\n const [loading, setLoading] = useState(false);\n const dispatch = useDispatch();\n\n const handleClick = async () => {\n try {\n setLoading(true);\n await dispatch(fetchAccessLogQtId());\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Button onClick={handleClick} loading={loading}>\n <Icon data={AbbrSqlIcon} size={16} />\n Open in QT\n </Button>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport SimplePagination from '../../../../components/Pagination/SimplePagination';\nimport TextInputWithDebounce from '../../../../components/TextInputWithDebounce/TextInputWithDebounce';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport Select from '../../../../components/Select/Select';\n\nimport {\n getAccessLogAvailableTimeRange,\n getAccessLogFilterDistinctBy,\n getAccessLogFilterFieldSelector,\n getAccessLogFilterMetadata,\n getAccessLogFilterMethod,\n getAccessLogFilterPagination,\n getAccessLogFilterPathRegex,\n getAccessLogFilterScope,\n getAccessLogFilterTime,\n getAccessLogFilterUserRegex,\n getAccessLogFilterUserType,\n getAccessLogHasChangedFilters,\n getAccessLogPagesCount,\n} from '../../../../store/selectors/navigation/tabs/access-log';\nimport {\n applyAccessLogFilters,\n setAccessLogFilters,\n setAccessLogFiltersPage,\n} from '../../../../store/actions/navigation/tabs/access-log/access-log';\nimport {\n AccessLogFieldSelectorType,\n AccessLogMethodType,\n AccessLogScopeType,\n AccessLogUserType,\n initialState,\n} from '../../../../store/reducers/navigation/tabs/access-log/access-log-filters';\n\nimport './AccessLogFilters.scss';\nimport {\n TIMELINE_RANGE_PICKER_SHORTCUTS,\n TimelinePicker,\n convertTimeToRequestParams,\n formatInterval,\n} from '../../../../components/common/Timeline';\nimport {EMPTY_OBJECT} from '../../../../constants/empty';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {\n ACCESS_LOG_FIELD_SELECTOR_ITEMS,\n ACCESS_LOG_METHOD_ITEMS,\n ACCESS_LOG_SCOPE_ITEMS,\n ACCESS_LOG_USER_TYPE_ITEMS,\n accessLogFieldSelectorSelectionToValue,\n accessLogMethodSelectionToValue,\n accessLogScopeSelectionToValue,\n accessLogUserTypeSelectionToValue,\n valueToSelection,\n} from '../../../../utils/navigation/tabs/access-log';\nimport {AccessLogOpenQtButton} from './AccessLogOpenQtButton';\n\nconst block = cn('access-log-filters');\n\nexport default React.memo(AccessLogFilters);\n\nfunction AccessLogFilters() {\n return (\n <React.Fragment>\n <Toolbar\n className={block()}\n itemsToWrap={[\n {node: <AccessLogPagination />},\n {node: <AccessLogTimeline />},\n {node: <AccessLogFieldselector />},\n {node: <AccessLogMetadata />},\n {node: <AccessLogDistictBy />},\n {node: <AccessLogOpenQtButton />},\n ]}\n />\n <Toolbar\n className={block()}\n itemsToWrap={[\n {\n node: <AccessLogPathRegexp />,\n growable: true,\n shrinkable: true,\n wrapperClassName: block('path-regex'),\n },\n {\n node: <AccessLogUserRegexp />,\n wrapperClassName: block('user-regex'),\n },\n {\n node: <AccessLogUserTypeFilter />,\n wrapperClassName: block('user-type'),\n },\n {\n node: <AccessLogScopeFilter />,\n wrapperClassName: block('scope'),\n },\n {\n node: <AccessLogMethod />,\n wrapperClassName: block('method-group'),\n },\n {node: <AccessLogApplyFilters />},\n ]}\n />\n </React.Fragment>\n );\n}\n\nfunction AccessLogApplyFilters() {\n const dispatch = useDispatch();\n const hasChanges = useSelector(getAccessLogHasChangedFilters);\n const handleApply = React.useCallback(() => {\n dispatch(applyAccessLogFilters());\n }, [dispatch]);\n return (\n <Button width=\"max\" disabled={!hasChanges} view=\"action\" onClick={handleApply}>\n Apply\n </Button>\n );\n}\n\nfunction AccessLogPagination() {\n const dispatch = useDispatch();\n\n const {index} = useSelector(getAccessLogFilterPagination);\n const pageCount = useSelector(getAccessLogPagesCount);\n\n const handleChange = React.useCallback(\n (value: number) => {\n dispatch(setAccessLogFiltersPage(value));\n },\n [dispatch],\n );\n\n return (\n <SimplePagination\n value={index}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={handleChange}\n />\n );\n}\n\nfunction AccessLogPathRegexp() {\n const dispatch = useDispatch();\n const filter = useSelector(getAccessLogFilterPathRegex);\n\n const handleChange = React.useCallback(\n (path_regex: string) => {\n dispatch(setAccessLogFilters({path_regex}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'Path regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction AccessLogUserRegexp() {\n const dispatch = useDispatch();\n const filter = useSelector(getAccessLogFilterUserRegex);\n\n const handleChange = React.useCallback(\n (user_regex: string) => {\n dispatch(setAccessLogFilters({user_regex}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'User regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nconst METADATA_ITEMS = [\n {\n text: 'Only attributes',\n value: 'only_attrs',\n },\n {\n text: 'Skip attributes',\n value: 'skip_attrs',\n },\n];\n\nfunction AccessLogMetadata() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterMetadata);\n const handleChange = React.useCallback(\n (v: string) => {\n const metadata = v ? v === 'only_attrs' : undefined;\n\n dispatch(setAccessLogFilters({metadata}));\n },\n [dispatch, value],\n );\n const valueStr = value === undefined ? '' : value ? 'only_attrs' : 'skip_attrs';\n return (\n <Select\n value={valueStr ? [valueStr] : undefined}\n items={METADATA_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n placeholder={'Attributes'}\n />\n );\n}\n\nconst DISTINCT_BY_ITEMS = [{text: 'By User', value: 'user'}];\nfunction AccessLogDistictBy() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterDistinctBy);\n const handleChange = React.useCallback(\n (v: string) => {\n dispatch(setAccessLogFilters({distinct_by: v as 'user'}));\n },\n [dispatch],\n );\n\n return (\n <Select\n value={value ? [value] : undefined}\n items={DISTINCT_BY_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n placeholder={'Distinct'}\n />\n );\n}\n\nfunction AccessLogFieldselector() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterFieldSelector);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const field_selector = accessLogFieldSelectorSelectionToValue(\n items as Array<AccessLogFieldSelectorType>,\n initialState.field_selector,\n );\n dispatch(setAccessLogFilters({field_selector}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n items={ACCESS_LOG_FIELD_SELECTOR_ITEMS}\n value={selected}\n multiple\n onUpdate={handleUpdate}\n placeholder={'Columns'}\n />\n );\n}\n\nfunction AccessLogMethod() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterMethod);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const method_group = accessLogMethodSelectionToValue(\n items as Array<AccessLogMethodType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({method_group}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_METHOD_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'Method group: All'}\n width=\"max\"\n />\n );\n}\n\nfunction AccessLogUserTypeFilter() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterUserType);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const user_type = accessLogUserTypeSelectionToValue(\n items as Array<AccessLogUserType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({user_type}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_USER_TYPE_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'User type: All'}\n width=\"max\"\n maxVisibleValues={2}\n />\n );\n}\n\nfunction AccessLogScopeFilter() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterScope);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const scope = accessLogScopeSelectionToValue(\n items as Array<AccessLogScopeType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({scope}));\n },\n [dispatch],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_SCOPE_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'Scope: All'}\n width=\"max\"\n />\n );\n}\n\nconst TIMELINE_SHOURCUTS = [\n {\n title: '1d',\n time: '1d',\n },\n {\n title: '1w',\n time: '1w',\n },\n {\n title: '1M',\n time: '1M',\n },\n {\n time: 'custom',\n },\n];\n\nfunction AccessLogTimeline() {\n const dispatch = useDispatch();\n const updateTime = React.useCallback(\n (time: {from?: number; to?: number}) => {\n const {from, to} = time;\n dispatch(setAccessLogFilters({time: {from, to}}));\n },\n [dispatch],\n );\n\n const updateShortcut = React.useCallback(\n (shortcutValue: string) => {\n dispatch(setAccessLogFilters({time: {shortcutValue}}));\n },\n [dispatch],\n );\n\n const time = useSelector(getAccessLogFilterTime);\n const now = Date.now();\n const {from = now - 24 * 12 * 1000, to = now} = convertTimeToRequestParams(time) || {};\n\n return (\n <React.Fragment>\n <TimelinePicker\n from={from || 0}\n to={to || 0}\n shortcut={time?.shortcutValue}\n onUpdate={updateTime}\n onShortcut={updateShortcut}\n topShortcuts={TIMELINE_SHOURCUTS}\n shortcuts={TIMELINE_RANGE_PICKER_SHORTCUTS}\n hasDatePicker\n />\n <AvailableTimeRange />\n </React.Fragment>\n );\n}\n\nfunction AvailableTimeRange() {\n const {earliest, latest} = useSelector(getAccessLogAvailableTimeRange);\n const hidden = earliest === undefined || latest === undefined;\n\n return (\n <Tooltip\n className={block('available-range')}\n content={\n <React.Fragment>\n Available range:{' '}\n {hidden\n ? 'Please until the range is loaded'\n : formatInterval((earliest ?? 0) * 1000, (latest ?? 0) * 1000)}\n </React.Fragment>\n }\n >\n <Icon awesome=\"question-circle\" />\n </Tooltip>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {\n accessLogResetFilters,\n fetchAccessLog,\n} from '../../../../store/actions/navigation/tabs/access-log/access-log';\n\nimport AccessLogTable from './AccessLogTable';\nimport AccessLogError from './AccessLogError';\nimport AccessLogFilters from './AccessLogFilters';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nfunction AccessLog() {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n\n React.useEffect(() => {\n dispatch(accessLogResetFilters());\n dispatch(fetchAccessLog());\n }, [dispatch, path]);\n\n return (\n <React.Fragment>\n <WithStickyToolbar\n doubleHeight\n toolbar={<AccessLogFilters />}\n content={\n <React.Fragment>\n <AccessLogError />\n <AccessLogTable />\n </React.Fragment>\n }\n />\n </React.Fragment>\n );\n}\n\nexport default React.memo(AccessLog);\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport capitalize_ from 'lodash/capitalize';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {Loader} from '@gravity-ui/uikit';\nimport Error from '../../../../components/Error/Error';\nimport Link from '../../../../components/Link/Link';\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport {Secondary} from '../../../../components/Text/Text';\n\nimport {getTabletErrors} from '../../../../store/actions/navigation/tabs/tablet-errors/tablet-errors-background';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {\n getTabletErrorsBackgroundCountNoticeVisbile,\n getTabletErrorsLoadingStatus,\n getTabletErrorsReplicationErrors,\n} from '../../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport {getReplicatedTableReplicasMap} from '../../../../store/selectors/navigation/content/replicated-table';\nimport {RootState} from '../../../../store/reducers';\n\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {YTError} from '../../../../types';\n\nimport './TabletErrorsBackground.scss';\n\nconst block = cn('navigation-tablet-errors-background');\n\nfunction TabletErrors(props: ConnectedProps<typeof connector>) {\n const {path, mode, cluster, getTabletErrors} = props;\n useEffect(() => {\n getTabletErrors();\n }, [path, mode]);\n\n const {\n loading,\n loaded,\n tabletErrors: {tablet_errors},\n replicationErrors,\n error,\n } = props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler loaded={loaded} error={Boolean(error)} errorData={error}>\n {initialLoading ? (\n <Loader />\n ) : (\n <div className={block({loading: initialLoading})}>\n <TabletErrorsCountNotice />\n <CollapsibleSection name=\"Tablet errors\">\n <TabletErrorsBlock\n cluster={cluster}\n items={tablet_errors}\n sectionClassName={block('section')}\n />\n </CollapsibleSection>\n <CollapsibleSection name=\"Replication errors\">\n <ReplicationErrorsBlock cluster={cluster} data={replicationErrors} />\n </CollapsibleSection>\n </div>\n )}\n </LoadDataHandler>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded, error, tabletErrors} = state.navigation.tabs.tabletErrorsBackground;\n const path = getPath(state);\n const mode = getEffectiveMode(state);\n const cluster = getCluster(state);\n\n return {\n loading,\n loaded,\n error,\n\n path,\n mode,\n tabletErrors,\n cluster,\n replicationErrors: getTabletErrorsReplicationErrors(state),\n };\n};\n\nconst mapDispatchToProps = {\n getTabletErrors,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nconst TabletErrorsConnected = connector(TabletErrors);\n\nexport default function TabletErrorsWithRum() {\n const loadState = useSelector(getTabletErrorsLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLET_ERRORS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLET_ERRORS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TabletErrorsConnected />;\n}\n\ninterface ReplicationErrorsBlockProps {\n cluster: string;\n data: ReturnType<typeof getTabletErrorsReplicationErrors>;\n}\n\nfunction ReplicationErrorsBlock({data, cluster}: ReplicationErrorsBlockProps) {\n let counter = 0;\n return (\n <React.Fragment>\n {map_(data, (items, replicaId) => {\n return (\n <CollapsibleSection\n key={replicaId}\n name={<ReplicaErrorHeader id={replicaId} />}\n className={block('group', block('section'))}\n collapsed={0 < counter++}\n >\n <TabletErrorsBlock cluster={cluster} items={items} />\n </CollapsibleSection>\n );\n })}\n </React.Fragment>\n );\n}\n\nfunction TabletErrorsCountNotice() {\n const visible = useSelector(getTabletErrorsBackgroundCountNoticeVisbile);\n if (!visible) {\n return null;\n }\n return (\n <div className={block('count-notice')}>\n Only limited number of errors is displayed. See Tablets tab for the complete list.\n </div>\n );\n}\n\nfunction TabletErrorsHeader({id, cluster}: {id: string; cluster: string}) {\n return (\n <React.Fragment>\n Errors of tablet <Link url={`/${cluster}/tablet/${id}`}>{id}</Link>\n </React.Fragment>\n );\n}\n\nfunction ReplicaErrorHeader({id}: {id: string}) {\n const data = useSelector(getReplicatedTableReplicasMap);\n const {[id]: attrs} = data;\n\n if (!attrs) return null;\n const {cluster_name: cluster, mode, replica_path: path} = attrs;\n\n const link =\n cluster && path ? <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link> : id;\n\n return (\n <React.Fragment>\n {id}{' '}\n <Secondary>\n ({mode ? `${mode} replica to ` : 'Replica to '}\n {capitalize_(cluster)}, table path {link})\n </Secondary>\n </React.Fragment>\n );\n}\n\ninterface Props {\n cluster: string;\n items?: Record<string, Array<YTError>>;\n sectionClassName?: string;\n}\n\nfunction TabletErrorsBlock({items, cluster, sectionClassName}: Props) {\n if (isEmpty_(items)) {\n return null;\n }\n\n let counter = 0;\n return (\n <div className={block('items')}>\n {map_(items, (errors, id) => {\n return (\n <CollapsibleSection\n key={id}\n className={block('group', sectionClassName)}\n size=\"s\"\n name={<TabletErrorsHeader {...{id, cluster}} />}\n collapsed={0 < counter++}\n >\n {map_(errors, (error, index) => {\n return (\n <Error\n key={index}\n className={block('error')}\n topMargin=\"none\"\n error={error}\n disableLogger={true}\n />\n );\n })}\n </CollapsibleSection>\n );\n })}\n </div>\n );\n}\n","import {ROWS_PER_PAGE} from '../../../../constants/pagination';\nimport {RootState} from '../../../../store/reducers/index.main';\n\nexport const getTabletErrorsByPathError = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.error;\n\nexport const getTabletErrorsByPathLoading = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.loading;\n\nexport const getTabletErrorsByPathLoaded = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.loaded;\n\nexport const getTabletErrorsByPathData = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.data;\n\nexport const getTabletErrorsByPathDataParams = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.dataParams;\n\nexport const getTabletErrorsByPathAllMethods = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.data?.all_methods;\n\nexport const getTabletErrorsByPathPageCount = (state: RootState) => {\n return Math.ceil(\n (state.navigation.tabs.tabletErrorsByPath.total_row_count ?? 0) / ROWS_PER_PAGE,\n );\n};\n\n// Filters\n\nexport const getTabletErrorsByPathTimeRange = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.timeRangeFilter;\n\nexport const getTabletErrorsByPathMethodsFilter = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.methodsFilter;\n\nexport const getTabletErrorsByPathPageFilter = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.pageFilter;\n\nexport const getTabletErrorsByPathTabletIdFilter = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.tabletIdFilter;\n","import {ThunkAction} from 'redux-thunk';\nimport isEqual_ from 'lodash/isEqual';\nimport omit_ from 'lodash/omit';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {\n TabletErrorsApi,\n fetchFromTabletErrorsApi,\n} from '../../../../../../shared/tablet-errors-manager';\nimport {ROWS_PER_PAGE} from '../../../../../constants/pagination';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {tabletErrorsByPathActions} from '../../../../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {\n getTabletErrorsByPathData,\n getTabletErrorsByPathDataParams,\n} from '../../../../../store/selectors/navigation/tabs/tablet-errors-by-path';\n\ntype AsyncAction<T = Promise<void>> = ThunkAction<T, RootState, unknown, any>;\n\nconst cancelHelper = new CancelHelper();\n\ntype ApiMethod = TabletErrorsApi['tablet_errors_by_table'];\n\nexport function loadTabletErrorsByTablePath(\n page: number,\n params: Pick<\n ApiMethod['body'],\n | 'table_path'\n | 'table_id'\n | 'start_timestamp'\n | 'end_timestamp'\n | 'methods'\n | 'tablet_id'\n | 'fixed_end_timestamp'\n >,\n): AsyncAction {\n return (dispatch, getState) => {\n dispatch(\n tabletErrorsByPathActions.onRequest({\n table_path: params.table_path,\n table_id: params.table_id,\n }),\n );\n\n const state = getState();\n const cluster = getCluster(state);\n\n const prevDataParams = getTabletErrorsByPathDataParams(state);\n if (\n page != 0 &&\n !isEqual_(\n omit_(prevDataParams, ['fixed_end_timestamp']),\n omit_(params, ['fixed_end_timestamp']),\n )\n ) {\n page = 0;\n dispatch(tabletErrorsByPathActions.updateFilter({pageFilter: page}));\n return Promise.resolve();\n }\n\n const prevData = getTabletErrorsByPathData(state);\n if (page != 0 && prevData) {\n params.fixed_end_timestamp = prevData.fixed_end_timestamp;\n }\n\n return fetchFromTabletErrorsApi(\n 'tablet_errors_by_table',\n cluster,\n {...params, offset: page * ROWS_PER_PAGE, count_limit: 100},\n cancelHelper.removeAllAndGenerateNextToken(),\n )\n .then(({data}) => {\n const payload =\n page === 0\n ? {data, dataParams: params, total_row_count: data.total_row_count}\n : {data, dataParams: params};\n\n dispatch(tabletErrorsByPathActions.onSuccess(payload));\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch(tabletErrorsByPathActions.onError({error}));\n }\n });\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Flex, Link, Text} from '@gravity-ui/uikit';\n\nimport {\n getTabletErrorsByPathData,\n getTabletErrorsByPathError,\n getTabletErrorsByPathLoaded,\n getTabletErrorsByPathLoading,\n getTabletErrorsByPathPageCount,\n getTabletErrorsByPathPageFilter,\n} from '../../../../../store/selectors/navigation/tabs/tablet-errors-by-path';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport ColumnHeader from '../../../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT, {\n Column,\n DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT,\n} from '../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport {Host} from '../../../../../containers/Host/Host';\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\n\nconst block = cn('yt-tablet-errors-by-path-table');\n\nexport function TabletErrorsByPathTable({className}: {className?: string}) {\n const {columns, data, loading, loaded} = useTableColumnsAndData();\n const error = useSelector(getTabletErrorsByPathError);\n return (\n <div className={className}>\n {Boolean(error) && <ErrorBlock error={error} />}\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={data}\n settings={DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT}\n useThemeYT\n />\n </div>\n );\n}\n\ntype RowType = Exclude<ReturnType<typeof getTabletErrorsByPathData>, undefined>['errors'][number];\n\nfunction useTableColumnsAndData() {\n const cluster = useSelector(getCluster);\n const loading = useSelector(getTabletErrorsByPathLoading);\n const loaded = useSelector(getTabletErrorsByPathLoaded);\n const page = useSelector(getTabletErrorsByPathPageFilter);\n const pageCount = useSelector(getTabletErrorsByPathPageCount);\n\n const {errors = []} = useSelector(getTabletErrorsByPathData) ?? {};\n const columns = React.useMemo(() => {\n const res: Array<Column<RowType>> = [\n {\n name: 'tablet_id',\n header: (\n <ColumnHeader\n column=\"Tablet Id\"\n loading={loading}\n pageIndex={page}\n pageCount={pageCount}\n />\n ),\n render({row: {tablet_id}}) {\n return (\n <Flex className=\"elements-monospace\" alignItems=\"center\">\n <Text ellipsis variant=\"inherit\">\n <Link href={`/${cluster}/tablet/${tablet_id}`}>{tablet_id}</Link>\n </Text>\n <ClipboardButton text={tablet_id} view=\"flat-secondary\" inlineMargins />\n </Flex>\n );\n },\n },\n {\n name: 'method',\n header: <ColumnHeader column=\"Method\" />,\n render({row: {method}}) {\n return method;\n },\n },\n {\n name: 'host',\n header: <ColumnHeader column=\"Host\" />,\n render({row: {host}}) {\n return <Host address={host} asTabletNode inlineMargins />;\n },\n },\n {\n name: 'date',\n header: <ColumnHeader column=\"Date\" />,\n render({row: {timestamp}}) {\n return moment(timestamp * 1000).format('YYYY-MM-DD HH:mm:ss');\n },\n },\n {\n name: 'error_message',\n header: <ColumnHeader column=\"Error message\" />,\n className: block('cell-error-msg'),\n render({row: {error}}) {\n return error.message;\n },\n },\n {\n name: 'actions',\n header: null,\n render({row: {error}}) {\n return (\n <ClickableAttributesButton\n title=\"Details\"\n attributes={error}\n inlineMargins\n />\n );\n },\n },\n ];\n return res;\n }, [cluster, page, pageCount, loading]);\n return {data: errors, columns, loading, loaded};\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport SimplePagination from '../../../../../components/Pagination/SimplePagination';\nimport Select from '../../../../../components/Select/Select';\nimport {YTTimeline, calcFromTo} from '../../../../../components/common/YTTimeline';\nimport WithStickyToolbar from '../../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport TextInputWithDebounce from '../../../../../components/TextInputWithDebounce/TextInputWithDebounce';\n\nimport {docsUrl} from '../../../../../config';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {\n getTabletErrorsByPathAllMethods,\n getTabletErrorsByPathMethodsFilter,\n getTabletErrorsByPathPageCount,\n getTabletErrorsByPathPageFilter,\n getTabletErrorsByPathTabletIdFilter,\n getTabletErrorsByPathTimeRange,\n} from '../../../../../store/selectors/navigation/tabs/tablet-errors-by-path';\nimport {tabletErrorsByPathActions} from '../../../../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {loadTabletErrorsByTablePath} from '../../../../../store/actions/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {getNavigationPathAttributes} from '../../../../../store/selectors/navigation/navigation';\nimport UIFactory from '../../../../../UIFactory';\n\nimport {TabletErrorsByPathTable} from './TabletErrorsByPathTable';\n\nimport './TabletErrorsByPath.scss';\n\nconst block = cn('yt-tablet-errors-by-path');\n\nexport function TabletErrorsRequest() {\n return (\n <WithStickyToolbar\n className={block()}\n doubleHeight\n toolbar={<TabletErrorsRequestToolbar className={block('toolbar')} />}\n content={<TabletErrorsByPathTable className={block('content')} />}\n />\n );\n}\n\nexport function TabletErrorsRequestToolbar({className}: {className: string}) {\n const dispatch = useDispatch();\n const {\n timeRange: {from, to, shortcutValue},\n tabletIdFilter,\n pageFilter,\n methodsFilter,\n } = useTabletErrorFromApiLoad();\n const pageCount = useSelector(getTabletErrorsByPathPageCount);\n\n const allMethods = useSelector(getTabletErrorsByPathAllMethods) ?? [];\n\n return (\n <div className={className}>\n <YTTimeline\n from={from!}\n to={to!}\n shortcut={shortcutValue}\n onUpdate={({from, to, shortcutValue}) => {\n dispatch(\n tabletErrorsByPathActions.updateFilter({\n timeRangeFilter: {from, to, shortcutValue},\n }),\n );\n }}\n hasRuler={true}\n />\n <Toolbar\n itemsToWrap={[\n {\n node: (\n <SimplePagination\n value={pageFilter}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={(pageFilter) => {\n dispatch(tabletErrorsByPathActions.updateFilter({pageFilter}));\n }}\n />\n ),\n },\n {\n node: (\n <TextInputWithDebounce\n className={block('tablet-id-filter')}\n value={tabletIdFilter}\n onUpdate={(value) => {\n dispatch(\n tabletErrorsByPathActions.updateFilter({\n tabletIdFilter: value,\n }),\n );\n }}\n placeholder=\"Tablet Id filter...\"\n />\n ),\n },\n {\n node: (\n <Select\n multiple\n label=\"Methods:\"\n value={methodsFilter}\n items={allMethods?.map((value) => {\n return {value, text: value};\n })}\n onUpdate={(v) =>\n dispatch(\n tabletErrorsByPathActions.updateFilter({\n methodsFilter: v,\n }),\n )\n }\n placeholder=\"Select...\"\n hasClear\n maxVisibleValuesTextLength={80}\n />\n ),\n },\n {\n node: docsUrl(\n <HelpLink url={UIFactory.docsUrls['bundles:tablet-errors']} />,\n ),\n },\n ]}\n />\n </div>\n );\n}\n\nfunction useTabletErrorFromApiLoad() {\n const path = useSelector(getPath);\n const timeRange = useSelector(getTabletErrorsByPathTimeRange);\n const methodsFilter = useSelector(getTabletErrorsByPathMethodsFilter);\n const pageFilter = useSelector(getTabletErrorsByPathPageFilter);\n const {id} = useSelector(getNavigationPathAttributes) ?? {};\n const tabletIdFilter = useSelector(getTabletErrorsByPathTabletIdFilter);\n\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n if (!path || !id) {\n return;\n }\n\n if (timeRange.from === undefined || timeRange.to === undefined) {\n const {from, to} = calcFromTo(timeRange);\n dispatch(\n tabletErrorsByPathActions.updateFilter({timeRangeFilter: {...timeRange, from, to}}),\n );\n } else {\n dispatch(\n loadTabletErrorsByTablePath(pageFilter, {\n table_id: id,\n table_path: path,\n start_timestamp: Math.floor(timeRange.from / 1000),\n end_timestamp: Math.ceil(timeRange.to / 1000),\n methods: methodsFilter.length ? methodsFilter : undefined,\n ...(tabletIdFilter ? {tablet_id: tabletIdFilter} : {}),\n }),\n );\n }\n }, [path, id, timeRange, methodsFilter, pageFilter, tabletIdFilter, dispatch]);\n return {timeRange, methodsFilter, tabletIdFilter, pageFilter};\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {RadioButton} from '@gravity-ui/uikit';\n\nimport {getConfigData} from '../../../../config/ui-settings';\nimport {updateTabletErrorsViewMode} from '../../../../store/actions/navigation/tabs/tablet-errors/tablet-errors-background';\nimport {\n getTabletErrorsBackgroundCount,\n getTabletErrorsViewMode,\n} from '../../../../store/selectors/navigation/tabs/tablet-errors-background';\n\nimport TabletErrorsBackground from './TabletErrorsBackground';\nimport {TabletErrorsRequest} from './TabletErrorsByPath/TabletErrorsByPath';\n\nexport default function TabletErrors() {\n const dispatch = useDispatch();\n\n const viewMode = useSelector(getTabletErrorsViewMode);\n const backgroundErrorCount = useSelector(getTabletErrorsBackgroundCount);\n\n const allowTabletErrorsAPI = getConfigData().allowTabletErrorsAPI;\n\n const content =\n viewMode === 'request_errors' ? <TabletErrorsRequest /> : <TabletErrorsBackground />;\n\n return (\n <div>\n {allowTabletErrorsAPI && (\n <RadioButton<typeof viewMode>\n value={viewMode}\n onUpdate={(v) => dispatch(updateTabletErrorsViewMode(v))}\n options={[\n {value: 'request_errors', content: 'Request errors'},\n {\n value: 'background_errors',\n content: `Background errors ${backgroundErrorCount}`,\n },\n ]}\n />\n )}\n {content}\n </div>\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {UnknownAction} from '@reduxjs/toolkit';\n\nimport CancelHelper, {isCancelled} from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../selectors/navigation';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {RootState} from '../../../../store/reducers';\nimport {userAttributesActions} from '../../../../store/reducers/navigation/tabs/user-attributes';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nconst requests = new CancelHelper();\n\nexport function requestUserAttributes(): AsyncAction<Promise<void>> {\n return async (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch(userAttributesActions.onRequest());\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationUserAttributes, {\n parameters: prepareRequest('/@user_attributes', {\n path,\n transaction,\n }),\n output_format: TYPED_OUTPUT_FORMAT,\n cancellation: requests.saveCancelToken,\n })\n .then((attributes) => {\n dispatch(userAttributesActions.onSuccess({attributes}));\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch(userAttributesActions.onFailure({error}));\n }\n });\n };\n}\n\nexport function abortAndReset(): AsyncAction<Promise<void>> {\n return async (_dispatch) => {\n requests.removeAllRequests();\n };\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getUserAttributes = (state: RootState) =>\n state.navigation.tabs.userAttributes.attributes;\nexport const getUserAttributesLoadInfo = (state: RootState) => ({\n loading: state.navigation.tabs.userAttributes.loading,\n loaded: state.navigation.tabs.userAttributes.loaded,\n error: state.navigation.tabs.userAttributes.error,\n});\n","import React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport unipika from '../../../../common/thor/unipika';\nimport cn from 'bem-cn-lite';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {YsonDownloadButton} from '../../../../components/DownloadAttributesButton';\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {\n abortAndReset,\n requestUserAttributes,\n} from '../../../../store/actions/navigation/tabs/user-attributes';\nimport {\n getUserAttributes,\n getUserAttributesLoadInfo,\n} from '../../../../store/selectors/navigation/tabs/user-attributes';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\n\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../../utils/utils';\nimport {pathToFileName} from '../../helpers/pathToFileName';\n\nimport './UserAttributes.scss';\n\nconst block = cn('navigation-user-attributes');\n\nfunction UserAttributes() {\n const dispatch = useDispatch();\n const {loading, loaded, error} = useSelector(getUserAttributesLoadInfo);\n const path = useSelector(getPath);\n const mode = useSelector(getEffectiveMode);\n const userAttributes = useSelector(getUserAttributes);\n const settings = unipika.prepareSettings();\n\n useEffect(() => {\n dispatch(requestUserAttributes());\n return () => {\n dispatch(abortAndReset);\n };\n }, [path, mode]);\n\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler loaded error={Boolean(error)}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <Yson\n value={userAttributes}\n settings={settings}\n extraTools={\n <YsonDownloadButton\n value={userAttributes}\n settings={settings}\n name={`user_attributes_${pathToFileName(path)}`}\n />\n }\n folding\n />\n )}\n </div>\n </LoadDataHandler>\n );\n}\n\nexport default function UserAttributesWithRum() {\n const {loaded, loading, error} = useSelector(getUserAttributesLoadInfo);\n const loadState = calculateLoadingStatus(Boolean(loading), Boolean(loaded), error);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_USER_ATTRIBUTES,\n startDeps: [loading],\n allowStart: ([loading]) => Boolean(loading),\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_USER_ATTRIBUTES,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <UserAttributes />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\nimport {getNavigationTableMountConfig} from '../../../../store/selectors/navigation/content/table-mount-config';\nimport ErrorBlock from '../../../../components/Error/Error';\nimport Yson from '../../../../components/Yson/Yson';\nimport {getNavigationMountConfigYsonSettings} from '../../../../store/selectors/thor/unipika';\nimport {YsonDownloadButton} from '../../../../components/DownloadAttributesButton';\nimport {UnipikaValue} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {pathToFileName} from '../../helpers/pathToFileName';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nconst block = cn('table-mount-config');\n\nfunction TableMountConfig() {\n const {data, error} = useSelector(getNavigationTableMountConfig);\n const path = useSelector(getPath);\n\n const settings = useSelector(getNavigationMountConfigYsonSettings);\n\n return (\n <div className={block('table-mount-config')}>\n {error ? (\n <ErrorBlock error={error} topMargin={'none'} />\n ) : (\n <Yson\n value={data}\n settings={settings}\n folding\n extraTools={\n <YsonDownloadButton\n value={data as UnipikaValue}\n settings={settings}\n name={`mount_config_${pathToFileName(path)}`}\n />\n }\n />\n )}\n </div>\n );\n}\n\nexport default React.memo(TableMountConfig);\n","import React from 'react';\nimport withLazyLoading from '../../../../hocs/withLazyLoading';\n\nfunction importFlow() {\n return import(/* webpackChunkName: \"navigation-flow\" */ './Flow');\n}\n\nexport const Flow = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importFlow()).Flow};\n }),\n);\n","import React from 'react';\n\nimport Consumer from '../../../../../pages/navigation/tabs/Consumer/Consumer';\nimport Queue from '../../../../../pages/navigation/tabs/Queue/Queue';\nimport ACL from '../../../../../pages/navigation/tabs/ACL/ACL';\nimport Locks from '../../../../../pages/navigation/tabs/Locks/Locks';\nimport Schema from '../../../../../pages/navigation/tabs/Schema/Schema';\nimport Tablets from '../../../../../pages/navigation/tabs/Tablets/Tablets';\nimport Attributes from '../../../../../pages/navigation/tabs/Attributes/Attributes';\nimport AccessLog from '../../../../../pages/navigation/tabs/AccessLog/AccessLog';\nimport TabletErrors from '../../../../../pages/navigation/tabs/TabletErrors/TabletErrors';\nimport UserAttributes from '../../../../../pages/navigation/tabs/UserAttributes/UserAttributes';\nimport TableMountConfig from '../../../../../pages/navigation/tabs/TableMountConfig/TableMountConfig';\nimport {Flow} from '../../../../../pages/navigation/tabs/Flow';\n\nimport {Tab} from '../../../../../constants/navigation';\nimport UIFactory from '../../../../../UIFactory';\n\nconst getSupportedAttributeTypes = () => {\n const supportedAttributeTypes: Record<string, React.ComponentType> = {\n acl: ACL,\n locks: Locks,\n schema: Schema,\n tablets: Tablets,\n attributes: Attributes,\n tablet_errors: TabletErrors,\n user_attributes: UserAttributes,\n [Tab.ACCESS_LOG]: AccessLog,\n [Tab.AUTO]: React.Fragment,\n [Tab.CONSUMER]: Consumer,\n [Tab.MOUNT_CONFIG]: TableMountConfig,\n [Tab.QUEUE]: Queue,\n [Tab.FLOW]: Flow,\n };\n\n UIFactory.getNavigationExtraTabs().forEach((tab) => {\n supportedAttributeTypes[tab.value] = tab.component;\n });\n\n return supportedAttributeTypes;\n};\n\nexport default (mode: string) => {\n const supportedAttributeTypes = getSupportedAttributeTypes();\n\n return mode in supportedAttributeTypes\n ? supportedAttributeTypes[mode as keyof typeof supportedAttributeTypes]\n : undefined;\n};\n","import getComponentByContentType from './getComponentByContentType';\nimport {Tab} from '../../../../../constants/navigation';\nimport {YTError} from '../../../../../../@types/types';\nimport ypath from '../../../../../common/thor/ypath';\nimport getComponentByMode from './getComponentByMode';\n\nexport function checkContentIsSupported(type: string, mode: string) {\n if (mode === Tab.CONTENT) return Boolean(getComponentByContentType(type));\n return Boolean(getComponentByMode(mode));\n}\n\nfunction hasViewerForType(type: string): boolean {\n return checkContentIsSupported(type, Tab.CONTENT);\n}\n\nexport function itemNavigationAllowed(item: {\n type: string;\n targetPathBroken: unknown;\n parsedPathError?: YTError;\n}) {\n if (item) {\n if (\n item.parsedPathError ||\n (item.type === 'link' && ypath.getBoolean(item.targetPathBroken))\n ) {\n return false;\n }\n\n const noAccess = item.type === undefined;\n\n return hasViewerForType(item.type) || noAccess;\n }\n\n return false;\n}\n","import React, {Component, Fragment} from 'react';\nimport PropTypes from 'prop-types';\n\nimport Hotkey from '../../../components/Hotkey/Hotkey';\n\nimport {getDisplayName} from '../../../utils';\n\nimport '../ElementsTable.scss';\n\nexport default (ElementsTable) => {\n return class WithKeyboardNavigation extends Component {\n static displayName = `WithKeyboardNavigation(${getDisplayName(ElementsTable)})`;\n\n static propTypes = {\n // from parent\n hotkeys: PropTypes.array,\n onItemClick: PropTypes.func,\n selectedIndex: PropTypes.number,\n items: PropTypes.array.isRequired,\n };\n\n static defaultProps = {\n hotkeys: [],\n selectedIndex: 0,\n onItemClick: () => {},\n };\n\n state = {\n hoverSelectedIndex: this.props.selectedIndex,\n selectedIndex: this.props.selectedIndex,\n mode: 'mouse',\n };\n\n get hotkeys() {\n return [\n ...this.props.hotkeys.map(this.wrapHotkeyHandler),\n\n {keys: 'k, up', handler: this.selectPrev, scope: 'all'},\n {keys: 'up', handler: this.selectPrev, scope: 'filter'},\n\n {keys: 'j, down', handler: this.selectNext, scope: 'all'},\n {keys: 'down', handler: this.selectNext, scope: 'filter'},\n\n {\n keys: 'l, enter, ctrl+right',\n handler: this.handleItemKeyboardClick,\n scope: 'all',\n },\n {\n keys: 'enter',\n handler: this.handleItemKeyboardClick,\n scope: 'filter',\n },\n ];\n }\n\n wrapHotkeyHandler = (params) => {\n const {handler, ...rest} = params;\n return {\n ...rest,\n handler: (...args) => {\n const {items} = this.props;\n const {selectedIndex} = this.state;\n return handler(...args, {\n item: items[selectedIndex],\n index: selectedIndex,\n });\n },\n };\n };\n\n selectIndex = (index) => {\n const {items} = this.props;\n const maxIndex = Math.max(0, items.length - 1);\n\n let state;\n if (index > maxIndex) {\n state = {\n selectedIndex: maxIndex,\n hoverSelectedIndex: maxIndex,\n };\n } else if (index < 0) {\n state = {\n selectedIndex: 0,\n hoverSelectedIndex: 0,\n };\n } else {\n state = {\n selectedIndex: index,\n hoverSelectedIndex: index,\n };\n }\n\n this.setState({mode: 'keyboard', ...state});\n };\n\n selectNext = () => {\n const {hoverSelectedIndex} = this.state;\n\n this.selectIndex(hoverSelectedIndex + 1);\n };\n\n selectPrev = () => {\n const {hoverSelectedIndex} = this.state;\n\n this.selectIndex(hoverSelectedIndex - 1);\n };\n\n handleMouseMove = () => {\n const {mode} = this.state;\n\n if (mode !== 'mouse') {\n this.setState({mode: 'mouse'});\n }\n };\n\n handleItemHover = (item, index) => {\n const {mode} = this.state;\n\n if (mode === 'mouse') {\n this.setState({\n hoverSelectedIndex: index,\n });\n }\n };\n\n handleItemSelect = (item, index) => {\n const {mode} = this.state;\n const elem = document.querySelector(\n `.elements-table__row_selected_yes[data-index=\"${index}\"]`,\n );\n\n if (elem && mode === 'keyboard') {\n const windowHeight = document.documentElement.clientHeight;\n const bounding = elem.getBoundingClientRect();\n const bottomCoordinate = bounding.y + bounding.height;\n const topCoordinate = bounding.y;\n\n if (bottomCoordinate > windowHeight) {\n elem.scrollIntoView(false);\n } else if (topCoordinate < 120) {\n elem.scrollIntoView(true);\n window.scrollBy(0, -120);\n }\n }\n };\n\n handleItemKeyboardClick = () => {\n const {onItemClick, items} = this.props;\n const {selectedIndex} = this.state;\n\n if (items && items[selectedIndex]) {\n onItemClick(items[selectedIndex]);\n }\n };\n\n render() {\n const {selectedIndex, mode} = this.state;\n\n return (\n <Fragment>\n <ElementsTable\n {...this.props}\n cssHover={mode === 'mouse'}\n onItemHover={this.handleItemHover}\n onMouseMove={this.handleMouseMove}\n selectedIndex={mode === 'keyboard' ? selectedIndex : null}\n onItemSelect={mode === 'keyboard' ? this.handleItemSelect : null}\n />\n <Hotkey settings={this.hotkeys} />\n </Fragment>\n );\n }\n };\n};\n","import React, {Component} from 'react';\nimport {batch, connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport findIndex_ from 'lodash/findIndex';\n\nimport {\n FormattedLink,\n FormattedTextOrLink,\n printColumnAsBytes,\n printColumnAsNumber,\n} from '../../../../components/formatters';\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport withKeyboardNavigation from '../../../../components/ElementsTable/hocs/withKeyboardNavigation';\nimport ElementsTableBase from '../../../../components/ElementsTable/ElementsTable';\nimport Link from '../../../../components/Link/Link';\nimport Icon from '../../../../components/Icon/Icon';\nimport AccountLink from '../../../accounts/AccountLink';\n\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {itemNavigationAllowed} from '../../../../pages/navigation/Navigation/ContentViewer/helpers';\n\nimport {\n getContentMode,\n getLoadState,\n getPreparedTableColumns,\n getSelected,\n getSelectedIndex,\n getSortedNodes,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {getTransaction} from '../../../../store/selectors/navigation';\n\nimport {\n navigateParent,\n setMode,\n updatePath,\n updateView,\n} from '../../../../store/actions/navigation';\nimport {setSelectedItem} from '../../../../store/actions/navigation/content/map-node';\n\nimport {ROOT_POOL_NAME, Tab as SchedulingTab} from '../../../../constants/scheduling';\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../../constants/navigation';\nimport {LOADING_STATUS, Page} from '../../../../constants/index';\nimport hammer from '../../../../common/hammer';\nimport {showTableEraseModal} from '../../../../store/actions/navigation/modals/table-erase-modal';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\n\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus, showErrorPopup} from '../../../../utils/utils';\nimport PathActions from './PathActions';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport WarningIcon from '../../../../components/WarningIcon/WarningIcon';\nimport TTLInfo from '../../../../components/TTLInfo/TTLInfo';\nimport UIFactory from '../../../../UIFactory';\n\nimport './MapNodesTable.scss';\n\nconst block = cn('map-nodes-table');\nconst ElementsTable = withKeyboardNavigation(ElementsTableBase);\n\nexport function renderMapNodesTableIcon(item) {\n let icon = UIFactory.getNavigationMapNodeSettings()?.renderNodeIcon(item);\n if (icon) {\n // do nothing\n } else if (MapNodesTable.isTrashNode(item) || MapNodesTable.isLinkToTrashNode(item)) {\n icon = <Icon awesome=\"trash-alt\" />;\n } else {\n icon = <Icon awesome={getIconNameForType(item.iconType, item.targetPathBroken)} />;\n }\n\n return (\n <span className={'icon-wrapper'} title={item.type}>\n {icon}\n </span>\n );\n}\n\nclass MapNodesTable extends Component {\n static propTypes = {\n columns: PropTypes.objectOf(\n PropTypes.shape({\n sort: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n caption: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n align: PropTypes.string,\n get: PropTypes.func,\n }),\n ),\n contentMode: PropTypes.string.isRequired,\n selected: PropTypes.object.isRequired,\n loadState: PropTypes.string.isRequired,\n nodes: PropTypes.array.isRequired,\n selectedIndex: PropTypes.number.isRequired,\n transaction: PropTypes.string,\n\n setSelectedItem: PropTypes.func.isRequired,\n navigateParent: PropTypes.func.isRequired,\n updatePath: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n };\n\n static TRASH_PATH = '//tmp/trash';\n\n static isTrashNode(item) {\n return item.path === MapNodesTable.TRASH_PATH;\n }\n\n static isLinkToTrashNode(item) {\n return item.targetPath === MapNodesTable.TRASH_PATH;\n }\n\n static renderTrash(linkState) {\n return <FormattedLink text=\"trash\" state={linkState} theme=\"primary\" />;\n }\n\n static renderName(item) {\n return (\n <div className={block('name-cell')}>\n <div className={block('name-cell-text')}>{MapNodesTable.renderNameImpl(item)}</div>\n <div className={block('name-cell-tags')}>{MapNodesTable.renderTags(item)}</div>\n </div>\n );\n }\n\n static renderTags(item) {\n return (\n <TTLInfo\n attributes={item.$attributes}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n return true;\n }}\n />\n );\n }\n\n static renderNameImpl(item) {\n if (MapNodesTable.isTrashNode(item)) {\n return MapNodesTable.renderTrash(item.pathState);\n } else if (MapNodesTable.isLinkToTrashNode(item)) {\n return MapNodesTable.renderTrash(item.targetPathState);\n }\n\n const type = item.type;\n\n const textOrLink = (\n <FormattedTextOrLink\n text={item.caption}\n state={item.pathState}\n asLink={itemNavigationAllowed(item)}\n asHTML\n title={item.title}\n theme=\"primary\"\n className={block('name', 'unipika-wrapper')}\n />\n );\n\n const name = !item.parsedPathError ? (\n textOrLink\n ) : (\n <Tooltip content={<span>{item.parsedPathError.message} </span>}>\n <WarningIcon /> {textOrLink}\n </Tooltip>\n );\n\n if (type === 'scheduler_pool') {\n const poolTreeIndex = findIndex_(\n item.parsedPath.fragments,\n (fragment) => fragment.name === 'pool_trees',\n );\n\n const pool = item.parsedPath.fragments[poolTreeIndex + 2] ? item.name : ROOT_POOL_NAME;\n const poolTree = item.parsedPath.fragments[poolTreeIndex + 1].name;\n\n const url = `${Page.SCHEDULING}/${SchedulingTab.OVERVIEW}?pool=${pool}&tree=${poolTree}`;\n const arrow = <span>➞</span>;\n const goToLink = (\n <Link url={url} title={url}>\n <span>go to scheduling</span>\n </Link>\n );\n\n return (\n <span>\n {name} {arrow} {goToLink}\n </span>\n );\n }\n\n if (type === 'link') {\n const target = (\n <FormattedTextOrLink\n text={item.targetPath}\n state={item.targetPathState}\n asLink={itemNavigationAllowed(item)}\n theme=\"primary\"\n />\n );\n\n const viewLink = (\n <FormattedLink text=\"view link\" state={item.linkPathState} theme=\"ghost\" />\n );\n\n const arrow = <span>➞</span>;\n\n return (\n <span>\n {name} {viewLink} {arrow} {target}\n </span>\n );\n }\n\n return <span>{name}</span>;\n }\n\n static renderLocks(item) {\n return (\n item.locks > 0 && (\n <span title={item.locks + ' locks'}>\n <Icon face=\"solid\" awesome=\"lock\" />\n </span>\n )\n );\n }\n\n static renderModificationTime(item) {\n return hammer.format['DateTime'](item.modified, {format: 'full'});\n }\n\n static renderCreationTime(item) {\n return hammer.format['DateTime'](item.created, {format: 'full'});\n }\n\n static renderAccount(item, columnName) {\n return <AccountLink account={item[columnName]} inline />;\n }\n\n get hotkeys() {\n const {navigateParent} = this.props;\n\n return [\n {keys: 'h, ctrl+left', handler: navigateParent, scope: 'all'},\n {keys: 'space', handler: this.onSpaceHotkey, scope: 'all'},\n ];\n }\n\n get defaultColumns() {\n return [\n 'icon',\n 'name',\n 'locks',\n 'account',\n 'disk_space',\n 'row_count',\n 'modification_time',\n 'creation_time',\n ];\n }\n\n get resourcesColumns() {\n return [\n 'icon',\n 'name',\n 'master_memory',\n 'tablet_static_memory',\n 'tablet_count',\n 'disk_space',\n 'data_weight',\n 'chunk_count',\n 'node_count',\n 'row_count',\n ];\n }\n\n get columns() {\n return {\n sets: {\n default: {\n items: ['chooser', ...this.defaultColumns, 'actions'],\n },\n resources: {\n items: ['chooser', ...this.resourcesColumns, 'actions'],\n },\n },\n };\n }\n\n get tableProps() {\n return {\n css: 'map-node_' + this.props.contentMode,\n theme: 'light',\n striped: false,\n tableId: NAVIGATION_MAP_NODE_TABLE_ID,\n computeKey: (item) => item.name,\n onItemClick: this.onItemClick,\n columns: this.columns,\n templates: {\n chooser: this.renderChooser,\n icon: renderMapNodesTableIcon,\n name: MapNodesTable.renderName,\n locks: MapNodesTable.renderLocks,\n modification_time: MapNodesTable.renderModificationTime,\n creation_time: MapNodesTable.renderCreationTime,\n row_count: this.renderRowCount,\n chunk_count: this.printColumnAsNumber,\n node_count: this.printColumnAsNumber,\n disk_space: this.printColumnAsBytes,\n data_weight: this.printColumnAsBytes,\n tablet_static_memory: this.printColumnAsBytes,\n master_memory: this.printColumnAsBytes,\n tablet_count: this.printColumnAsNumber,\n account: MapNodesTable.renderAccount,\n actions: this.renderActions,\n },\n };\n }\n\n onItemClick = (item, _index, evt) => {\n if (evt?.target?.classList?.contains?.('map-node_default__table-item_type_chooser')) {\n this.onChooserClick(evt, item);\n } else if (item.parsedPathError) {\n showErrorPopup(item.parsedPathError, {hideOopsMsg: true, disableLogger: true});\n } else if (itemNavigationAllowed(item)) {\n batch(() => {\n this.props.updatePath(item.path);\n this.props.setMode('auto');\n });\n }\n };\n\n onSpaceHotkey = (evt, info, {item}) => {\n this.onChooserClick(evt, item);\n };\n\n onChooserClick = (evt, item) => {\n const {\n nativeEvent: {shiftKey},\n } = evt;\n this.props.setSelectedItem(item.name, shiftKey);\n evt.stopPropagation();\n };\n\n renderChooser = (item) => {\n const {selected} = this.props;\n const value = selected[item.name];\n\n return (\n <Checkbox\n id={`item_${item.name}`}\n size=\"l\"\n key={value}\n checked={value}\n onChange={(evt) => {\n this.onChooserClick(evt, item);\n }}\n >\n <span />\n </Checkbox>\n );\n };\n\n renderActions = (item) => {\n return <PathActions item={item} />;\n };\n\n renderRowCount = (item, columnName) => {\n const column = this.props.columns[columnName];\n return (item.dynamic ? '≈ ' : '') + hammer.format['Number'](column.get(item));\n };\n\n printColumnAsBytes = printColumnAsBytes.bind(this);\n printColumnAsNumber = printColumnAsNumber.bind(this);\n\n rowClassName = ({dynamic}) => {\n return dynamic ? block('row', {dyntable: true}) : undefined;\n };\n\n render() {\n const {nodes, columns, contentMode, loadState, selectedIndex} = this.props;\n\n const settings = {\n ...this.tableProps,\n items: nodes,\n columns: {\n ...this.tableProps.columns,\n items: columns,\n mode: contentMode,\n },\n };\n\n return (\n columns && (\n <div className={block()}>\n <ElementsTable\n {...settings}\n isLoading={loadState === LOADING_STATUS.LOADING}\n selectedIndex={selectedIndex}\n hotkeys={this.hotkeys}\n key={selectedIndex}\n rowClassName={this.rowClassName}\n />\n </div>\n )\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n loadState: getLoadState(state),\n columns: getPreparedTableColumns(state),\n transaction: getTransaction(state),\n contentMode: getContentMode(state),\n nodes: getSortedNodes(state),\n selected: getSelected(state),\n selectedIndex: getSelectedIndex(state),\n };\n}\n\nconst mapDispatchToProps = {\n setSelectedItem,\n navigateParent,\n updateView,\n updatePath,\n setMode,\n showTableEraseModal,\n showTableSortModal,\n showTableMergeModal,\n};\n\nconst MapNodesTableConnected = connect(mapStateToProps, mapDispatchToProps)(MapNodesTable);\n\nexport default function MapNodesTableWithRum() {\n const loadState = useSelector(getLoadState);\n const nodes = useSelector(getSortedNodes);\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE,\n stopDeps: [nodes, loadState],\n allowStop: ([nodes, loadState]) => {\n return Boolean(nodes) && isFinalLoadingStatus(loadState);\n },\n });\n\n return <MapNodesTableConnected />;\n}\n","import React, {Component} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\n// @ts-expect-error\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {renderMapNodesTableIcon} from '../../../../../pages/navigation/content/MapNode/MapNodesTable';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport {Checkbox, Loader} from '@gravity-ui/uikit';\nimport Error from '../../../../../components/Error/Error';\nimport Modal from '../../../../../components/Modal/Modal';\nimport Label from '../../../../../components/Label/Label';\n\nimport {\n closeDeleteModal,\n deleteObject,\n deleteObjects,\n getRealPath,\n getRealPaths,\n togglePermanentlyDelete,\n} from '../../../../../store/actions/navigation/modals/delete-object';\nimport withScope from '../../../../../hocs/components/Modal/withScope';\nimport {checkIsTrash} from '../../../../../store/selectors/navigation';\nimport hammer from '../../../../../common/hammer';\n\nimport './DeleteObjectModal.scss';\nimport UIFactory from '../../../../../UIFactory';\nimport type {RootState} from '../../../../../store/reducers';\nimport {DeleteObjectItem} from '../../../../../store/reducers/navigation/modals/delete-object';\n\nconst block = cn('navigation-delete-object-modal');\n\ntype OwnProps = {};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype DeleteObjectModalProps = OwnProps & StateProps & DispatchProps;\n\nexport class DeleteObjectModal extends Component<DeleteObjectModalProps> {\n componentDidUpdate(prevProps: DeleteObjectModalProps) {\n const {visible, item, getRealPath, getRealPaths, multipleMode} = this.props;\n\n if (!prevProps.visible && visible) {\n if (multipleMode) {\n getRealPaths(item as DeleteObjectItem[]);\n } else {\n getRealPath(item as DeleteObjectItem);\n }\n }\n }\n\n get content() {\n const {loadingRealPath, errorRealPath, error, multipleMode} = this.props;\n\n if (loadingRealPath) {\n return this.renderLoader();\n } else if (errorRealPath || error) {\n return this.renderError();\n }\n\n return multipleMode ? this.renderMultipleModeContent() : this.renderContent();\n }\n\n handleDeleteClick = () => {\n const {multipleMode, deleteObject, deleteObjects} = this.props;\n\n if (multipleMode) {\n deleteObjects();\n } else {\n deleteObject();\n }\n };\n\n renderLoader() {\n return (\n <div className={block({loading: true})}>\n <Loader />\n </div>\n );\n }\n\n renderError() {\n const {error, errorData, errorDataRealPath} = this.props;\n const errorContent = error ? errorData : errorDataRealPath;\n\n return (\n <div className={block({error: true})}>\n <Error error={errorContent} />\n </div>\n );\n }\n\n renderPermanentlyCheckbox() {\n const {permanently, togglePermanentlyDelete, inTrash} = this.props;\n\n return (\n <p className={block('delete', {permanently})}>\n <Checkbox\n size=\"l\"\n disabled={inTrash}\n checked={permanently}\n content=\"Delete permanently\"\n onChange={togglePermanentlyDelete}\n />\n\n <Label theme=\"danger\" text=\"This action CANNOT be undone\" />\n </p>\n );\n }\n\n renderMultipleModeContent() {\n const {item, multipleInfo} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block({multiple: true})}>\n <div className={block('table')}>\n <div className={block('table-header')}>\n <div className={block('preview-icon')} />\n <div className={block('preview-name')}>Name</div>\n <div className={block('preview-disk-space')}>Disk space</div>\n <div className={block('preview-node-count')}>Node count</div>\n <div className={block('preview-node-count')}>Row count</div>\n </div>\n\n {map_(multipleInfo, ({path, resourceUsage}, index) => {\n const {type, titleUnquoted, rows, unmergedRows} = (\n item as DeleteObjectItem[]\n )[index];\n const diskSpace = ypath.get(resourceUsage, '/disk_space');\n const nodeCount = ypath.get(resourceUsage, '/node_count');\n\n return (\n <React.Fragment key={path}>\n {renderMapNodesTableIcon((item as DeleteObjectItem[])[index])}\n <span title={path} className=\"elements-ellipsis\">\n {titleUnquoted}\n </span>\n <span>{hammer.format['Bytes'](diskSpace)}</span>\n <span>\n {type === 'table'\n ? hammer.format.NO_VALUE\n : hammer.format['Number'](nodeCount)}\n </span>\n <span>\n {unmergedRows\n ? `≈ ${hammer.format['Number'](unmergedRows)}`\n : hammer.format['Number'](rows)}\n </span>\n </React.Fragment>\n );\n })}\n </div>\n {this.renderPermanentlyCheckbox()}\n </div>\n </ErrorBoundary>\n );\n }\n\n renderContent() {\n const {item, resourceUsage} = this.props;\n const {type, rows, unmergedRows} = item as DeleteObjectItem;\n const diskSpace = ypath.get(resourceUsage, '/disk_space');\n const nodeCount = ypath.get(resourceUsage, '/node_count');\n\n const buildItems = () => {\n const items = [\n {\n key: 'Disk space',\n value: hammer.format['Bytes'](diskSpace),\n },\n ];\n\n switch (type) {\n case 'table':\n items.push({\n key: 'Rows',\n value: unmergedRows\n ? `≈ ${hammer.format['Number'](unmergedRows)}`\n : hammer.format['Number'](rows),\n });\n\n return items;\n\n case 'access_control_object':\n return [];\n\n default:\n items.push({\n key: 'Node count',\n value: hammer.format['Number'](nodeCount),\n });\n\n return items;\n }\n };\n\n return (\n <ErrorBoundary>\n <div className={block()}>\n <div className={block()}>\n <p className={block('object')}>\n {renderMapNodesTableIcon(item)}\n <span className={block('path')}>{(item as DeleteObjectItem).path}</span>\n </p>\n\n <MetaTable className={block('meta')} items={buildItems()} />\n\n {this.renderPermanentlyCheckbox()}\n </div>\n </div>\n </ErrorBoundary>\n );\n }\n\n render() {\n const {visible, closeDeleteModal, permanently, loading} = this.props;\n const theme = permanently ? 'outlined-danger' : 'action';\n const helpLinkUrl = UIFactory.docsUrls['common:regular_system_processes'];\n const helpLink =\n helpLinkUrl !== '' ? <HelpLink text=\"Documentation\" url={helpLinkUrl} /> : null;\n const title = permanently ? 'Delete' : 'Move to trash';\n const confirmText = permanently ? 'Delete' : 'Move to trash';\n\n return (\n <Modal\n title={title}\n visible={visible}\n loading={loading}\n confirmTheme={theme}\n confirmText={confirmText}\n content={this.content}\n footerContent={helpLink}\n contentClassName={block('content')}\n onCancel={closeDeleteModal}\n onConfirm={this.handleDeleteClick}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n error,\n errorData,\n loading,\n visible,\n permanently,\n item,\n loadingRealPath,\n errorRealPath,\n errorDataRealPath,\n realPath,\n resourceUsage,\n multipleInfo,\n multipleMode,\n } = state.navigation.modals.deleteObject;\n const inTrash = checkIsTrash(state);\n\n return {\n error,\n errorData,\n visible,\n permanently,\n item,\n loading,\n loadingRealPath,\n errorRealPath,\n errorDataRealPath,\n realPath,\n multipleInfo,\n resourceUsage,\n multipleMode,\n inTrash,\n };\n};\n\nconst mapDispatchToProps = {\n getRealPath,\n deleteObject,\n deleteObjects,\n getRealPaths,\n closeDeleteModal,\n togglePermanentlyDelete,\n};\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withScope('delete-object-modal'),\n)(DeleteObjectModal);\n","import {ValueOf} from '../../@types/types';\n\nexport type AnnotationVisibilityType = ValueOf<typeof AnnotationVisibility>;\n\nexport const AnnotationVisibility = {\n HIDDEN: 'hidden',\n VISIBLE: 'visible',\n PARTIAL: 'partial',\n} as const;\n\nexport function normalizeAnnotationVisibility(\n value?: AnnotationVisibilityType,\n): AnnotationVisibilityType {\n return value || AnnotationVisibility.PARTIAL;\n}\n","import React, {FC} from 'react';\nimport {Markdown} from '../../../components/Markdown/Markdown';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\ntype Props = {\n annotation?: string;\n expanded: boolean;\n onToggle: () => void;\n};\n\nexport const AnnotationWithPartial: FC<Props> = ({annotation, expanded, onToggle}) => {\n const value = annotation || '';\n\n const {isFullText, text} = React.useMemo(() => {\n const rows = value.split(/\\n+/);\n return {\n text: rows.slice(0, 3).join('\\n\\n'),\n isFullText: rows.length <= 3,\n };\n }, [value]);\n\n return (\n <>\n <Markdown text={expanded ? value : text} />\n {isFullText ? null : (\n <ClickableText color={'secondary'} onClick={onToggle}>\n {expanded ? 'Hide more' : 'Show more'}\n </ClickableText>\n )}\n </>\n );\n};\n","import React, {FC} from 'react';\nimport {Button, Flex} from '@gravity-ui/uikit';\nimport Icon from '../../../components/Icon/Icon';\n\ntype Props = {\n isSaving: boolean;\n editMode: boolean;\n onEditClick: () => void;\n onCancelClick: () => void;\n onSaveClick: () => void;\n};\n\nexport const ActionButtons: FC<Props> = ({\n isSaving,\n editMode,\n onEditClick,\n onSaveClick,\n onCancelClick,\n}) => {\n if (editMode)\n return (\n <Flex gap={1}>\n <Button view=\"action\" onClick={onSaveClick} loading={isSaving}>\n Save\n </Button>\n <Button view=\"flat\" onClick={onCancelClick}>\n Cancel\n </Button>\n </Flex>\n );\n\n return (\n <Button view=\"outlined\" onClick={onEditClick}>\n <Icon awesome={'pencil'} />\n </Button>\n );\n};\n","import React, {FC, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport ErrorBlock from '../../../components/Error/Error';\nimport CollapsibleSection from '../../../components/CollapsibleSection/CollapsibleSection';\nimport {\n getNavigationAnnotation,\n getNavigationAnnotationEditing,\n getNavigationAnnotationError,\n getNavigationAnnotationPath,\n getNavigationAnnotationSaving,\n} from '../../../store/selectors/navigation/tabs/annotation';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {getSettingAnnotationVisibility} from '../../../store/selectors/settings';\nimport {setSettingAnnotationVisibility} from '../../../store/actions/settings/settings';\nimport {AnnotationVisibility} from '../../../../shared/constants/settings-ts';\nimport './NavigationDescription.scss';\nimport {AnnotationWithPartial} from './AnnotationWithPartial';\nimport {ActionButtons} from './ActionButtons';\nimport {EditAnnotationWithPreview} from '../../../components/EditAnnotationWithPreview/EditAnnotationWithPreview';\nimport {saveAnnotation} from '../../../store/actions/navigation/tabs/annotation';\nimport {\n SET_ANNOTATION,\n SET_ANNOTATION_EDITING,\n} from '../../../constants/navigation/tabs/annotation';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../constants/global';\n\nconst block = cn('navigation-description');\n\ntype Props = {\n className: string;\n};\n\nconst NavigationDescription: FC<Props> = ({className}) => {\n const dispatch = useDispatch();\n const annotation = useSelector(getNavigationAnnotation) || '';\n const visibility = useSelector(getSettingAnnotationVisibility);\n const path = useSelector(getPath);\n const isSaving = useSelector(getNavigationAnnotationSaving);\n const isEditing = useSelector(getNavigationAnnotationEditing);\n const annotationPath = useSelector(getNavigationAnnotationPath);\n const error = useSelector(getNavigationAnnotationError);\n const oldValue = useRef<string>(annotation);\n\n const expanded = visibility === AnnotationVisibility.VISIBLE;\n const handleToggleAnnotationCollapse = useCallback(() => {\n dispatch(\n setSettingAnnotationVisibility(\n expanded ? AnnotationVisibility.PARTIAL : AnnotationVisibility.VISIBLE,\n ),\n );\n }, [dispatch, expanded]);\n\n const handleEditClick = useCallback(() => {\n oldValue.current = annotation;\n dispatch({type: SET_ANNOTATION_EDITING, data: true});\n }, [annotation, dispatch]);\n\n const handleCancelClick = useCallback(() => {\n dispatch({type: SET_ANNOTATION, data: oldValue.current});\n dispatch({type: SET_ANNOTATION_EDITING, data: false});\n }, [dispatch]);\n\n const handleChangeDescription = useCallback(\n ({value}: {value: string | undefined}) => {\n dispatch({type: SET_ANNOTATION, data: value || ''});\n },\n [dispatch],\n );\n\n const handleSaveClick = useCallback(() => {\n dispatch(saveAnnotation(path));\n }, [dispatch, path]);\n\n if (!(path === annotationPath && (error || annotation))) return null;\n\n return (\n <div className={block(null, className)}>\n <CollapsibleSection\n className={block('collapsible')}\n name={'Description'}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n overview={\n <ActionButtons\n isSaving={isSaving}\n editMode={isEditing}\n onEditClick={handleEditClick}\n onSaveClick={handleSaveClick}\n onCancelClick={handleCancelClick}\n />\n }\n >\n <div className={block('content')}>\n {isEditing ? (\n <EditAnnotationWithPreview\n valuePath={path}\n value={{value: annotation}}\n initialValue={{value: annotation}}\n onChange={handleChangeDescription}\n className={block('edit-block')}\n hideReset\n />\n ) : (\n <AnnotationWithPartial\n annotation={annotation}\n expanded={expanded}\n onToggle={handleToggleAnnotationCollapse}\n />\n )}\n {error && <ErrorBlock error={error} />}\n </div>\n </CollapsibleSection>\n </div>\n );\n};\n\nexport default NavigationDescription;\n","import React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Tab} from '../../../../constants/navigation';\nimport NavigationDescription from '../../NavigationDiscription/NavigationDescription';\nimport {getComponentByContentType, getComponentByMode} from './helpers';\n\nconst block = cn('navigation');\n\ntype Props = {\n type: string;\n mode: string;\n};\n\nconst ContentViewer: FC<Props> = ({type, mode}) => {\n const isContentTab = mode === Tab.CONTENT;\n const Component = isContentTab ? getComponentByContentType(type) : getComponentByMode(mode);\n\n if (!Component) return undefined;\n\n return (\n <ErrorBoundary>\n <div className={block('viewer', {mode})}>\n {isContentTab && <NavigationDescription className={block('description')} />}\n <Component />\n </div>\n </ErrorBoundary>\n );\n};\n\nexport default ContentViewer;\n","import React from 'react';\nimport {Icon} from '@gravity-ui/uikit';\nimport {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\n\nimport ErrorImage901 from '../../../../assets/img/svg/901.svg';\nimport ErrorImage500 from '../../../../assets/img/svg/500.svg';\nimport {ErrorCode} from './helpers';\n\ntype Props = {\n type: ErrorCode;\n};\n\ntype ImageMap = {\n [key in ErrorCode]: SVGIconData;\n};\n\nconst ErrorImages: ImageMap = {\n 500: ErrorImage500,\n 901: ErrorImage901,\n};\n\nexport function NavigationErrorImage(props: Props) {\n const {type} = props;\n\n const ErrorImage = ErrorImages[type];\n\n return <Icon data={ErrorImage} size={150} />;\n}\n","const Svg500 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 152 150\" {...props}><path fill=\"none\" d=\"M.5 0h150v150H.5z\" /><path fill=\"#ECF2F9\" d=\"M76.456 18.436a6.03 6.03 0 0 0-6.032-6.032H6.532A6.03 6.03 0 0 0 .5 18.436v96.772a6.03 6.03 0 0 0 6.032 6.032h123.62a6.03 6.03 0 0 0 6.032-6.032V30.501a6.03 6.03 0 0 0-6.032-6.033H82.446c-3.271 0-5.99-2.676-5.99-6.032\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M138.35 20.348a7.987 7.987 0 1 0 0-15.974 7.987 7.987 0 0 0 0 15.974\" clipRule=\"evenodd\" /><path fill=\"#2EE5C0\" d=\"M145.029 17.408a1.334 1.334 0 1 0-1.887 1.887zm4.527 8.301a1.335 1.335 0 0 0 1.888-1.887zM33.143 43.925a1.334 1.334 0 0 0-2.669 0zm-2.669 3.696a1.334 1.334 0 0 0 2.669 0zm2.669 8.326a1.334 1.334 0 0 0-2.669 0zm-2.669 4.63a1.334 1.334 0 0 0 2.669 0zm9.66-6.992a1.334 1.334 0 0 0 0-2.668zm-3.738-2.668a1.334 1.334 0 0 0 0 2.668zm-9.218 2.668a1.334 1.334 0 0 0 0-2.668zm-3.696-2.668a1.334 1.334 0 0 0 0 2.668zm119.66-31.622 6.414 6.414 1.888-1.887-6.415-6.414zM30.474 43.925v3.696h2.669v-3.696zm0 12.022v4.63h2.669v-4.63zm9.66-5.03h-3.738v2.668h3.739zm-12.956 0h-3.696v2.668h3.696z\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M105.385 145.624H23.227c-4.248 0-7.731-3.484-7.731-7.732v-53.27c0-4.249 3.483-7.732 7.731-7.732h82.158c4.248 0 7.732 3.483 7.732 7.731v53.271c0 4.248-3.484 7.732-7.732 7.732\" clipRule=\"evenodd\" /><path fill=\"#2EE5C0\" d=\"M23.44 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M30.619 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M37.798 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M15.58 92.523h97.239\" /><path fill=\"#027BF3\" d=\"M57.977 45.242v67.417c0 16.992 7.731 18.309 11.215 18.309s68.437-1.784 68.437-1.784-10.068-6.67-10.068-22.26V34.069L70.466 32.2z\" /><path fill=\"#fff\" d=\"m103.446 63.79-7.743 8.375-7.865-8.415-7.338 7.814 7.946 8.416-7.946 8.616 7.338 7.654 7.865-8.616 7.743 8.215 7.054-7.814-7.662-8.215 7.662-8.376z\" /><path fill=\"#00236B\" fillRule=\"evenodd\" d=\"m69.404 45.497-11.427-.255 12.616-13v12.023c0 .68-.552 1.231-1.19 1.231m10.195 75.36s.34 8.454-10.408 10.111c5.564 0 21.85-.498 37.221-.967 13.734-.42 26.737-.817 30.706-.817 8.411 0 10.068-10.238 10.068-10.238z\" clipRule=\"evenodd\" /></svg>;\nexport default Svg500;","const Svg901 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 150 150\" {...props}><path fill=\"none\" d=\"M0 0h150v150H0z\" /><path fill=\"#ECF2F9\" d=\"M75.956 18.436a6.03 6.03 0 0 0-6.032-6.032H6.032A6.03 6.03 0 0 0 0 18.436v96.772a6.03 6.03 0 0 0 6.032 6.032h123.62a6.03 6.03 0 0 0 6.032-6.032V30.501a6.03 6.03 0 0 0-6.032-6.032H81.946c-3.271 0-5.99-2.677-5.99-6.033\" /><path fill=\"#2EE5C0\" d=\"M32.643 43.925a1.334 1.334 0 0 0-2.669 0zm-2.669 3.696a1.334 1.334 0 1 0 2.669 0zm2.669 8.326a1.334 1.334 0 1 0-2.669 0zm-2.669 4.63a1.334 1.334 0 0 0 2.669 0zm9.66-6.991a1.334 1.334 0 0 0 0-2.67zm-3.738-2.67a1.334 1.334 0 1 0 0 2.67zm-9.218 2.67a1.334 1.334 0 0 0 0-2.67zm-3.696-2.67a1.334 1.334 0 0 0 0 2.67zm6.992-6.991v3.696h2.669v-3.696zm0 12.022v4.63h2.669v-4.63zm9.66-5.03h-3.738v2.669h3.739zm-12.956 0h-3.696v2.669h3.696zM134.661 3.528a1.335 1.335 0 0 0-2.669 0zm-2.669 3.24a1.334 1.334 0 1 0 2.669 0zm2.669 7.298a1.335 1.335 0 0 0-2.669 0zm-2.669 4.06a1.334 1.334 0 1 0 2.669 0zm8.633-5.965a1.334 1.334 0 0 0 0-2.669zm-3.277-2.669a1.334 1.334 0 0 0 0 2.669zm-8.081 2.669a1.335 1.335 0 1 0 0-2.669zm-3.24-2.669a1.335 1.335 0 0 0 0 2.669zm5.965-5.964v3.24h2.669v-3.24zm0 10.538v4.06h2.669v-4.06zm8.633-4.574h-3.277v2.669h3.277zm-11.358 0h-3.24v2.669h3.24z\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M104.885 145.624H22.727c-4.248 0-7.731-3.483-7.731-7.732v-53.27c0-4.249 3.483-7.732 7.731-7.732h82.158c4.248 0 7.732 3.483 7.732 7.731v53.271c0 4.249-3.484 7.732-7.732 7.732\" clipRule=\"evenodd\" /><path fill=\"#2EE5C0\" d=\"M22.94 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M30.119 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M37.298 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M15.08 92.523h97.239\" /><path fill=\"#00236B\" fillRule=\"evenodd\" d=\"m88.303 36.461 27.477 15.804c3.231 1.85 4.345 5.959 2.451 8.809l-15.335 26.463c-1.894 3.553-5.978 4.663-9.209 2.813l-3.342-1.925-1.782 3.035c-.223.333-.631.444-.928.26l-1.931-1.111-2.748 4.737c-.111.222-.334.37-.557.444l-6.572 1.962c-.483.148-.78.703-.669 1.185l1.448 5.773a.99.99 0 0 1-.668 1.148l-5.83 1.776c-.482.185-.78.703-.668 1.185l1.485 5.736c.149.482-.185 1-.668 1.148l-5.867 1.813c-.483.185-.78.704-.668 1.185l1.56 5.959c.148.481-.186.999-.67 1.147 0 0-4.195 1.295-7.463 2.369-3.267 1.073-4.901-.556-5.495-2.48-.594-1.962-2.265-8.143-2.265-8.143-.037-.222 0-.481.111-.703l20.46-35.309-2.042-1.184c-.335-.185-.446-.63-.26-.963l1.782-3.035-3.193-1.813c-3.194-1.888-4.308-5.959-2.451-9.179l15.298-26.463c1.894-3.183 5.979-4.294 9.209-2.443m3.193 15.434c-1.485 2.554-.594 5.81 1.968 7.291 2.562 1.48 5.83.592 7.315-1.962s.594-5.81-1.968-7.29-5.83-.593-7.315 1.96\" clipRule=\"evenodd\" /><path fill=\"#007CE9\" fillRule=\"evenodd\" d=\"m83.253 40.977 30.299 2.405c3.379.185 6.127 3.183 6.09 6.773V78.1c0 3.516-2.748 6.33-6.164 6.33h-3.602v3.367c0 .37-.26.666-.594.666h-2.079v5.663c0 .26-.112.481-.26.666l-4.419 4.849a.96.96 0 0 0 0 1.295l3.899 4.072c.334.333.334.925 0 1.295l-3.899 4.404c-.334.37-.334.963 0 1.296l3.899 3.96c.334.333.334.925 0 1.295l-3.899 4.516c-.334.37-.334.962 0 1.295l4.085 4.071c.334.334.334.926 0 1.296 0 0-2.785 3.294-4.976 5.848s-4.307 2.146-5.718.851-5.83-5.515-5.83-5.515c-.148-.185-.26-.407-.26-.666V88.795h-2.302c-.371 0-.668-.333-.668-.703v-3.479h-3.602c-3.713 0-6.721-3.035-6.721-6.736V47.306a6.29 6.29 0 0 1 6.72-6.33M93.5 53.079c0 2.887 2.34 5.293 5.161 5.404 2.823.111 5.088-2.147 5.088-4.997s-2.265-5.255-5.088-5.403c-2.859-.111-5.16 2.11-5.16 4.996\" clipRule=\"evenodd\" /><path fill=\"#00236B\" d=\"M94.875 7.777c-13.219 0-23.95 10.696-23.95 23.873 0 5.366 1.745 10.474 5.013 14.62l1.597-2.703A20.8 20.8 0 0 1 73.82 31.65c0-11.585 9.432-20.986 21.054-20.986s21.054 9.4 21.054 20.986c0 11.584-9.469 20.948-21.054 20.948-.445 0-.965-.037-1.337-.037-.037.333-.111.74-.037 1.555a5 5 0 0 0 .334 1.332c.52.037.483.037 1.003.037 13.219 0 23.95-10.696 23.95-23.872S108.057 7.777 94.875 7.777\" /><path fill=\"#00236B\" d=\"M101.67 134.246c2.191-2.554 4.976-5.848 4.976-5.848.334-.37.334-.963 0-1.296l-4.085-4.071c-.334-.333-.334-.925 0-1.295l3.899-4.516c.334-.37.334-.962 0-1.295l-3.899-3.96c-.334-.334-.334-.926 0-1.296l3.899-4.404c.334-.37.334-.962 0-1.296l-3.899-4.071a.96.96 0 0 1 0-1.295l4.419-4.849c.148-.185.26-.407.26-.666V89.61c0-.667-.52-1.185-1.188-1.185l-3.862.37a3.52 3.52 0 0 0-3.528 3.516v42.046c0 .962 1.114 1.554 1.894.962.371-.259.743-.629 1.114-1.073\" opacity={0.2} /></svg>;\nexport default Svg901;","import {connect} from 'react-redux';\n\nimport RequestPermissions from '../../../../../containers/ACL/RequestPermissions/RequestPermissions';\nimport {\n getDenyColumnsItems,\n getIdmPermissionsRequestError,\n} from '../../../../../store/selectors/acl';\nimport {cancelRequestPermissions, requestPermissions} from '../../../../../store/actions/acl';\nimport {IdmObjectType} from '../../../../../constants/acl';\n\nconst idmKind = IdmObjectType.PATH;\n\nconst mapStateToProps = (state) => {\n const denyColumns = getDenyColumnsItems(state, idmKind);\n\n return {\n idmKind,\n denyColumns,\n error: getIdmPermissionsRequestError(state, idmKind),\n };\n};\n\nexport default connect(mapStateToProps, {requestPermissions, cancelRequestPermissions})(\n RequestPermissions,\n);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport hammer from '../../../../../common/hammer';\nimport {Info} from '../../../../../components/Info/Info';\n\nimport './RequestPermission.scss';\n\nconst block = cn('request-permission-is-not-allowed');\n\ntype Props = {\n objectType: any;\n};\n\nexport function RequestPermissionIsNotAllowed(props: Props) {\n const {objectType} = props;\n\n return (\n <Info className={block()}>\n It is not possible to request access to the{' '}\n {hammer.format['Readable'](objectType, {caps: 'none'})}. Please request access to the\n parent directory.\n </Info>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../../../../common/thor/ypath';\nimport {getParentPath} from '../../../../../utils/navigation';\nimport RequestPermissions from '../../../tabs/ACL/RequestPermissions/RequestPermissions';\nimport {RequestPermissionIsNotAllowed} from './RequestPermissionIsNotAllowed';\nimport {YTError} from '../../../../../../@types/types';\n\nimport './RequestPermission.scss';\n\nconst block = cn('request-permission');\n\ntype Props = {\n error: YTError;\n path?: string;\n cluster: string;\n};\n\nexport function RequestPermission(props: Props) {\n const {path: currentPath, error, cluster} = props;\n const objectType = ypath.getValue(error?.attributes, '/object_type');\n const errorPath = ypath.getValue(error?.attributes, '/path');\n const isRequestPermissionsForPathAllowed = objectType === 'map_node';\n\n const path = errorPath ?? currentPath;\n\n const pathForRequest = isRequestPermissionsForPathAllowed ? path : getParentPath(path);\n\n return (\n <div>\n {!isRequestPermissionsForPathAllowed && (\n <RequestPermissionIsNotAllowed objectType={objectType} />\n )}\n\n <RequestPermissions\n buttonClassName={block('request-permissions-button')}\n path={pathForRequest}\n cluster={cluster}\n buttonProps={{size: 'l', width: 'max'}}\n />\n </div>\n );\n}\n","import {getYtErrorCode} from '../../../../../utils/errors';\nimport {YTError} from '../../../../../../@types/types';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * should be: (typeof YTErrors)[keyof typeof YTErrors]\n * after migrating javascript-wrapper on TS\n */\nexport type ErrorCode = 500 | 901;\n\ntype NoAccessTitlePayload = {\n username: string;\n permissions: Array<UnipikaValue>;\n path: string;\n};\n\ntype NoPathTitlePayload = {\n path: string;\n};\n\ntype TitlePayload = NoAccessTitlePayload & NoPathTitlePayload;\n\ntype ErrorInfo = {\n [key in ErrorCode]: {\n getTitle: (payload: TitlePayload) => string;\n };\n};\n\nexport const ErrorsInfo: ErrorInfo = {\n 901: {\n getTitle: (payload: NoAccessTitlePayload) => {\n const {username, permissions, path} = payload;\n const permission = permissions.map((perm: UnipikaValue) => perm.$value).join(' | ');\n return `User ${username} does not have \"${permission}\" access to node \"${path}\"`;\n },\n },\n 500: {\n getTitle: (payload: NoPathTitlePayload) => {\n const {path} = payload;\n return `Path \"${path}\" does not exist`;\n },\n },\n};\n\nexport function getErrorTitle(error: YTError, path?: string): string {\n const {attributes} = error;\n\n const code = getLeadingErrorCode(error);\n\n if (!code) return 'An unexpected error occurred';\n\n const title = ErrorsInfo[code].getTitle({\n path: path || '',\n username: attributes?.user.$value || '',\n permissions: attributes?.permission || '',\n });\n\n return title;\n}\n\n/**\n * returns first non-undefined error code,\n * from root error to inner errors\n */\nexport function getLeadingErrorCode(error: YTError): ErrorCode | undefined {\n const errorCode = getYtErrorCode(error);\n if (!isNaN(errorCode)) {\n return errorCode;\n }\n\n if (!error.inner_errors) return;\n\n const errors = error.inner_errors;\n\n for (const inner_error of errors) {\n const innerErrorCode = getYtErrorCode(inner_error);\n if (!isNaN(innerErrorCode)) {\n return innerErrorCode;\n }\n\n if (inner_error.inner_errors) {\n errors.concat(inner_error.inner_errors);\n }\n }\n\n return;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {Flex, Text} from '@gravity-ui/uikit';\n\nimport Error from '../../../../components/Error/Error';\nimport {NavigationErrorImage} from './NavigationErrorImage';\nimport ErrorDetails from '../../../../components/ErrorDetails/ErrorDetails';\nimport {RequestPermission} from './RequestPermission';\nimport {getPermissionDeniedError} from '../../../../utils/errors';\nimport {YTError} from '../../../../../@types/types';\nimport {getErrorTitle, getLeadingErrorCode} from './helpers';\n\nimport './NavigationError.scss';\n\nconst block = cn('navigation-error');\n\ntype Props = {\n path?: string;\n details: YTError;\n cluster: string;\n message: string;\n};\n\nfunction PrettyError(props: Props) {\n const {details, path, cluster} = props;\n\n const code = getLeadingErrorCode(details);\n const error = code == 901 ? getPermissionDeniedError(details)! : details;\n\n const title = getErrorTitle(error, path);\n\n return (\n <Flex className={block()} justifyContent=\"center\" alignItems=\"center\" gap={7}>\n <Flex>\n <NavigationErrorImage type={code || 500} />\n </Flex>\n <Flex direction=\"column\" className={block('info')} gap={4}>\n <Text className={block('title')}>{title}</Text>\n <ErrorDetails error={details} />\n {code === 901 && <RequestPermission cluster={cluster} path={path} error={error} />}\n </Flex>\n </Flex>\n );\n}\n\nfunction UnexpectedError(props: Props) {\n const {details, message} = props;\n\n return <Error className={block('unexpected-error')} error={details} message={message} />;\n}\n\nexport function NavigationError(props: Props) {\n const {details} = props;\n\n const code = getLeadingErrorCode(details);\n\n return (\n <>\n {code !== undefined && [500, 901].includes(code) ? (\n <PrettyError {...props} />\n ) : (\n <UnexpectedError {...props} />\n )}\n </>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {\n getNavigationCheckPermissionsError,\n getNavigationIsAccountUsable,\n getNavigationIsWritable,\n getNavigationPathAccount,\n} from '../../../store/selectors/navigation/navigation';\nimport {useSelector} from 'react-redux';\nimport Error from '../../../components/Error/Error';\nimport Block from '../../../components/Block/Block';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {genAccountsAclLink} from '../../../utils/accounts/accounts';\nimport {getCluster} from '../../../store/selectors/global';\nimport Link from '../../../components/Link/Link';\n\nimport './NavigationPermissionsNotice.scss';\nconst block = cn('navigation-permissions-notice');\n\nexport function NavigationPermissionsNotice() {\n const path = useSelector(getPath);\n const isWriteable = useSelector(getNavigationIsWritable);\n const isAccountUsable = useSelector(getNavigationIsAccountUsable);\n const checkPermissionsError = useSelector(getNavigationCheckPermissionsError);\n const account = useSelector(getNavigationPathAccount);\n const cluster = useSelector(getCluster);\n\n if (checkPermissionsError) {\n return <Error error={checkPermissionsError} message={'Check permissions error'} />;\n }\n\n const accountAclLink = genAccountsAclLink(cluster, account);\n\n return isWriteable && !isAccountUsable ? (\n <Block\n type={'alert'}\n message={\n <div className={block()}>\n You cannot modify <span className={block('path')}> {path} </span> since you have\n no permission <span className={block('use')}> use </span> to the corresponding\n account\n <Link routed url={accountAclLink}>\n {' '}\n {account}\n </Link>\n .\n </div>\n }\n />\n ) : null;\n}\n","import {Page} from '../../constants';\nimport {AccountsTab} from '../../constants/accounts/accounts';\n\nexport function genAccountsAclLink(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.ACL}?account=${account}`;\n}\n","import React from 'react';\n\nimport isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\n\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../../common/thor/ypath';\n\n// @ts-ignore\nimport {\n DialogError,\n DialogField,\n DialogTabField,\n FormApi,\n YTDFDialog,\n} from '../../../components/Dialog';\nimport {\n getNavigationAttributesEditorAttributes,\n getNavigationAttributesEditorDynamicTables,\n getNavigationAttributesEditorError,\n getNavigationAttributesEditorMapNodes,\n getNavigationAttributesEditorPath,\n getNavigationAttributesEditorStaticTables,\n getNavigationAttributesEditorVisible,\n} from '../../../store/selectors/navigation/modals/attributes-editor';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n hideNavigationAttributesEditor,\n navigationSetNodeAttributes,\n} from '../../../store/actions/navigation/modals/attributes-editor';\nimport {getMediumListNoCache} from '../../../store/selectors/thor';\nimport {\n InMemoryMode,\n InMemoryModeType,\n StorageOptions,\n compressionCodecValueFromString,\n compressionCodecValueToString,\n erasureCodecFromStorageOption,\n normalizeErasureCodec,\n storageOptionFromErasureCodec,\n} from '../../../utils/cypress-attributes';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {\n getCompressionCodecs,\n getErasureCodecs,\n} from '../../../store/selectors/global/supported-features';\nimport {docsUrl} from '../../../config';\n\nimport './AttributesEditor.scss';\nimport UIFactory from '../../../UIFactory';\n\nconst block = cn('navigation-attributes-editor');\n\ninterface FormValues {\n general: {\n path: Array<{title: string}>;\n account: string;\n primary_medium: string;\n tablet_cell_bundle: string;\n in_memory_mode: InMemoryModeType | '';\n\n expiration_time: {from?: string | number};\n expiration_timeout: {value: number};\n };\n storage: {\n path: Array<{title: string}>;\n optimize_for: 'lookup' | 'scan';\n compression_codec: Array<string>;\n erasure_codec: string;\n replication_factor: number;\n\n runMerge: true;\n _storageOption: 'replication' | 'erasure';\n };\n description: {\n annotation: {value: string};\n };\n}\n\n// eslint-disable-next-line complexity\nfunction AttributesEditorLoaded() {\n const paths = useSelector(getNavigationAttributesEditorPath);\n const attributesMap = useSelector(getNavigationAttributesEditorAttributes);\n\n const singleMode = !(paths?.length! > 1);\n const attributes = paths?.length === 1 ? attributesMap[paths[0]] : {};\n\n const mediumList = useSelector(getMediumListNoCache);\n const dispatch = useDispatch();\n const storeError = useSelector(getNavigationAttributesEditorError);\n\n const [stateError, setErr] = React.useState<any>(undefined);\n\n const error = stateError || storeError;\n\n const handleClose = React.useCallback(() => {\n dispatch(hideNavigationAttributesEditor());\n }, [dispatch]);\n\n const hasMapNodes = useSelector(getNavigationAttributesEditorMapNodes).length > 0;\n const hasStaticTables = useSelector(getNavigationAttributesEditorStaticTables).length > 0;\n const hasDynamicTables = useSelector(getNavigationAttributesEditorDynamicTables).length > 0;\n\n const hasTables = hasStaticTables || hasDynamicTables || hasMapNodes; // map-node is required for inheritance\n const hasDynTableOrMapNode = hasMapNodes || hasDynamicTables;\n\n const erasureCodec = ypath.getValue(attributes, '/@erasure_codec');\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n const annotationInitial = {\n value: ypath.getValue(attributes, '/@annotation'),\n };\n const initialValues: FormValues = {\n general: {\n path: pathsValues,\n account: ypath.getValue(attributes, '/@account') || '',\n primary_medium: ypath.getValue(attributes, '/@primary_medium') || '',\n tablet_cell_bundle: ypath.getValue(attributes, '/@tablet_cell_bundle') || '',\n in_memory_mode: ypath.getValue(attributes, '/@in_memory_mode'),\n\n expiration_time: {from: ypath.getValue(attributes, '/@expiration_time')},\n expiration_timeout: {value: ypath.getValue(attributes, '/@expiration_timeout')},\n },\n storage: {\n path: pathsValues,\n optimize_for: ypath.getValue(attributes, '/@optimize_for') || 'lookup',\n compression_codec: compressionCodecValueFromString(\n ypath.getValue(attributes, '/@compression_codec'),\n ),\n erasure_codec: normalizeErasureCodec(erasureCodec),\n replication_factor: ypath.getValue(attributes, '/@replication_factor'),\n\n runMerge: true,\n _storageOption:\n storageOptionFromErasureCodec(erasureCodec) || StorageOptions.REPLICATION,\n },\n description: {\n annotation: annotationInitial,\n },\n };\n\n const tmp = ypath.getValue(attributes, '/@annotation_path');\n const annotationPath = paths && tmp !== paths[0] ? tmp : undefined;\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues, FormValues>) => {\n try {\n const {values} = form.getState();\n const {general, storage, description} = values;\n\n const initials = {\n ...initialValues.general,\n ...initialValues.storage,\n };\n\n const dataDiff = reduce_(\n {...general, ...storage, ...description},\n (acc, value, key) => {\n if (!isEqual_(value, (initials as any)[key])) {\n (acc as any)[key] = value;\n }\n return acc;\n },\n {} as Partial<typeof initials>,\n );\n\n if (dataDiff.in_memory_mode === '') {\n delete dataDiff.in_memory_mode;\n }\n\n const {\n account,\n primary_medium,\n tablet_cell_bundle,\n in_memory_mode,\n compression_codec,\n erasure_codec,\n replication_factor,\n _storageOption,\n optimize_for,\n } = dataDiff;\n\n const generalAttributes: any = {\n account,\n primary_medium,\n tablet_cell_bundle,\n in_memory_mode,\n };\n\n const storageAttributes: Partial<\n Omit<FormValues['storage'], 'compression_codec'> & {\n compression_codec: string;\n }\n > = {};\n\n if (optimize_for) {\n storageAttributes['optimize_for'] = optimize_for;\n }\n\n if (compression_codec) {\n storageAttributes['compression_codec'] =\n compressionCodecValueToString(compression_codec);\n }\n if (_storageOption) {\n storageAttributes['erasure_codec'] = erasureCodecFromStorageOption(\n _storageOption,\n erasure_codec,\n );\n }\n if (storage._storageOption === StorageOptions.REPLICATION) {\n if (replication_factor) {\n storageAttributes['replication_factor'] = Number(replication_factor);\n }\n } else if (erasure_codec) {\n storageAttributes['erasure_codec'] = erasureCodecFromStorageOption(\n _storageOption,\n erasure_codec,\n );\n }\n\n const {\n annotation: {value: annotation},\n } = description;\n\n const generalAttrs = pickBy_(generalAttributes, (v) => v !== undefined);\n if (general.expiration_time.from !== initialValues.general.expiration_time.from) {\n generalAttrs.expiration_time = general.expiration_time.from;\n }\n\n if (general.expiration_timeout.value !== initials.expiration_timeout.value) {\n generalAttrs.expiration_timeout = general.expiration_timeout.value;\n }\n\n await dispatch(\n navigationSetNodeAttributes(\n {\n ...generalAttrs,\n ...Object.assign(\n {},\n annotation === annotationInitial.value\n ? {}\n : {\n annotation,\n },\n ),\n },\n storageAttributes,\n hasStaticTables && storage.runMerge,\n ),\n );\n } catch (e) {\n setErr(e);\n throw e;\n }\n },\n [dispatch, initialValues, setErr],\n );\n\n const forEachStaticTable = !hasStaticTables ? '' : ' for each static table ';\n const mergeNoticeAndError: Array<DialogField<FormValues>> = [];\n\n if (hasStaticTables) {\n mergeNoticeAndError.push({\n name: 'runMergeNotice',\n type: 'block',\n visibilityCondition: {\n when: 'storage.runMerge',\n isActive: (runMerge: boolean) => !runMerge,\n },\n extras: {\n children: (\n <span className={block('run-notice')}>\n Do not forget to run merge-operation manually\n {forEachStaticTable}\n to completely apply changes of storage attributes.\n </span>\n ),\n },\n });\n }\n if (error) {\n mergeNoticeAndError.push({\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n const annotationTab: Array<DialogTabField<DialogField<FormValues>>> = [];\n\n if (singleMode) {\n const fields: Array<DialogField<FormValues>> = [\n {\n name: 'annotation',\n type: 'annotation' as const,\n fullWidth: true,\n extras: {\n valuePath: annotationPath,\n className: block('full-height'),\n initialValue: annotationInitial,\n },\n },\n ...mergeNoticeAndError,\n ];\n\n annotationTab.push({\n name: 'description',\n type: 'tab-vertical',\n title: 'Description',\n fields,\n });\n }\n\n const inMemoryModeField: DialogField = {\n name: 'in_memory_mode', // the attribute is not inheritable, so we do not need to display for map-nodes\n type: 'radio' as const,\n caption: 'In memory mode',\n extras: {\n options: [\n {value: InMemoryMode.NONE, label: 'None'},\n {value: InMemoryMode.COMPRESSED, label: 'Compressed'},\n {value: InMemoryMode.UNCOMPRESSED, label: 'Uncompressed'},\n ],\n },\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['dynamic-tables:overview#in_memory'])),\n };\n\n const optimizeForField: DialogField = {\n name: 'optimize_for',\n type: 'radio',\n caption: 'Optimize for',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['storage:chunks#optimize_for'])),\n extras: {\n options: [\n {value: 'scan', label: 'Scan'},\n {value: 'lookup', label: 'Lookup'},\n ],\n },\n };\n\n const compressionCodecs = useSelector(getCompressionCodecs);\n const erasureCodecs = useSelector(getErasureCodecs);\n\n return (\n <YTDFDialog\n className={block({'single-mode': singleMode})}\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n size={'l'}\n validate={validateForm}\n headerProps={{\n title: 'Edit attributes',\n }}\n initialValues={initialValues}\n fields={[\n {\n name: 'general',\n title: 'General',\n type: 'tab-vertical',\n fields: [\n {\n name: 'path',\n type: 'editable-list',\n caption: 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n {\n name: 'account',\n type: 'usable-account',\n caption: 'Account',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['storage:accounts'])),\n extras: {\n placeholder: 'Enter account name...',\n },\n },\n {\n name: 'primary_medium',\n type: 'yt-select-single',\n caption: 'Primary medium',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['storage:media#primary'])),\n extras: {\n placeholder: 'Select primary medium',\n items: mediumList.map((value: string) => {\n return {value, text: value};\n }),\n width: 'max',\n },\n },\n ...(!hasDynTableOrMapNode\n ? []\n : [\n {\n name: 'tablet_cell_bundle',\n type: 'tablet-cell-bundle' as const,\n caption: 'Tablet cell bundle',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'dynamic-tables:concepts#tablet_cell_bundles'\n ],\n ),\n ),\n extras: {\n placeholder: 'Select tablet cell bundle',\n },\n },\n ]),\n ...(!hasDynamicTables ? [] : [inMemoryModeField]),\n {\n name: 'expiration_time',\n type: 'datepicker',\n caption: 'Expiration time',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['cypress:ttl'])),\n extras: {\n format: 'yyyy-MM-dd HH:mm',\n range: false,\n },\n },\n {\n name: 'expiration_timeout',\n type: 'time-duration',\n caption: 'Expiration timeout',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['cypress:ttl'])),\n },\n ...mergeNoticeAndError,\n ],\n },\n {\n name: 'storage',\n type: 'tab-vertical',\n title: 'Storage',\n fields: [\n {\n name: 'path',\n type: 'editable-list',\n caption: 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n ...(!hasTables ? [] : [optimizeForField]),\n {\n name: 'compression_codec',\n type: 'select-with-subitems' as const,\n caption: 'Compression',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:compression#compression_codecs'],\n ),\n ),\n extras: compressionCodecs,\n },\n {\n name: '_storageOption',\n type: 'radio',\n caption: 'Storage options',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#replication']),\n ),\n extras: {\n options: [\n {\n value: StorageOptions.REPLICATION,\n label: 'Replication',\n },\n {\n value: StorageOptions.ERASURE,\n label: 'Erasure encoding',\n },\n ],\n },\n },\n {\n name: 'replication_factor',\n type: 'text',\n caption: 'Number of replicas',\n touched: true,\n visibilityCondition: {\n when: 'storage._storageOption',\n isActive: (value: string) => value === StorageOptions.REPLICATION,\n },\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#replication']),\n ),\n },\n {\n name: 'erasure_codec',\n type: 'yt-select-single',\n caption: 'Erasure codec',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#erasure']),\n ),\n visibilityCondition: {\n when: 'storage._storageOption',\n isActive: (value: string) => value === StorageOptions.ERASURE,\n },\n extras: {\n items: erasureCodecs,\n hideFilter: true,\n width: 'max',\n },\n },\n ...(!hasStaticTables\n ? []\n : [\n {\n name: 'runMerge',\n type: 'tumbler' as const,\n caption: 'Run merge operation',\n tooltip: (\n <span>\n Merge operation is required to completely apply\n changes of storage attributes, it will be started with\n enabled force transform flag.\n </span>\n ),\n },\n ]),\n ...mergeNoticeAndError,\n ],\n },\n ...annotationTab,\n ]}\n />\n );\n}\n\nexport default function AttributesEditor() {\n const path = useSelector(getNavigationAttributesEditorPath);\n const visible = useSelector(getNavigationAttributesEditorVisible);\n\n if (!path?.length || !visible) {\n return null;\n }\n return <AttributesEditorLoaded />;\n}\n\nfunction validateReplicationFactor(str: string): string | undefined {\n const v = parseInt(str);\n if (!str || (String(str) === String(v) && v >= 1 && v <= 20)) {\n return undefined;\n }\n\n return 'The value must be an integer in range [1; 20]';\n}\n\nfunction validateStorage(storage: any) {\n const replication_factor = validateReplicationFactor(storage.replication_factor);\n if (storage._storageOption !== StorageOptions.REPLICATION || !replication_factor) {\n return undefined;\n }\n return {replication_factor};\n}\n\nfunction validateForm({storage}: FormValues) {\n const res: any = {\n storage: validateStorage(storage),\n };\n const ret = pickBy_(res, (v) => !isEmpty_(v));\n return ret;\n}\n","import ypath from '../../../../common/thor/ypath';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {makeCompressionCodecFinder} from '../../../../store/selectors/global/supported-features';\n\nexport const getRemoteCopyModalVisible = (state: RootState) =>\n state.navigation.modals.remoteCopyModal.showModal;\nexport const getRemoteCopyModalPaths = (state: RootState) =>\n state.navigation.modals.remoteCopyModal.paths;\nexport const getRemoteCopyAttributesMap = (state: RootState) =>\n state.navigation.modals.remoteCopyModal.attributesMap;\n\nexport const getRemoteCopyCodecs = createSelector(\n [getRemoteCopyModalPaths, getRemoteCopyAttributesMap, makeCompressionCodecFinder],\n (paths, attributesMap, findCompressionCodec) => {\n for (const path of paths) {\n const map = attributesMap[path];\n if (map) {\n const compCodec = findCompressionCodec(\n ypath.getValue(map, '/compression_codec') as string,\n );\n\n return {\n compression_codec: compCodec,\n erasure_codec: ypath.getValue(map, '/erasure_codec') as string,\n };\n }\n }\n return {};\n },\n);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {\n getRemoteCopyModalPaths,\n getRemoteCopyModalVisible,\n} from '../../../store/selectors/navigation/modals/remote-copy-modal';\nimport {\n hideRemoteCopyModal,\n remoteCopy,\n} from '../../../store/actions/navigation/modals/remote-copy-modal';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {YTError} from '../../../types';\nimport {RemoteCopyParams} from '../../../../@types/types';\nimport {AxiosError} from 'axios';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ntype Values = Omit<RemoteCopyParams, 'input_table_paths'> & {\n input_table_paths: Array<{title: string}>;\n};\n\nfunction RemoteCopyModal() {\n const dispatch = useDispatch();\n const visible = useSelector(getRemoteCopyModalVisible);\n const paths = useSelector(getRemoteCopyModalPaths);\n const cluster = useSelector(getCluster);\n\n const [error, setError] = React.useState<YTError | unknown>();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<Values>) => {\n try {\n setError(undefined);\n const {values} = form.getState();\n const {input_table_paths, pool, ...rest} = values;\n await dispatch(\n remoteCopy({\n ...rest,\n input_table_paths: map_(input_table_paths, 'title'),\n pool: pool,\n }),\n );\n } catch (e: unknown) {\n setError((e as AxiosError<YTError>)?.response?.data || e);\n throw e;\n }\n },\n [setError],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideRemoteCopyModal());\n }, []);\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n const calculateValueOnPoolsLoaded = React.useCallback(\n ({loadedPoolNames}: {loadedPoolNames: Array<string>}) => {\n const transferPool = find_(loadedPoolNames, (name) => name === `transfer_${cluster}`);\n return transferPool || '';\n },\n [cluster],\n );\n\n return !visible ? null : (\n <YTDFDialog<Values>\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n headerProps={{\n title: 'Remote copy',\n }}\n initialValues={{\n cluster_name: cluster,\n input_table_paths: pathsValues,\n schema_inference_mode: 'auto',\n output_table_path: pathsValues[0]?.title,\n override: false,\n }}\n fields={[\n {\n name: 'cluster_name',\n type: 'cluster',\n caption: 'Source cluster',\n extras: {\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'input_table_paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Input paths' : 'Input path',\n extras: {\n frozen: true,\n },\n },\n {\n name: 'dstCluster',\n type: 'cluster',\n caption: 'Destination cluster',\n required: true,\n extras: {\n excludeClusters: [cluster],\n width: 'max',\n },\n },\n {\n name: 'output_table_path',\n type: 'text',\n caption: 'Output path',\n required: true,\n },\n {\n name: 'override',\n type: 'tumbler',\n caption: 'Override output',\n },\n {\n name: 'copy_attributes',\n type: 'tumbler',\n caption: 'Copy user attributes',\n },\n {\n name: 'schema_inference_mode',\n type: 'yt-select-single',\n caption: 'Schema inference',\n extras: {\n items: [\n {\n value: 'auto',\n text: 'Auto',\n },\n {\n value: 'from_input',\n text: 'From input',\n },\n {\n value: 'from_output',\n text: 'From output',\n },\n ],\n width: 'max',\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n warning: (\n <>\n pool must have specified{' '}\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['operations:remote_copy'],\n 'limits',\n true,\n ),\n )}\n </>\n ),\n visibilityCondition: {\n when: 'dstCluster',\n isActive: (value) => Boolean(value),\n },\n required: true,\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({dstCluster}: Values) => {\n return {\n cluster: dstCluster,\n placeholder: `(cluster: ${dstCluster}) pool name`,\n calculateValueOnPoolsLoaded,\n allowEphemeral: true,\n };\n },\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nexport default React.memo(RemoteCopyModal);\n","import {RootState} from '../../../../store/reducers';\n\nexport const getNavigationTableEraseModalVisible = (state: RootState) =>\n state.navigation.modals.tableEraseModal.visible;\nexport const getNavigationTableEraseModalPath = (state: RootState) =>\n state.navigation.modals.tableEraseModal.path;\n","import React from 'react';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n hideTableEraseModal,\n runTableErase,\n} from '../../../store/actions/navigation/modals/table-erase-modal';\nimport {\n getNavigationTableEraseModalPath,\n getNavigationTableEraseModalVisible,\n} from '../../../store/selectors/navigation/modals/table-erase-modal';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ninterface FormValues {\n path: string;\n range: string;\n combine_chunks: boolean;\n}\n\nexport default function TableEraseModal() {\n const visible = useSelector(getNavigationTableEraseModalVisible);\n const path = useSelector(getNavigationTableEraseModalPath);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n try {\n const {range, combine_chunks} = form.getState().values;\n\n const [from, to] = range?.split(':') || [];\n await dispatch(\n runTableErase({\n path: path ?? '',\n from: from ? Number(from) : undefined,\n to: to ? Number(to) : undefined,\n combine_chunks,\n }),\n );\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [path, setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableEraseModal());\n }, [dispatch]);\n\n return (\n <YTDFDialog<FormValues>\n visible={visible}\n headerProps={{\n title: 'Erase table rows',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n pristineSubmittable={true}\n initialValues={{\n path,\n }}\n fields={[\n {\n name: 'path',\n type: 'plain',\n caption: 'Path',\n },\n {\n name: 'range',\n type: 'text',\n caption: 'Range',\n tooltip: (\n <span>\n {docsUrl(makeLink(UIFactory.docsUrls['operations:erase']))}\n Leave empty to erase all rows. Or use two numbers separated by colon.\n Each number might be skipped.\n <br />\n Examples: "10:20", "10:", ":20"\n </span>\n ),\n validator: validateRange,\n extras: {\n placeholder: '10:20',\n },\n },\n {\n name: 'combine_chunks',\n type: 'tumbler',\n caption: 'Combine chunks',\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nconst RANGE = /^(\\d+:)|(\\d+:\\d+)|(:\\d+)$/;\n\nfunction validateRange(value: string) {\n if (!value || RANGE.test(value)) {\n return undefined;\n }\n\n return 'Enter two numbers separated by colon, like \"10:20\" or \":20\" or \"10:\"';\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {DialogError, DialogField, YTDFDialog} from '../../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getNavigationTableAttributesValues,\n getNavigationTableSortError,\n getNavigationTableSortPaths,\n getNavigationTableSortSuggestColumns,\n getNavigationTableSortVisible,\n} from '../../../../store/selectors/navigation/modals/table-merge-sort-modal';\nimport {\n hideTableSortModal,\n isPathStaticTable,\n runTableSort,\n tableSortModalLoadColumns,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {getCurrentUserName} from '../../../../store/selectors/global';\nimport {makeLink} from '../../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport './TableSortModal.scss';\nimport {ColumnSortByInfo} from './TableSortByControl';\nimport {docsUrl} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {WaitForDefaultPoolTree} from '../../../../hooks/global-pool-trees';\n\nconst block = cn('table-sort-modal');\n\nexport default function TableSortModal() {\n const login = useSelector(getCurrentUserName);\n const visible = useSelector(getNavigationTableSortVisible);\n const paths = useSelector(getNavigationTableSortPaths);\n const suggestError = useSelector(getNavigationTableSortError);\n const suggestColumns = useSelector(getNavigationTableSortSuggestColumns);\n const attributeValues = useSelector(getNavigationTableAttributesValues);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: any) => {\n try {\n const {values} = form.getState();\n const {paths, outputPath, columns, pool, poolTree} = values;\n\n const spec = Object.assign(\n {\n input_table_paths: paths,\n output_table_path: {\n $value: outputPath,\n $attributes: attributeValues,\n },\n sort_by: map_(columns, (item: ColumnSortByInfo) => {\n return {\n name: item.name,\n sort_order: item.descending\n ? ('descending' as const)\n : ('ascending' as const),\n };\n }),\n },\n pool ? {pool} : {},\n poolTree.length ? {pool_trees: poolTree} : {},\n );\n\n await dispatch(runTableSort(spec));\n return;\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [attributeValues, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableSortModal());\n }, [dispatch]);\n\n const handlePathsChange = React.useCallback(\n (paths: Array<string>) => {\n dispatch(tableSortModalLoadColumns(paths));\n },\n [dispatch],\n );\n\n const title = paths?.length > 1 ? 'Sort tables' : 'Sort table';\n const outputPath = paths?.length === 1 ? paths[0] : undefined;\n\n const errorFields: Array<DialogField<FormValues>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n if (suggestError) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={suggestError} />,\n },\n });\n }\n\n return !visible ? null : (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n className={block()}\n visible={visible}\n headerProps={{\n title,\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n paths,\n outputPath,\n columns: [],\n poolTree: [defaultPoolTree],\n }}\n fields={[\n {\n name: 'paths',\n type: 'editable-path-list',\n caption: 'Input paths',\n required: true,\n onChange: handlePathsChange,\n extras: {\n placeholder: 'Enter a path to add',\n },\n },\n {\n name: 'outputPath',\n type: 'output-path',\n caption: 'Output path',\n required: true,\n validator: isPathStaticTable,\n extras: {\n placeholder: 'Enter path for output',\n },\n tooltip: (\n <span>\n If the path is not exists then started operation will be failed\n </span>\n ),\n },\n {\n name: 'columns',\n type: 'table-sort-by',\n caption: 'Sort by columns',\n required: true,\n extras: {\n suggestColumns,\n allowDescending: true,\n },\n },\n {\n name: 'poolTree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: (values: FormValues) => {\n const {poolTree} = values;\n return {\n placeholder: login,\n poolTrees: poolTree,\n allowEphemeral: true,\n };\n },\n },\n ...errorFields,\n ]}\n />\n )}\n </WaitForDefaultPoolTree>\n );\n}\n\ninterface FormValues {\n paths: Array<string>;\n outputPath: string;\n columns: Array<string>;\n poolTree: string[];\n pool: string;\n}\n","import React from 'react';\n\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getNavigationTableAttributesValues,\n getNavigationTableMergeVisible,\n getNavigationTableSortError,\n getNavigationTableSortPaths,\n getNavigationTableSortSuggestColumns,\n} from '../../../../store/selectors/navigation/modals/table-merge-sort-modal';\nimport {\n hideTableMergeModal,\n isPathStaticTable,\n runTableMerge,\n tableSortModalLoadColumns,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {getCurrentUserName} from '../../../../store/selectors/global';\nimport {makeLink} from '../../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {parseBytes} from '../../../../utils';\nimport {docsUrl} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {WaitForDefaultPoolTree} from '../../../../hooks/global-pool-trees';\n\nexport default function TableMergeModal() {\n const login = useSelector(getCurrentUserName);\n const visible = useSelector(getNavigationTableMergeVisible);\n const paths = useSelector(getNavigationTableSortPaths);\n const suggestError = useSelector(getNavigationTableSortError);\n const suggestColumns = useSelector(getNavigationTableSortSuggestColumns);\n const attributeValues = useSelector(getNavigationTableAttributesValues);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n try {\n const {values} = form.getState();\n const {\n mode,\n paths,\n outputPath,\n columns,\n pool,\n poolTree,\n chunkSize,\n force_transform,\n combine_chunks,\n } = values;\n const chunkSizeBytes = parseBytes(chunkSize);\n const data_size_per_job = isNaN(chunkSizeBytes) ? undefined : chunkSizeBytes;\n const pool_trees = poolTree.length ? poolTree : undefined;\n await dispatch(\n runTableMerge(\n pickBy_(\n {\n mode,\n input_table_paths: paths,\n output_table_path: {\n $value: outputPath,\n $attributes: attributeValues,\n },\n merge_by: map_(columns, 'name'),\n pool,\n pool_trees,\n data_size_per_job,\n force_transform,\n combine_chunks,\n },\n Boolean,\n ) as any,\n ),\n );\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [attributeValues, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableMergeModal());\n }, [dispatch]);\n\n const handlePathsChange = React.useCallback(\n (paths: Array<string>) => {\n dispatch(tableSortModalLoadColumns(paths));\n },\n [dispatch],\n );\n\n const outputPath = paths?.length === 1 ? paths[0] : undefined;\n\n return (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible={visible}\n headerProps={{\n title: 'Merge',\n }}\n pristineSubmittable={true}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n paths,\n mode: 'unordered',\n outputPath,\n columns: [],\n force_transform: true,\n poolTree: [defaultPoolTree],\n combine_chunks: true,\n }}\n fields={[\n {\n name: 'mode',\n type: 'radio',\n caption: 'Mode',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['operations:merge'])),\n extras: {\n options: [\n {value: 'unordered', label: 'Unordered'},\n {value: 'sorted', label: 'Sorted'},\n {value: 'ordered', label: 'Ordered'},\n ],\n },\n },\n {\n name: 'paths',\n type: 'editable-path-list',\n caption: 'Input paths',\n required: true,\n onChange: handlePathsChange,\n extras: {\n placeholder: 'Enter a path to add',\n },\n },\n {\n name: 'outputPath',\n type: 'output-path',\n caption: 'Output path',\n required: true,\n validator: isPathStaticTable,\n touched: true,\n extras: {\n placeholder: 'Enter path for output',\n },\n tooltip: (\n <span>\n If the path is not an exist then started operation will be\n failed\n </span>\n ),\n },\n {\n name: 'columns',\n type: 'table-sort-by',\n caption: 'Merge by columns',\n extras: {\n suggestColumns,\n },\n },\n {\n name: 'chunkSize',\n type: 'table-chunk-size',\n caption: 'Chunk size',\n },\n {\n name: 'combine_chunks',\n type: 'tumbler',\n caption: 'Combine chunks',\n },\n {\n name: 'poolTree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({poolTree}: FormValues) => {\n return {\n poolTrees: poolTree,\n placeholder: login,\n allowEphemeral: true,\n };\n },\n },\n {\n name: 'force_transform',\n type: 'tumbler',\n caption: 'Force transform',\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ...(!suggestError\n ? []\n : [\n {\n name: 'suggestError',\n type: 'block' as const,\n extras: {\n children: <DialogError error={suggestError} />,\n },\n },\n ]),\n ]}\n />\n )}\n </WaitForDefaultPoolTree>\n );\n}\n\ninterface FormValues {\n mode: string;\n pool: string;\n poolTree: string[];\n\n paths: Array<string>;\n outputPath: string;\n columns: Array<unknown>;\n chunkSize: string;\n force_transform: boolean;\n combine_chunks: boolean;\n}\n","import {RootState} from '../../../reducers';\n\nexport const getDynTablesStateModalVisible = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.showModal;\nexport const getDynTablesStateModalPaths = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.paths;\nexport const getDynTablesStateModalAction = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.action;\n","import React from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n dynTablesChangeState,\n hideDynTablesStateModal,\n} from '../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {\n getDynTablesStateModalAction,\n getDynTablesStateModalPaths,\n getDynTablesStateModalVisible,\n} from '../../../store/selectors/navigation/modals/dyn-tables-state-modal';\nimport {DynTablesStateModalState} from '../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {Warning} from '../../../components/Text/Text';\nimport {YTError} from '../../../types';\n\nimport './DynTablesStateModal.scss';\n\nconst block = cn('dyn-tables-state-modal');\n\nexport default function DynTablesStateModal() {\n const dispatch = useDispatch();\n\n const action = useSelector(getDynTablesStateModalAction);\n const paths = useSelector(getDynTablesStateModalPaths);\n const visible = useSelector(getDynTablesStateModalVisible);\n\n const [error, setError] = React.useState<YTError>();\n\n const onClose = React.useCallback(() => {\n dispatch(hideDynTablesStateModal());\n setError(undefined);\n }, [dispatch, setError]);\n\n const onAdd = React.useCallback(async () => {\n try {\n if (!action) {\n throw new Error('Action should be defined');\n }\n await dispatch(dynTablesChangeState(paths, action));\n } catch (e) {\n setError(e as any);\n throw e;\n }\n }, [dispatch, paths, action, setError]);\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n if (!visible) {\n return null;\n }\n\n const warning = renderWarning(action);\n\n return (\n <YTDFDialog\n visible\n onAdd={onAdd}\n onClose={onClose}\n pristineSubmittable={true}\n headerProps={{\n title: capitalize_(action),\n }}\n initialValues={{\n paths: pathsValues,\n }}\n fields={[\n {\n name: 'paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Paths' : 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n ...(!warning\n ? []\n : [\n {\n name: 'warning',\n type: 'block' as const,\n extras: {\n children: warning,\n },\n },\n ]),\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nconst WARN_TEXT: {[action: string]: string} = {\n unmount:\n 'Unmounted table will become inaccessible for reads and writes. Operation may take a while (usually up to 30 seconds). Do you want to proceed?',\n freeze: 'Frozen table will become read-only. Operation may take a while (usually up to 30 seconds). Do you want to proceed?',\n};\n\nfunction renderWarning(action: DynTablesStateModalState['action']) {\n const text = WARN_TEXT[action || ''];\n return !text ? null : <Warning>{text}</Warning>;\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getLinkToModalState = (state: RootState) => state.navigation.modals.linkToModal;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, DialogField, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getLinkToModalState} from '../../../store/selectors/navigation/modals/link-to-modal';\nimport {createLink, hideLinkToModal} from '../../../store/actions/navigation/modals/link-to-modal';\nimport {LinkToState} from '../../../store/reducers/navigation/modals/link-to-modal';\nimport {ytApiV3} from '../../../rum/rum-wrap-api';\n\nconst block = cn('table-sort-modal');\n\ntype LinkToModalState = Pick<LinkToState, 'path' | 'target'>;\n\nexport default function LinkToModal() {\n const [error, setError] = React.useState<any>();\n const {visible, path, target} = useSelector(getLinkToModalState);\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<LinkToModalState>) => {\n try {\n await dispatch(createLink(form.getState().values));\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideLinkToModal());\n }, [dispatch]);\n\n const errorFields: Array<DialogField<LinkToModalState>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n return !visible ? null : (\n <YTDFDialog<LinkToModalState>\n className={block()}\n visible={true}\n headerProps={{\n title: 'Create link',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n path,\n target,\n }}\n fields={[\n {\n name: 'path',\n type: 'path',\n caption: 'Link path',\n required: true,\n validator: async (path: string) => {\n try {\n const res = await ytApiV3.exists({path});\n if (res) {\n return 'Link path already exists';\n }\n return undefined;\n } catch (err) {\n const e = err as Error;\n return e?.message || 'Unexpected type of error: ' + typeof e;\n }\n },\n },\n {\n name: 'target',\n type: 'path',\n caption: 'Target path',\n required: true,\n validator: async (path: string) => {\n try {\n const res = await ytApiV3.exists({path});\n if (!res) {\n return 'Target path should exist';\n }\n return undefined;\n } catch (err) {\n const e = err as Error;\n return e?.message || 'Unexpected type of error: ' + typeof e;\n }\n },\n },\n ...errorFields,\n ]}\n />\n );\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getCreateACOModalState = (state: RootState) => state.navigation.modals.createACOModal;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, DialogField, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getCreateACOModalState} from '../../../store/selectors/navigation/modals/create-aco-modal';\nimport {closeCreateACOModal, createACO} from '../../../store/actions/navigation/modals/create-aco';\n\nconst block = cn('table-sort-modal');\n\ntype CreateACOFormState = {\n namespace: string;\n name: string;\n path: string;\n};\n\nexport default function CreateACOModal() {\n const [error, setError] = React.useState<any>();\n const {visible, path, namespace} = useSelector(getCreateACOModalState);\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<CreateACOFormState>) => {\n try {\n await dispatch(createACO(form.getState().values));\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(closeCreateACOModal());\n }, [dispatch]);\n\n const errorFields: Array<DialogField<CreateACOFormState>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n if (visible) {\n return (\n <YTDFDialog<CreateACOFormState>\n className={block()}\n visible={true}\n headerProps={{\n title: 'Create ACO',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n path,\n namespace,\n }}\n fields={[\n {\n name: 'name',\n type: 'text',\n caption: 'ACO name',\n required: true,\n },\n ...errorFields,\n ]}\n />\n );\n }\n\n return null;\n}\n","import React, {Component, Fragment} from 'react';\nimport {StickyContainer} from 'react-sticky';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {updateTitle} from '../../../store/actions/global';\n\nimport {\n CopyObjectModal,\n CreateDirectoryModal,\n DeleteObjectModal,\n MoveObjectModal,\n RestoreObjectModal,\n} from './PathEditorModal';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport ContentViewer from './ContentViewer/ContentViewer';\nimport {checkContentIsSupported} from './ContentViewer/helpers';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {NavigationError} from './NavigationError';\n\nimport {Tab} from '../../../constants/navigation';\nimport {LOADING_STATUS} from '../../../constants/index';\n\nimport {onTransactionChange, setMode, updateView} from '../../../store/actions/navigation';\n\nimport {\n getError,\n getIdmSupport,\n getLoadState,\n getParsedPath,\n getPath,\n getTransaction,\n getType,\n isNavigationFinalLoadState,\n} from '../../../store/selectors/navigation';\nimport {getEffectiveMode, getTabs} from '../../../store/selectors/navigation/navigation';\nimport {NavigationPermissionsNotice} from './NavigationPermissionsNotice';\nimport {useRumMeasureStop} from '../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport AttributesEditor from '../modals/AttributesEditor';\nimport RemoteCopyModal from '../modals/RemoteCopyModal';\nimport TableEraseModal from '../modals/TableEraseModal';\nimport TableSortModal from '../modals/TableMergeSortModal/TableSortModal';\nimport TableMergeModal from '../modals/TableMergeSortModal/TableMergeModal';\nimport DynTablesStateModal from '../modals/DynTablesStateModal';\nimport LinkToModal from '../modals/LinkToModal';\nimport CreateACOModal from '../modals/CreateACOModal';\nimport Button from '../../../components/Button/Button';\nimport Icon from '../../../components/Icon/Icon';\nimport {showNavigationAttributesEditor} from '../../../store/actions/navigation/modals/attributes-editor';\nimport {UI_TAB_SIZE} from '../../../constants/global';\nimport {CellPreviewModal} from '../../../containers/CellPreviewModal/CellPreviewModal';\n\nimport './Navigation.scss';\n\nconst block = cn('navigation');\n\nfunction renderModals() {\n return (\n <Fragment>\n <RestoreObjectModal />\n <CreateDirectoryModal />\n <MoveObjectModal />\n <CopyObjectModal />\n <DeleteObjectModal />\n <AttributesEditor />\n <TableEraseModal />\n <TableSortModal />\n <TableMergeModal />\n <DynTablesStateModal />\n <LinkToModal />\n <CreateACOModal />\n <RemoteCopyModal />\n <CellPreviewModal />\n </Fragment>\n );\n}\n\nclass Navigation extends Component {\n static propTypes = {\n // from connect\n cluster: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n isIdmSupported: PropTypes.bool.isRequired,\n transaction: PropTypes.string,\n parsedPath: PropTypes.object,\n type: PropTypes.string,\n\n hasError: PropTypes.bool,\n error: PropTypes.shape({\n message: PropTypes.string,\n inner_errors: PropTypes.arrayOf(\n PropTypes.shape({\n message: PropTypes.string,\n details: PropTypes.shape({\n code: PropTypes.number,\n object_type: PropTypes.string,\n }),\n }),\n ),\n }),\n loaded: PropTypes.bool,\n loading: PropTypes.bool,\n\n setMode: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n onTransactionChange: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n this.props.updateView({trackVisit: true});\n this.updateTitleWithPath();\n }\n\n componentDidUpdate(prevProps) {\n const {transaction, path, updateView, onTransactionChange} = this.props;\n const {transaction: prevTransaction, path: prevPath} = prevProps;\n\n if (transaction !== prevTransaction) {\n onTransactionChange();\n } else if (path !== prevPath) {\n updateView({trackVisit: true});\n }\n\n if (this.props.parsedPath !== prevProps.parsedPath) {\n this.updateTitleWithPath();\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: ''});\n }\n\n updateTitleWithPath() {\n const {parsedPath, updateTitle} = this.props;\n updateTitle({path: parsedPath ? parsedPath.getKey() : ''});\n }\n\n get items() {\n const {tabs, setMode} = this.props;\n\n return tabs.map((tab) => {\n if (tab.hotkey) {\n return {\n ...tab,\n hotkey: tab.hotkey.map(({keys, tab, scope}) => {\n return {\n keys,\n scope,\n handler: () => setMode(tab),\n };\n }),\n };\n }\n\n return tab;\n });\n }\n\n onTabChange = (value) => {\n const {setMode} = this.props;\n setMode(value);\n };\n\n renderTabs() {\n const {mode, tabSize} = this.props;\n const items = map_(this.items, (item) => ({\n ...item,\n text: item.text || hammer.format['ReadableField'](item.value),\n show: true,\n }));\n\n return (\n <Tabs\n onTabChange={this.onTabChange}\n active={mode}\n items={items}\n underline\n size={tabSize}\n />\n );\n }\n\n renderEditButton() {\n return (\n <div className={block('edit-metadata')}>\n <Button\n size=\"m\"\n className={block('edit-metadata-btn')}\n title={'Edit metadata'}\n onClick={this.onEditButtonClick}\n >\n <Icon awesome={'pencil'} />\n Edit metadata\n </Button>\n </div>\n );\n }\n\n onEditButtonClick = () => {\n const {path, showNavigationAttributesEditor} = this.props;\n showNavigationAttributesEditor([path]);\n };\n\n renderPlaceholder() {\n const {type = 'unknown', mode, loading} = this.props;\n\n if (type === 'unknown' && loading) {\n return null;\n }\n\n return (\n <div className=\"navigation__warning elements-message elements-message_theme_warning\">\n {mode === Tab.CONTENT ? (\n <p className=\"elements-message__paragraph\">\n Viewing node of type <strong>{type}</strong> is not supported in navigator.\n </p>\n ) : (\n <p className=\"elements-message__paragraph\">\n Viewing node attribute <strong>{mode}</strong> is not supported in\n navigator.\n </p>\n )}\n </div>\n );\n }\n\n renderView() {\n const {type, mode} = this.props;\n if (checkContentIsSupported(type, mode)) {\n return <ContentViewer type={type} mode={mode} />;\n }\n\n return this.renderPlaceholder();\n }\n\n renderError() {\n const {\n error: {message, details},\n cluster,\n path,\n } = this.props;\n\n return (\n <NavigationError cluster={cluster} path={path} details={details} message={message} />\n );\n }\n\n render() {\n const {loaded, hasError} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block({error: hasError}, 'elements-main-section')}>\n <StickyContainer>\n <div className={block('header')}>\n <NavigationPermissionsNotice />\n\n <div className={block('tabs')}>\n {this.renderEditButton()}\n {this.renderTabs()}\n </div>\n </div>\n\n <div className={block('main')}>{loaded && this.renderView()}</div>\n </StickyContainer>\n {hasError && this.renderError()}\n\n {renderModals()}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const isFinalState = isNavigationFinalLoadState(state);\n const loadState = getLoadState(state);\n const hasError = loadState === LOADING_STATUS.ERROR;\n const loaded = loadState === LOADING_STATUS.LOADED;\n return {\n path: getPath(state),\n mode: getEffectiveMode(state),\n type: getType(state),\n isIdmSupported: getIdmSupport(state),\n error: getError(state),\n hasError,\n loaded,\n loading: !isFinalState,\n parsedPath: getParsedPath(state),\n transaction: getTransaction(state),\n cluster: getCluster(state),\n tabSize: UI_TAB_SIZE,\n tabs: getTabs(state),\n };\n}\n\nconst mapDispatchToProps = {\n setMode,\n updateView,\n updateTitle,\n onTransactionChange,\n showNavigationAttributesEditor,\n};\n\nconst NavigationConnected = connect(mapStateToProps, mapDispatchToProps)(Navigation);\n\nconst NavigationWithRumMemo = React.memo(NavigationWithMesure);\n\nfunction NavigationWithMesure() {\n const path = useSelector(getPath);\n const transaction = useSelector(getTransaction);\n const isFinalState = useSelector(isNavigationFinalLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_PRELOAD,\n startDeps: [isFinalState, path, transaction],\n allowStart: ([isFinal]) => {\n return !isFinal;\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_PRELOAD,\n stopDeps: [isFinalState],\n allowStop: ([isFinal]) => {\n return isFinal;\n },\n });\n\n return <NavigationConnected />;\n}\n\nexport default function NavigationWithRum() {\n return <NavigationWithRumMemo />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {TextInput} from '@gravity-ui/uikit';\nimport key from 'hotkeys-js';\n\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nconst supportedSizes = ['xs', 's', 'm'];\n\nconst propTypes = {\n size: PropTypes.oneOf(supportedSizes),\n value: PropTypes.string,\n placeholder: PropTypes.string,\n onApply: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n scope: PropTypes.string.isRequired,\n cancelOnBlur: PropTypes.bool,\n};\n\nconst defaultProps = {\n size: 'm',\n};\n\nexport default class Editor extends React.Component {\n constructor(props) {\n super(props);\n\n this.onApply = this.onApply.bind(this);\n this.onCancel = this.onCancel.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n\n this.state = {\n value: props.value,\n };\n }\n willReceiveProps({value}) {\n this.setState({value});\n }\n onApply() {\n if (typeof this.props.onApply === 'function') {\n this.props.onApply(this.state.value);\n }\n }\n onCancel() {\n if (typeof this.props.onCancel === 'function') {\n this.props.onCancel();\n }\n }\n onChange(value) {\n this.setState({value});\n }\n onFocus() {\n key.setScope(this.props.scope);\n }\n onBlur() {\n key.setScope('all');\n const {cancelOnBlur} = this.props;\n if (cancelOnBlur) {\n this.onCancel();\n }\n }\n render() {\n // console.log('<props>', this.props, '</props>');\n\n const {size, scope, placeholder} = this.props;\n\n return (\n <div className={block('elements-editor')()}>\n <TextInput\n size={size}\n placeholder={placeholder}\n value={this.state.value}\n autoFocus\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onUpdate={this.onChange}\n />\n <Hotkey\n settings={[\n {keys: 'enter', scope: scope, handler: this.onApply},\n {keys: 'esc', scope: scope, handler: this.onCancel},\n ]}\n />\n </div>\n );\n }\n}\n\nEditor.propTypes = propTypes;\nEditor.defaultProps = defaultProps;\n","import React, {FocusEvent} from 'react';\nimport cn from 'bem-cn-lite';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites from '../../../components/Favourites/Favourites';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getFavouritePaths, isCurrentPathInFavourites} from '../../../store/selectors/favourites';\nimport {getActualPath, getPath, getTransaction} from '../../../store/selectors/navigation';\nimport {navigationToggleFavourite} from '../../../store/actions/favourites';\nimport {\n clearTransaction,\n setTransaction,\n updatePath,\n updateView,\n} from '../../../store/actions/navigation';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n// @ts-ignore\nimport metrics from '../../../common/utils/metrics';\n\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport {\n getMode,\n getNavigationBreadcrumbs,\n getNavigationRestorePath,\n} from '../../../store/selectors/navigation/navigation';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeRoutedURL} from '../../../store/location';\nimport Link from '../../../components/Link/Link';\nimport Editor from '../../../components/Editor/Editor';\nimport Button from '../../../components/Button/Button';\nimport Icon from '../../../components/Icon/Icon';\n\nimport {Page} from '../../../constants';\nimport {restoreObject} from '../../../store/actions/navigation/modals/restore-object';\nimport {inTrash} from '../../../utils/navigation/restore-object';\nimport {EditButton} from '../../../components/EditableAsText/EditableAsText';\nimport PathEditor from '../../../containers/PathEditor/PathEditor';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {Tab} from '../../../constants/navigation';\n\nimport './NavigationTopRowContent.scss';\nimport {Escaped} from '../../../components/Text/Text';\nimport {useHistory} from 'react-router';\n\nconst block = cn('navigation-top-row-content');\n\nfunction NavigationTopRowContent() {\n const defaultPath = useSelector(getNavigationDefaultPath);\n return (\n <RowWithName page={Page.NAVIGATION} className={block()} urlParams={{path: defaultPath}}>\n <NavigationFavourites />\n <EditableNavigationBreadcrumbs />\n <NavigationTools />\n </RowWithName>\n );\n}\n\nfunction NavigationFavourites() {\n const dispatch = useDispatch();\n\n const favourites = useSelector(getFavouritePaths);\n\n const isInFavourites = useSelector(isCurrentPathInFavourites);\n const path = useSelector(getPath);\n\n const handleToggle = React.useCallback(() => {\n dispatch(navigationToggleFavourite(path));\n }, [dispatch, path]);\n\n const handleItemClick = React.useCallback(\n ({path}: {path: string}) => {\n dispatch(updatePath(path));\n },\n [dispatch],\n );\n\n return (\n <Favourites\n theme={'clear'}\n isActive={isInFavourites}\n items={favourites || []}\n onItemClick={handleItemClick}\n onToggle={handleToggle}\n />\n );\n}\n\nfunction NavigationPathToClipboard() {\n const path = useSelector(getPath);\n return (\n <span className={block('to-clipboard')}>\n <ClipboardButton\n text={path}\n title=\"Copy to clipboard [Shift+P]\"\n className={'navigation__instruments-control'}\n hotkey=\"shift+p\"\n onCopy={onCopyToClipboard}\n />\n </span>\n );\n}\n\nfunction onCopyToClipboard() {\n metrics.countEvent({'navigation_copy-path': 'clicked'});\n}\n\nfunction EditableNavigationBreadcrumbs() {\n const [editMode, setEditMode] = React.useState(false);\n\n const toggleEditMode = React.useCallback(() => {\n setEditMode(!editMode);\n }, [setEditMode, editMode]);\n\n return (\n <div className={block('editable-breadcrumbs')}>\n {editMode ? (\n <NavigationPathEditor hideEditor={toggleEditMode} />\n ) : (\n <React.Fragment>\n <NavigationBreadcrumbs onEdit={toggleEditMode} />\n <EditButton onClick={toggleEditMode} />\n <NavigationPathToClipboard />\n </React.Fragment>\n )}\n </div>\n );\n}\n\nfunction NavigationPathEditor({hideEditor}: {hideEditor: () => void}) {\n const dispatch = useDispatch();\n const actualPath = useSelector(getActualPath);\n\n const handleApply = React.useCallback(\n (path: string) => {\n if (path !== actualPath) {\n dispatch(updatePath(path.endsWith('/') ? path.slice(0, -1) : path));\n }\n hideEditor();\n },\n [hideEditor],\n );\n\n const handleFocus = React.useCallback((event: FocusEvent<HTMLInputElement>) => {\n event.target?.select();\n }, []);\n\n return (\n <PathEditor\n className={block('path-editor')}\n autoFocus\n defaultPath={actualPath}\n onApply={handleApply}\n onCancel={hideEditor}\n onBlur={hideEditor}\n onFocus={handleFocus}\n />\n );\n}\n\nfunction NavigationBreadcrumbs({onEdit}: {onEdit: () => void}) {\n const bcItems = useSelector(getNavigationBreadcrumbs);\n const mode = useSelector(getMode);\n const history = useHistory();\n\n const items = React.useMemo(() => {\n return bcItems.map(({text, state}, index) => {\n const isLastItem = index === bcItems.length - 1;\n const url = makeRoutedURL(window.location.pathname, {\n path: state.path,\n navmode: mode === Tab.ACL ? mode : Tab.CONTENT,\n filter: '',\n });\n\n return (\n <BreadcrumbsItem key={text} href={url}>\n {index ? (\n <Escaped text={text} onClick={isLastItem ? onEdit : undefined} />\n ) : (\n <Icon awesome={'folder-tree'} face={'solid'} />\n )}\n </BreadcrumbsItem>\n );\n });\n }, [bcItems, mode, onEdit]);\n\n return (\n <Breadcrumbs navigate={history.push} showRoot className={block('breadcrumbs')}>\n {items}\n </Breadcrumbs>\n );\n}\n\nfunction NavigationTools() {\n return (\n <div className={block('tools')}>\n <Transaction />\n <RefreshButton />\n <RestoreButton />\n </div>\n );\n}\n\nfunction Transaction() {\n const dispatch = useDispatch();\n\n const cluster = useSelector(getCluster);\n const transaction = useSelector(getTransaction);\n const [editMode, setEditMode] = React.useState(false);\n\n const handleClearTransaction = React.useCallback(() => {\n dispatch(clearTransaction());\n }, [dispatch]);\n\n const handleEdit = React.useCallback(\n (value: string) => {\n dispatch(setTransaction(value));\n setEditMode(false);\n },\n [dispatch, setEditMode],\n );\n\n const toggleEditMode = React.useCallback(() => {\n setEditMode(!editMode);\n }, [setEditMode, editMode]);\n\n if (transaction) {\n return (\n <div className={block('transaction')}>\n <span className=\"elements-ellipsis\">\n <Link\n routed\n url={`/${cluster}/${Page.NAVIGATION}?path=//sys/transactions/${transaction}`}\n >\n {transaction}\n </Link>\n </span>\n <Button\n size=\"m\"\n view=\"flat-secondary\"\n title=\"Clear transaction\"\n onClick={handleClearTransaction}\n >\n <Icon awesome=\"times\" />\n </Button>\n </div>\n );\n } else {\n return editMode ? (\n <Editor\n size=\"s\"\n scope=\"transaction-editor\"\n visible={true}\n value={transaction}\n placeholder=\"Enter id...\"\n onApply={handleEdit}\n onCancel={toggleEditMode}\n cancelOnBlur\n />\n ) : (\n <Button view=\"flat-secondary\" size=\"m\" title=\"Set transaction\" onClick={toggleEditMode}>\n <Icon awesome=\"code-branch\" />\n </Button>\n );\n }\n}\n\nfunction RefreshButton() {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n metrics.countEvent({\n navigation_refresh: 'clicked',\n });\n dispatch(updateView());\n }, [dispatch]);\n\n return (\n <Button\n size=\"s\"\n view=\"flat-secondary\"\n title={'Refresh page [Shift+R]'}\n hotkey={[{keys: 'shift+r', handler: handleClick, scope: 'all'}]}\n onClick={handleClick}\n >\n <Icon awesome={'sync-alt'} />\n </Button>\n );\n}\n\nfunction RestoreButton() {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n const restorePath = useSelector(getNavigationRestorePath);\n\n const handleRestore = React.useCallback(() => {\n dispatch(restoreObject(path, restorePath));\n }, [dispatch, restorePath, path]);\n\n return !restorePath || !inTrash(path) ? null : (\n <span className={block('restore')}>\n <Button view=\"action\" size=\"s\" onClick={handleRestore}>\n <Icon awesome=\"undo\" />\n Restore\n </Button>\n </span>\n );\n}\n\nexport default React.memo(NavigationTopRowContent);\n","import React from 'react';\n\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport Loader from '../../../components/Loader/Loader';\nimport {useSidePanel} from '../../../hooks/use-side-panel';\n\nexport const QueryWidgetLazy = withLazyLoading(\n React.lazy(() => import(/* webpackChunkName: \"query-widget\" */ './index')),\n <Loader visible centered size=\"l\" />,\n);\n\nexport function useQueryWidgetSidePanel() {\n return useSidePanel('QueryWidget', {\n renderContent({onClose}) {\n return <QueryWidgetLazy onClose={onClose} />;\n },\n });\n}\n","import React from 'react';\nimport {getSchedulingOperationsLoadingStatus} from '../../../../../store/selectors/scheduling/expanded-pools';\nimport {useSelector} from 'react-redux';\nimport Loader from '../../../../../components/Loader/Loader';\n\nfunction SchedulingOperationsLoader() {\n const loading = useSelector(getSchedulingOperationsLoadingStatus);\n return <Loader visible={loading} />;\n}\n\nexport default React.memo(SchedulingOperationsLoader);\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport {\n DELETE_PERMISSION,\n IdmObjectType,\n LOAD_DATA,\n REQUEST_PERMISSION,\n UPDATE_ACL,\n} from '../../constants/acl';\nimport {getTree} from '../../store/selectors/scheduling/scheduling';\nimport {\n YTPermissionTypeUI,\n checkUserPermissionsUI,\n getAcl,\n getResponsible,\n} from '../../utils/acl/acl-api';\nimport {convertFromUIPermissions, prepareAclSubject} from '../../utils/acl';\nimport UIFactory from '../../UIFactory';\nimport {AclAction, HasIdmKind} from '../../store/reducers/acl/acl';\nimport {isCancelled} from '../../utils/cancel-helper';\nimport {RootState} from '../../store/reducers';\nimport {\n IdmKindType,\n PreparedAclSubject,\n ResponsibleType,\n Role,\n UpdateAclParams,\n} from '../../utils/acl/acl-types';\nimport {CheckPermissionResult} from '../../../shared/utils/check-permission';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\n\ntype ThunkAclAction<T = unknown> = ThunkAction<T, RootState, unknown, AclAction>;\n\nconst prepareUserPermissions = (\n userPermissions: Array<CheckPermissionResult>,\n idmKind: IdmKindType,\n) => {\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind];\n return map_(userPermissions, (item, index) => {\n return {\n type: permissionTypes[index],\n action: item.action,\n };\n });\n};\n\ntype HasNormPoolTree = {normalizedPoolTree?: string};\n\nasync function getPathToCheckPermissions(\n idmKind: IdmKindType,\n entityName: string,\n poolTree?: string,\n) {\n switch (idmKind) {\n case IdmObjectType.ACCESS_CONTROL_OBJECT:\n case IdmObjectType.UI_EFFECTIVE_ACL:\n case IdmObjectType.PATH:\n return entityName;\n case IdmObjectType.ACCOUNT:\n return `//sys/accounts/${entityName}`;\n case IdmObjectType.POOL: {\n const fullPath: string = await ytApiV3Id.get(YTApiId.schedulingPoolFullPath, {\n path: `//sys/scheduler/orchid/scheduler/pool_trees/${poolTree}/pools/${entityName}/full_path`,\n });\n return `//sys/pool_trees/${poolTree}${fullPath}`;\n }\n case IdmObjectType.TABLET_CELL_BUNDLE: {\n return `//sys/tablet_cell_bundles/${entityName}`;\n }\n }\n throw new Error('Unexpected value of parameter idmKind');\n}\n\nexport function loadAclData(\n {path, idmKind}: {path: string} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n options: {userPermissionsPath?: string} = {userPermissionsPath: undefined},\n): ThunkAclAction {\n return async (dispatch, getState) => {\n const state = getState();\n const {login, cluster = ''} = state.global;\n\n dispatch({type: LOAD_DATA.REQUEST, idmKind});\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind];\n\n const {userPermissionsPath} = options;\n\n try {\n const pathToCheckPermissions = await getPathToCheckPermissions(idmKind, path, poolTree);\n const pathToCheckUserPermissions = userPermissionsPath\n ? await getPathToCheckPermissions(idmKind, userPermissionsPath, poolTree)\n : pathToCheckPermissions;\n\n return await Promise.all([\n getAcl({\n cluster,\n path,\n kind: idmKind,\n poolTree,\n sysPath: pathToCheckPermissions,\n }),\n checkUserPermissionsUI(pathToCheckUserPermissions, login, permissionTypes),\n getResponsible({\n cluster,\n path,\n kind: idmKind,\n poolTree,\n sysPath: pathToCheckPermissions,\n }),\n ]).then(([acl, userPermissions, responsible]) => {\n dispatch({\n type: LOAD_DATA.SUCCESS,\n data: {\n path,\n version: responsible.version,\n auditors: responsible.auditors,\n objectPermissions: acl.permissions,\n columnGroups: acl.column_groups,\n responsible: responsible.responsible,\n userPermissions: prepareUserPermissions(userPermissions, idmKind),\n readApprovers: responsible.readApprovers,\n disableAclInheritance: responsible.disableAclInheritance,\n bossApproval: responsible.bossApproval,\n disableInheritanceResponsible: responsible.disableInheritanceResponsible,\n },\n idmKind,\n });\n });\n } catch (error: any) {\n dispatch({\n type: LOAD_DATA.FAILURE,\n data: {\n error,\n },\n idmKind,\n });\n }\n };\n}\n\nexport function deletePermissions(\n {\n roleKey,\n idmKind,\n path,\n itemToDelete,\n }: HasIdmKind & {path: string; roleKey: string; itemToDelete: PreparedAclSubject},\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction<Promise<void>> {\n return async (dispatch, getState) => {\n const {cluster = ''} = getState().global;\n const state = getState();\n\n dispatch({\n type: DELETE_PERMISSION.REQUEST,\n data: roleKey,\n idmKind,\n });\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n\n try {\n const deletePermissionsPath = await getPathToCheckPermissions(idmKind, path, poolTree);\n\n return await UIFactory.getAclApi()\n .deleteRole({\n idmKind,\n cluster,\n roleKey,\n path,\n sysPath: deletePermissionsPath,\n itemToDelete,\n })\n .then(() => {\n dispatch({\n type: DELETE_PERMISSION.SUCCESS,\n data: roleKey,\n idmKind,\n });\n });\n } catch (error: any) {\n if (isCancelled(error)) {\n dispatch({type: DELETE_PERMISSION.CANCELLED, idmKind});\n return undefined;\n } else {\n dispatch({\n type: DELETE_PERMISSION.FAILURE,\n data: error,\n idmKind,\n });\n return Promise.reject(error);\n }\n }\n };\n}\n\nfunction dateToDaysAfterNow(date?: Date) {\n if (!date) {\n return undefined;\n }\n\n return Math.round((date.getTime() - Date.now()) / 3600 / 24 / 1000);\n}\n\nexport type PermissionToRequest = {\n path: string;\n cluster: string;\n permissions: {[x: string]: Array<YTPermissionTypeUI>} | null;\n subjects: Array<ResponsibleType>;\n inheritance_mode?: string;\n duration?: Date;\n comment?: string;\n permissionFlags?: Record<string, boolean>;\n readColumnGroup?: string;\n readColumns?: Array<string>;\n};\n\nexport function requestPermissions(\n {values, idmKind}: {values: PermissionToRequest} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction {\n return async (dispatch, getState) => {\n const state = getState();\n const {\n global: {cluster = ''},\n } = state;\n\n dispatch({\n type: REQUEST_PERMISSION.REQUEST,\n idmKind,\n });\n\n const {requestPermissionsFlags = {}} = UIFactory.getAclApi();\n\n const daysAfter = dateToDaysAfterNow(values.duration);\n const roles: Array<Role> = [];\n const rolesGroupedBySubject = [];\n const {inheritance_mode, permissionFlags, readColumnGroup, readColumns} = values;\n for (const item of values.subjects) {\n const subject = prepareAclSubject(item);\n const commonPart = {\n subject,\n deprive_after_days: daysAfter,\n ...(inheritance_mode ? {inheritance_mode} : {}),\n };\n Object.entries(requestPermissionsFlags).forEach(([key, flagInfo]) => {\n flagInfo?.applyToRequestedRole(commonPart, permissionFlags?.[key]);\n });\n const flattenPermissions = flatten_(map_(values.permissions));\n if (flattenPermissions.length) {\n rolesGroupedBySubject.push({\n permissions: flattenPermissions,\n ...commonPart,\n });\n }\n if (readColumns?.length) {\n rolesGroupedBySubject.push({\n ...rolesGroupedBySubject[rolesGroupedBySubject.length - 1],\n ...commonPart,\n columns: readColumns,\n permissions: ['read' as const],\n });\n }\n forEach_(values.permissions, (permissions) => {\n roles.push({\n ...convertFromUIPermissions({permissions}),\n ...commonPart,\n });\n });\n if (readColumnGroup) {\n roles.push({\n role_type: 'column_read',\n column_group_id: readColumnGroup,\n ...commonPart,\n });\n }\n }\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n\n try {\n const requestPermissionsPath = await getPathToCheckPermissions(\n idmKind,\n values.path,\n poolTree,\n );\n\n //cluster, path, roles, comment, columns\n return UIFactory.getAclApi()\n .requestPermissions({\n cluster,\n path: values.path,\n sysPath: requestPermissionsPath,\n roles,\n roles_grouped: rolesGroupedBySubject.map(convertFromUIPermissions),\n comment: values.comment ?? '',\n kind: idmKind,\n poolTree,\n })\n .then(() => {\n dispatch({\n type: REQUEST_PERMISSION.SUCCESS,\n idmKind,\n });\n });\n } catch (error: any) {\n if (isCancelled(error)) {\n dispatch({type: REQUEST_PERMISSION.CANCELLED, idmKind});\n return undefined;\n } else {\n dispatch({\n type: REQUEST_PERMISSION.FAILURE,\n data: error,\n idmKind,\n });\n return Promise.reject(error);\n }\n }\n };\n}\n\nexport function cancelRequestPermissions({idmKind}: HasIdmKind) {\n return {type: REQUEST_PERMISSION.CANCELLED, idmKind};\n}\n\nexport interface UpdateAclValues {\n responsible: Array<ResponsibleType>;\n auditors: Array<ResponsibleType>;\n readApprovers: Array<ResponsibleType>;\n disableInheritance: boolean;\n bossApproval: boolean;\n inheritAcl: boolean;\n comment: string;\n}\n\nexport function updateAcl(\n {\n path,\n values,\n version,\n idmKind,\n mode,\n }: {\n path: string;\n values: Partial<UpdateAclValues>;\n version?: string;\n mode?: UpdateAclParams['mode'];\n } & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction {\n return (dispatch, getState) => {\n const state = getState();\n const {\n global: {cluster = ''},\n } = getState();\n\n dispatch({\n type: UPDATE_ACL.REQUEST,\n idmKind,\n });\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n return UIFactory.getAclApi()\n .updateAcl(cluster, path, {\n ...values,\n version,\n idmKind,\n poolTree,\n mode,\n })\n .then(() => {\n dispatch({\n type: UPDATE_ACL.SUCCESS,\n idmKind,\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n return dispatch({type: UPDATE_ACL.CANCELLED, idmKind});\n } else {\n const data = error?.response?.data || error?.response || error;\n dispatch({\n type: UPDATE_ACL.FAILURE,\n data,\n idmKind,\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function cancelUpdateAcl({idmKind}: HasIdmKind): AclAction {\n return {type: UPDATE_ACL.CANCELLED, idmKind};\n}\n","import {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {\n getParsedError,\n parseErrorFromResponse,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\n\ntype LoadDynamicTableRequest = (props: {\n setup: unknown;\n parameters: unknown;\n cancellation?: unknown;\n reverseRows?: boolean;\n}) => Promise<{\n columns: string[];\n rows: UnipikaValue[];\n yqlTypes: TypeArray[] | null;\n}>;\n\nexport const readDynamicTable: LoadDynamicTableRequest = async ({\n setup,\n parameters,\n cancellation,\n reverseRows,\n}) => {\n const {data} = await ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters,\n cancellation,\n });\n\n const error = parseErrorFromResponse(data);\n if (error) return Promise.reject(getParsedError(error));\n\n const {columns, rows, yqlTypes} = prepareRows(data, reverseRows);\n return {columns, rows, yqlTypes};\n};\n","import {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {\n getParsedError,\n parseErrorFromResponse,\n prepareHeaders,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\n\ntype LoadStaticTableRows = (props: {\n setup: unknown;\n parameters: unknown;\n cancellation?: unknown;\n reverseRows?: boolean;\n}) => Promise<{\n columns: string[];\n rows: UnipikaValue[];\n omittedColumns: string[];\n yqlTypes: TypeArray[] | null;\n}>;\n\nexport const readStaticTable: LoadStaticTableRows = async ({\n setup,\n parameters,\n cancellation,\n reverseRows,\n}) => {\n const {data, headers} = await ytApiV3Id.readTable(YTApiId.tableRead, {\n setup,\n parameters,\n cancellation,\n });\n\n const error = parseErrorFromResponse(data);\n if (error) return Promise.reject(getParsedError(error));\n\n const {columns, rows, yqlTypes} = prepareRows(data, reverseRows);\n const omittedColumns = prepareHeaders(headers);\n\n return {columns, omittedColumns, rows, yqlTypes};\n};\n","import {isMediaTag} from '../../../../../utils/yql-types';\n\nconst getDefaultFormat = () => {\n return '--format json';\n};\n\nconst getImageResultFormat = (columnName: string, tag: string) => {\n const [_, extension] = tag.split('/');\n return `--format \"<columns=[${columnName}];enable_escaping=%false>schemaful_dsv\" >${columnName}.${extension}`;\n};\n\nexport const getCliCommandResultFormat = ({\n tag,\n columnName,\n}: {\n tag?: string;\n columnName: string;\n}) => {\n if (tag && isMediaTag(tag)) {\n return getImageResultFormat(columnName, tag as string);\n }\n\n return getDefaultFormat();\n};\n","import type {CellPreviewActionType} from '../../../modals/cell-preview';\nimport {\n getCurrentRowKey,\n getKeyColumns,\n getYqlTypes,\n} from '../../../../selectors/navigation/content/table-ts';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {CancelTokenSource} from 'axios';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getDynamicTableCellPath = ({\n index,\n path,\n columnName,\n}: {\n path: string;\n columnName: string;\n index: number;\n}): CellPreviewActionType => {\n return (_, getState) => {\n const yqlTypes = getYqlTypes(getState());\n const key = getCurrentRowKey(getState(), index);\n const keyColumns = getKeyColumns(getState());\n\n const offset = Query.prepareKey(key, yqlTypes);\n\n return Query.prepareQuery({\n path,\n offset,\n offsetColumns: keyColumns,\n columns: [columnName],\n limit: 1,\n });\n };\n};\n\nexport const getDynamicTableCliCommand = ({\n cellPath,\n tag,\n columnName,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt select-rows 'select ${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n\nexport const loadDynamicTableCellPreview = ({\n cellPath,\n output_format,\n cancellation,\n}: {\n cellPath: string;\n output_format: any;\n cancellation: (token: CancelTokenSource) => void;\n}) => {\n return async () => {\n const setup = {};\n\n return await ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters: {\n output_format,\n query: cellPath,\n },\n cancellation,\n });\n };\n};\n","import {type CellPreviewActionType} from '../../../modals/cell-preview';\nimport {getOffsetValue} from '../../../../selectors/navigation/content/table';\nimport type {CancelTokenSource} from 'axios';\nimport {ytApiV4} from '../../../../../rum/rum-wrap-api';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getStaticTableCellPath = ({\n path,\n columnName,\n index,\n}: {\n path: string;\n columnName: string;\n index: number;\n}): CellPreviewActionType => {\n return (_, getState) => {\n const offset = getOffsetValue(getState());\n\n const rowIndex = typeof offset === 'number' ? index + offset : index;\n\n return `${path}{${columnName}}[#${rowIndex}:#${rowIndex + 1}]`;\n };\n};\n\nexport const getStaticTableCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt read-table '${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n\nexport const loadStaticTableCellPreview = ({\n cellPath,\n output_format,\n cancellation,\n}: {\n cellPath: string;\n output_format: any;\n cancellation: (token: CancelTokenSource) => void;\n}): CellPreviewActionType => {\n return async () => {\n return await ytApiV4.readTable({\n parameters: {\n path: cellPath,\n output_format,\n },\n cancellation,\n });\n };\n};\n","import {getPath} from '../../../../selectors/navigation';\nimport {batch} from 'react-redux';\nimport {getDefaultRequestOutputFormat} from '../../../../../utils/navigation/content/table/table';\nimport {CELL_PREVIEW, PREVIEW_LIMIT} from '../../../../../constants/modals/cell-preview';\nimport {isCancelled} from '../../../../../utils/cancel-helper';\nimport {\n CellPreviewActionType,\n cellPreviewCancelHelper,\n openCellPreview,\n} from '../../../modals/cell-preview';\nimport unipika from '../../../../../common/thor/unipika';\nimport {getIsDynamic} from '../../../../selectors/navigation/content/table-ts';\nimport {\n getDynamicTableCellPath,\n getDynamicTableCliCommand,\n loadDynamicTableCellPreview,\n} from './dynamic-table';\nimport {\n getStaticTableCellPath,\n getStaticTableCliCommand,\n loadStaticTableCellPreview,\n} from './static-table';\nimport {isYqlTypesEnabled} from '../../../../selectors/navigation/content/table';\n\nconst getCellPath = ({\n columnName,\n index,\n}: {\n columnName: string;\n index: number;\n}): CellPreviewActionType => {\n return (dispatch, getState) => {\n const path: string = getPath(getState());\n const isDynamic = getIsDynamic(getState());\n\n const action = isDynamic ? getDynamicTableCellPath : getStaticTableCellPath;\n\n return dispatch(action({path, columnName, index}));\n };\n};\n\nconst getCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): CellPreviewActionType => {\n return (_dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const fn = isDynamic ? getDynamicTableCliCommand : getStaticTableCliCommand;\n\n return fn({cellPath, columnName, tag});\n };\n};\n\nconst loadCellPreview = ({\n cellPath,\n useYqlTypes,\n}: {\n cellPath: string;\n useYqlTypes: boolean;\n}): CellPreviewActionType => {\n return (dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const output_format: any = getDefaultRequestOutputFormat({\n stringLimit: PREVIEW_LIMIT,\n });\n\n if (useYqlTypes) {\n output_format.$attributes.value_format = 'yql';\n }\n\n const action = isDynamic ? loadDynamicTableCellPreview : loadStaticTableCellPreview;\n\n return dispatch(\n action({\n cellPath,\n output_format,\n cancellation: cellPreviewCancelHelper.removeAllAndSave,\n }),\n );\n };\n};\n\nexport const showCellPreviewModal = (\n columnName: string,\n index: number,\n tag?: string,\n): CellPreviewActionType => {\n return async (dispatch, getState) => {\n const useYqlTypes = isYqlTypesEnabled(getState());\n\n const cellPath = dispatch(getCellPath({columnName, index}));\n\n const ytCliDownloadCommand: string = dispatch(getCliCommand({cellPath, columnName, tag}));\n\n batch(() => {\n dispatch({type: CELL_PREVIEW.REQUEST, data: {ytCliDownloadCommand}});\n dispatch(openCellPreview());\n });\n\n const data: {\n $type?: string;\n $value?: any;\n $tag?: string;\n } = {};\n\n let isIncomplete = false;\n\n try {\n const json = await dispatch(loadCellPreview({cellPath, useYqlTypes}));\n\n const parsed = JSON.parse(json);\n\n const column = parsed.rows[0][columnName];\n\n if (useYqlTypes) {\n const value = column[0];\n const typeIndex = column[1];\n\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$type, $value, $tag} = unipika.converters.yql(\n [value, parsed.yql_type_registry[typeIndex]],\n {\n maxStringSize: undefined,\n maxListSize: undefined,\n treatValAsData: true,\n },\n flags,\n );\n\n isIncomplete = flags.incomplete;\n\n data.$type = $type;\n data.$value = $tag ? $value.$value : $value;\n data.$tag = $tag;\n } else {\n const hasType = column && column.$type;\n\n data.$type = column.$type;\n data.$value = hasType ? column.$value : column;\n\n isIncomplete = column.$incomplete;\n }\n\n const noticeText = isIncomplete\n ? 'Unable to load content more than 16MiB. Please use the command bellow to load it locally.'\n : 'You could use the command bellow to load it locally.';\n\n dispatch({\n type: CELL_PREVIEW.SUCCESS,\n data: {\n data,\n noticeText,\n },\n });\n } catch (error: any) {\n if (!isCancelled(error)) {\n dispatch({type: CELL_PREVIEW.FAILURE, data: {error}});\n }\n }\n };\n};\n","import {RootState} from '../reducers';\n\nexport function getExecuteBatchState(state: RootState) {\n return state.executeBatch;\n}\n\nexport const getApproversSubjectFilter = (state: RootState) => state.aclFilters.approversSubject;\nexport const getObjectSubjectFilter = (state: RootState) => state.aclFilters.objectSubject;\nexport const getObjectPermissionsFilter = (state: RootState) => state.aclFilters.objectPermissions;\nexport const getAclFilterColumns = (state: RootState) => state.aclFilters.columnsFilter;\nexport const getAclFilterColumnGroupName = (state: RootState) =>\n state.aclFilters.columnGroupNameFilter;\nexport const getAclFilterExpandedSubjects = (state: RootState) => state.aclFilters.expandedSubjects;\nexport const getAclCurrentTab = (state: RootState) => state.aclFilters.aclCurrentTab;\n","import {createSelector} from 'reselect';\n\nimport compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\nimport uniq_ from 'lodash/uniq';\nimport partition_ from 'lodash/partition';\nimport isEqual_ from 'lodash/isEqual';\nimport some_ from 'lodash/some';\n\nimport {calculateLoadingStatus} from '../../utils/utils';\nimport {concatByAnd} from '../../common/hammer/predicate';\nimport {\n getAclFilterColumnGroupName,\n getAclFilterColumns,\n getAclFilterExpandedSubjects,\n getApproversSubjectFilter,\n getObjectPermissionsFilter,\n getObjectSubjectFilter,\n} from './acl-filters';\nimport UIFactory from '../../UIFactory';\nimport {RootState} from '../../store/reducers';\nimport {IdmKindType, PreparedAclSubject} from '../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../utils/acl/acl-api';\nimport {PreparedRole} from '../../utils/acl';\n\nexport type PreparedAclSubjectColumn = Omit<PreparedAclSubject, 'type'> & {type: 'columns'};\n\nfunction prepareColumnsNames(columnsPermissions: Array<{columns?: Array<string>}>) {\n const columns = map_(columnsPermissions, (permission) => permission.columns);\n\n return compact_(uniq_(flatten_(columns))).sort();\n}\n\nfunction prepareApprovers(\n approvers: Array<PreparedRole> | undefined,\n type: 'read_approver' | 'responsible' | 'auditor',\n) {\n return map_(approvers, (subject) => {\n const extra = {\n type,\n subjects: [subject.value],\n subjectType: subject.type === 'users' ? ('user' as const) : ('group' as const),\n groupInfo:\n subject.type === 'groups'\n ? {name: subject.group_name, url: subject.url, group: undefined}\n : undefined,\n action: undefined,\n };\n return {\n ...subject,\n ...extra,\n };\n });\n}\n\nexport type PreparedApprover = ReturnType<typeof prepareApprovers>[number];\n\nexport const getAllUserPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].userPermissions;\nconst getAllObjectPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].objectPermissions;\n\nconst getAllObjectPermissionsWithSplittedSubjects = createSelector(\n [getAllObjectPermissions],\n splitSubjects,\n);\n\nexport const getObjectPermissionsTypesList = (idmKind: IdmKindType) => {\n return createSelector(\n [\n getObjectPermissionsFilter,\n (state) => getAllObjectPermissionsWithSplittedSubjects(state, idmKind),\n ],\n (permissionsFilter, items) => {\n const uniquePermisions = new Set<YTPermissionTypeUI>();\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind] || {};\n [...permissionTypes, ...permissionsFilter].forEach((permission) =>\n uniquePermisions.add(permission),\n );\n items.forEach((item) => {\n const {permissions} = item;\n permissions?.forEach((permission) => uniquePermisions.add(permission));\n });\n return sortBy_([...uniquePermisions], (permission) => permission);\n },\n );\n};\n\ntype HasSplitted = {\n isSplitted?: boolean;\n subjectIndex?: number;\n};\n\nfunction splitSubjects<T extends {subjects: Array<unknown>}>(items: Array<T>) {\n const res: Array<T & HasSplitted> = [];\n forEach_(items, (item) => {\n const {subjects} = item;\n if (subjects && subjects.length > 1) {\n forEach_(subjects, (subject, index) => {\n res.push({...item, subjects: [subject], isSplitted: true, subjectIndex: index});\n });\n } else {\n res.push(item);\n }\n });\n return res;\n}\n\nfunction subjectFilterPredicate<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(item: T, filter: string) {\n const {subjectType, groupInfo} = item;\n if (subjectType === 'group') {\n return some_(Object.entries(groupInfo ?? {}), ([key, value]) => {\n let str: string | undefined = String(value);\n if (key === 'url') {\n if (str[str.length - 1] === '/') str = str.slice(0, -1);\n str = str.split('/').pop();\n }\n return -1 !== str?.toLowerCase().indexOf(filter);\n });\n }\n const value = String(item.subjects[0] ?? '');\n return -1 !== value.toLowerCase().indexOf(filter);\n}\n\nfunction FilterBySubject<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(items: Array<T>, subjectFilter?: string) {\n if (!subjectFilter) return items;\n const lowerNameFilter = subjectFilter.toLowerCase();\n return filter_(items, (item) => subjectFilterPredicate(item, lowerNameFilter));\n}\n\nconst permissionsFilterPredicate = (item: PreparedAclSubject, filter: Set<YTPermissionTypeUI>) => {\n const {permissions} = item;\n let foundCount = 0;\n return permissions?.some((p) => {\n if (filter.has(p)) {\n foundCount++;\n }\n return foundCount >= filter.size;\n });\n};\n\ntype ObjectPermissionsRow = PreparedAclSubject & HasSplitted;\n\nexport const getAllObjectPermissionsFiltered = createSelector(\n [\n getAllObjectPermissionsWithSplittedSubjects,\n getObjectSubjectFilter,\n getObjectPermissionsFilter,\n getAclFilterColumns,\n ],\n (items, subjectFilter, permissionsFilter, columns) => {\n const [mainPermissions, columnPermissions] = partition_(\n items,\n (item) => !item.columns?.length,\n );\n\n const withColumns = columnPermissions.map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n\n const lowerNameFilter = subjectFilter?.toLocaleLowerCase();\n const filterBySubject = lowerNameFilter\n ? (item: ObjectPermissionsRow) => subjectFilterPredicate(item, lowerNameFilter)\n : undefined;\n\n const permissionsFilterSet = new Set<YTPermissionTypeUI>(permissionsFilter);\n const filterByPermissions = permissionsFilterSet.size\n ? (item: ObjectPermissionsRow) =>\n permissionsFilterPredicate(item, permissionsFilterSet) ?? false\n : undefined;\n\n const visibleColumns = new Set(columns);\n const filterByColumns = visibleColumns.size\n ? ({columns}: ObjectPermissionsRow) => {\n return columns?.some((colName) => visibleColumns.has(colName)) ?? false;\n }\n : undefined;\n\n const mainPredicates = compact_([filterBySubject, filterByPermissions]);\n const columnsPredicates = compact_([filterBySubject, filterByColumns]);\n return {\n mainPermissions: mainPredicates.length\n ? mainPermissions.filter(concatByAnd(...mainPredicates))\n : mainPermissions,\n columnsPermissions: columnsPredicates.length\n ? withColumns.filter(concatByAnd(...columnsPredicates))\n : withColumns,\n };\n },\n);\n\nexport const getObjectPermissionsAggregated = createSelector(\n [getAllObjectPermissionsFiltered, getAclFilterExpandedSubjects],\n ({mainPermissions, columnsPermissions}, expandedSubjects) => {\n return {\n mainPermissions: {\n ...aggregateBySubject(mainPermissions, expandedSubjects),\n count: mainPermissions.length,\n },\n columnsPermissions: {\n ...aggregateBySubject(columnsPermissions, expandedSubjects),\n count: columnsPermissions.length,\n },\n };\n },\n);\n\nclass AggregateBySubject {\n aggrKey: string;\n subject: ObjectPermissionsRow['subjects'][number];\n inherited: boolean;\n\n allPermissions = new Set<YTPermissionTypeUI>();\n columns = new Set<string>();\n first: ObjectPermissionsRow;\n children = new Array<ObjectPermissionsRow & {expanded?: boolean; level?: number}>();\n\n constructor(first: AggregateBySubject['first']) {\n if (first.subjects.length > 1) {\n throw new Error(\n `Unexpected behavior: more than one subject occured: ${first.subjects.join(',')}`,\n );\n }\n\n this.aggrKey = aggregationKey(first);\n this.inherited = Boolean(first.inherited);\n this.subject = first.subjects[0];\n this.first = {...first};\n this.add(first);\n }\n\n add(item: ObjectPermissionsRow) {\n const aggrKey = aggregationKey(item);\n if (this.aggrKey !== aggrKey) {\n throw new Error(\n `Unexpected behavior: aggregation keys are not queal: ${this.aggrKey} !== ${aggrKey}`,\n );\n }\n\n if (item.subjects.length !== 1) {\n throw new Error(\n `Unexpected behavior: item.subjects.length !== 1: ${JSON.stringify(item)}`,\n );\n }\n\n const child = {...item, permissions: [...(item.permissions ?? [])]};\n this.children.push(child);\n\n child.permissions?.sort();\n child.permissions?.forEach((p) => {\n this.allPermissions.add(p);\n });\n item.columns?.forEach((column) => this.columns.add(column));\n\n this.first.isMissing ||= Boolean(item.isMissing);\n this.first.isUnrecognized ||= Boolean(item.isUnrecognized);\n this.first.isApproved ||= Boolean(item.isApproved);\n this.first.isRequested ||= Boolean(item.isRequested);\n }\n\n getItems(expanded: boolean): {\n items: AggregateBySubject['children'];\n hasExpandable?: boolean;\n hasDenyAction?: boolean;\n hasInherited?: boolean;\n } {\n const hasInherited = this.inherited;\n if (this.children.length === 1) {\n return {items: this.children, hasInherited};\n }\n\n const first: typeof this.first & {level?: number; expanded?: boolean} = {\n ...this.first,\n level: 0,\n expanded,\n };\n first.permissions = [...this.allPermissions].sort();\n first.columns = [...this.columns].sort();\n\n let hasDenyAction = false;\n const items = !expanded\n ? [first]\n : [\n first,\n ...sortBy_(this.children, ['inheritance_mode', 'permissions']).map((i) => {\n hasDenyAction ||= i.action === 'deny';\n return {...i, level: 1};\n }),\n ];\n\n this.children.forEach((i) => {\n if (i.inheritance_mode !== first.inheritance_mode) {\n first.inheritance_mode = undefined;\n }\n if (!isEqual_(this.first.inheritedFrom, i.inheritedFrom)) {\n first.inheritedFrom = undefined;\n }\n });\n\n return {items, hasExpandable: true, hasDenyAction, hasInherited};\n }\n}\n\nexport type ObjectPermissionRowWithExpand = AggregateBySubject['children'][number];\n\nfunction aggregationKey(item: ObjectPermissionsRow) {\n const {\n inherited,\n subjects: [subject],\n } = item;\n return `subject:${subject}_inherited:${Boolean(inherited)}`;\n}\n\nfunction aggregateBySubject(\n objPermissions: Array<ObjectPermissionsRow>,\n expandedSubjects: Set<string | number>,\n) {\n const aggregated: Record<string, AggregateBySubject> = {};\n\n objPermissions.forEach((item) => {\n const aggKey = aggregationKey(item);\n const dst = aggregated[aggKey];\n if (!dst) {\n aggregated[aggKey] = new AggregateBySubject(item);\n } else {\n dst.add(item);\n }\n });\n\n const res = Object.values(aggregated).reduce(\n (acc, item) => {\n const {items, hasExpandable, hasInherited} = item.getItems(\n expandedSubjects.has(item.subject),\n );\n acc.items = acc.items.concat(items);\n acc.hasExpandable ||= hasExpandable;\n acc.hasInherited ||= hasInherited;\n return acc;\n },\n {items: []} as ReturnType<AggregateBySubject['getItems']>,\n );\n\n const [inherited, other] = partition_(res.items, (item) => item.inherited);\n\n return {\n ...res,\n items: [...inherited, ...other],\n };\n}\n\nexport const getAllObjectPermissionsOrderedByStatus = createSelector(\n [getAllObjectPermissions],\n OrderByRoleStatus,\n);\nexport const getAllColumnGroups = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].columnGroups;\nexport const getAllColumnGroupsActual = createSelector(\n [getAllColumnGroups, getAclFilterColumns, getAclFilterColumnGroupName],\n (items, columnsFilter, nameFilter) => {\n const visibleColumns = new Set(columnsFilter);\n type ItemType = (typeof items)[number];\n const nameFilterLower = nameFilter?.toLowerCase();\n const predicates = compact_([\n (item: ItemType) => {\n return !item.removed;\n },\n visibleColumns.size > 0\n ? (item: ItemType) => {\n return item.columns?.some((name) => visibleColumns.has(name)) ?? false;\n }\n : undefined,\n nameFilterLower?.length\n ? (item: ItemType) =>\n -1 !== item.name?.toLowerCase().indexOf(nameFilterLower) ?? false\n : undefined,\n ]);\n const filtered = filter_(items, concatByAnd(...predicates)).map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n return sortBy_(filtered, ['name']);\n },\n);\n\nfunction OrderByRoleStatus<\n T extends {\n isDepriving?: boolean;\n isRequested?: boolean;\n isUnrecognized?: boolean;\n isApproved?: boolean;\n },\n>(items: Array<T>) {\n const unrecognized: typeof items = [];\n const requested: typeof items = [];\n const depriving: typeof items = [];\n const rest: typeof items = [];\n forEach_(items, (item) => {\n const {isDepriving, isRequested, isUnrecognized, isApproved} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n depriving.push(item);\n } else if (isRequested || isApproved) {\n requested.push(item);\n } else {\n rest.push(item);\n }\n });\n return [...requested, ...depriving, ...unrecognized, ...rest];\n}\n\nfunction OrderByInheritanceAndSubject<T extends {inherited?: boolean; subjects: Array<unknown>}>(\n items: Array<T>,\n) {\n const res = sortBy_(items, [\n (item) => !item.inherited,\n (item) => (item.subjects && item.subjects[0]) || true,\n ]);\n return res;\n}\n\nconst getReadApprovers = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].readApprovers;\nconst getResponsibles = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].responsible;\nconst getAuditors = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].auditors;\n\nexport const getNotInheritedReadApprovers = createSelector([getReadApprovers], (readApprovers) =>\n filter_(readApprovers, (readApprover) => !readApprover.inherited),\n);\nexport const getNotInheritedResponsibles = createSelector([getResponsibles], (responsibles) =>\n filter_(responsibles, (responsible) => !responsible.inherited),\n);\nexport const getNotInheritedAuditors = createSelector([getAuditors], (auditros) =>\n filter_(auditros, (auditro) => !auditro.inherited),\n);\n\nconst getAllApprovers = createSelector(\n [getReadApprovers, getResponsibles, getAuditors],\n (readApprovers, responsibles, auditros) => {\n return [\n ...prepareApprovers(readApprovers, 'read_approver'),\n ...prepareApprovers(responsibles, 'responsible'),\n ...prepareApprovers(auditros, 'auditor'),\n ];\n },\n);\n\nexport const getHasApprovers = createSelector([getAllApprovers], (items) => items.length > 0);\n\nexport const getApproversFiltered = createSelector(\n [getAllApprovers, getApproversSubjectFilter],\n FilterBySubject,\n);\n\nexport const getApproversFilteredAndOrdered = createSelector(\n [getApproversFiltered],\n OrderByInheritanceAndSubject,\n);\n\nexport const getApprovers = createSelector([getAllApprovers], OrderByRoleStatus);\n\nexport const getAllAccessColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'allow' && permission.columns?.length! > 0,\n );\n\n return map_(filteredPermissions, (item) => {\n const tmp: typeof item = {...item};\n tmp.type = 'columns';\n return tmp;\n });\n },\n);\n\nconst getAllDenyColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'deny' && permission.columns?.length! > 0,\n );\n\n return map_(\n filteredPermissions,\n (permission) =>\n ({\n ...permission,\n type: 'columns',\n }) as PreparedAclSubjectColumn,\n );\n },\n);\n\nexport const getAllAccessColumnsNames = createSelector(\n [getAllAccessColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getAllDenyColumnsNames = createSelector(\n [getAllDenyColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getDenyColumnsItems = createSelector([getAllDenyColumnsNames], (names) =>\n map_(names, (name) => ({key: name, value: name, title: name})),\n);\n\nexport const isPermissionDeleted = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].isPermissionDeleted;\nexport const permissionDeletionError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletionError;\nexport const getLastDeletedPermissionKey = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletedItemKey;\nexport const getIdmPermissionsRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmPermissionsRequestError;\nexport const getIdmManageAclRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmManageAclRequestError;\nexport const getIdmPathVersion = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].version;\n\nconst getAclLoading = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loading;\nconst getAclLoaded = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loaded;\nconst getAclError = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].error;\n\nexport const getAclLoadState = createSelector(\n [getAclLoading, getAclLoaded, getAclError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport type {RootState} from '../../../store/reducers';\nimport type {ChaosBundle, ChaosCell} from '../../../store/reducers/chaos_cell_bundles';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n aggregateTotal,\n tabletActiveChaosBundleLink,\n tabletChaosBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {prepareHost} from '../../../utils';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\n\nexport const getChaosIsLoaded = (state: RootState) => state.chaos_cell_bundles.loaded;\nexport const getChaosIsLoading = (state: RootState) => state.chaos_cell_bundles.loading;\nexport const getChaosError = (state: RootState) => state.chaos_cell_bundles.error;\n\nexport const getChaosBundlesSortState = (state: RootState) => state.chaos_cell_bundles.bundlesSort;\n\nexport const getChaosBundlesNameFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesNameFilter;\nexport const getChaosBundlesAccountFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesAccountFilter;\nexport const getChaosBundlesTagNodeFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTagNodeFilter;\n\nexport const getChaosBundles = (state: RootState) => state.chaos_cell_bundles.bundles;\n\nexport const getChaosActiveBundle = (state: RootState) => state.chaos_cell_bundles.activeBundle;\n\nexport const getChaosBundlesTableMode = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTableMode;\n\nexport const getChaosActiveBundleData = createSelector(\n [getChaosBundles, getChaosActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getChaosBundlesTotal = createSelector(\n [getChaosBundles],\n (bundles): ChaosBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof ChaosBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getChaosBundlesFiltered = createSelector(\n [\n getChaosBundles,\n getChaosBundlesNameFilter,\n getChaosBundlesAccountFilter,\n getChaosBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: ChaosBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getChaosBundlesSorted = createSelector(\n [getChaosBundlesFiltered, getChaosBundlesSortState],\n (bundles, {column, order}) => {\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getChaosCells = (state: RootState) => state.chaos_cell_bundles.cells;\nexport const getChaosCellsSortState = (state: RootState) => state.chaos_cell_bundles.cellsSort;\n\nexport const getChaosCellsIdFilter = (state: RootState) => state.chaos_cell_bundles.cellsIdFilter;\nexport const getChaosCellsBundleFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsBundleFilter;\nexport const getChaosCellsHostFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsHostFilter;\n\nexport const getChaosCellsOfActiveAccount = createSelector(\n [getChaosCells, getChaosActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getChaosCellsFiltered = createSelector(\n [\n getChaosCellsOfActiveAccount,\n getChaosCellsIdFilter,\n getChaosCellsBundleFilter,\n getChaosCellsHostFilter,\n getChaosActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: ChaosCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterChaosCellsByBundle(bundle: string, cells: Array<ChaosCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getChaosCellsSorted = createSelector(\n [getChaosCellsFiltered, getChaosCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getChaosCellsBundles = createSelector([getChaosCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getChaosCellsHosts = createSelector([getChaosCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getChaosCellsHostsOfActiveBundle = createSelector(\n [getChaosActiveBundle, getChaosCellsFiltered],\n (activeBundle: string, cells: Array<ChaosCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<ChaosCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface ChaosCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getChaosBreadcrumbItems = createSelector(\n [getCluster, getChaosActiveBundle],\n (cluster, activeBundle): Array<ChaosCellBundlesBreadcrumbsItem> => {\n const res: Array<ChaosCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletChaosBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n if (activeBundle) {\n res.push({\n text: activeBundle,\n href: tabletActiveChaosBundleLink(cluster, activeBundle),\n });\n }\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\nimport uniq_ from 'lodash/uniq';\nimport compact_ from 'lodash/compact';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\n\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {SortState} from '../../../types';\nimport {multiSortBySortStateArray} from '../../../utils/sort-helpers';\nimport {StrawberryListAttributes} from '../../../utils/strawberryControllerApi';\nimport {getSettingsData} from '../../../store/selectors/settings/settings-base';\n\nexport const getChytListData = (state: RootState) => state.chyt.list.data;\n\nexport const getChytListAvailableCreators = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.creator!)).sort();\n});\n\nexport const getChytListAvailableHealths = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return compact_(uniq_(items.map((item) => item.health)).sort());\n});\n\nexport const getChytListAvailableStates = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.state!)).sort();\n});\n\nexport const getChytCurrentAlias = (state: RootState) => state.chyt.clique.currentClique;\n\nexport const getChytListFilterAlias = (state: RootState) => state.chyt.listFilters.name;\nexport const getChytListFilterHealth = (state: RootState) => state.chyt.listFilters.health;\nexport const getChytListFilterCreator = (state: RootState) => state.chyt.listFilters.creator;\nexport const getChytListFilterState = (state: RootState) => state.chyt.listFilters.state;\n\ntype ChytListColumns = Exclude<StrawberryListAttributes, 'yt_operation_id'>;\nconst CHYT_LIST_SELECTABLE_COLUMNS: Record<Exclude<ChytListColumns, 'health_reason'>, true> = {\n instance_count: true,\n total_cpu: true,\n total_memory: true,\n creation_time: true,\n stage: true,\n yt_operation_start_time: true,\n yt_operation_finish_time: true,\n speclet_modification_time: true,\n strawberry_state_modification_time: true,\n pool: true,\n health: true,\n creator: true,\n state: true,\n};\n\nexport type ChytSelectableColumn = keyof typeof CHYT_LIST_SELECTABLE_COLUMNS;\n\ntype ChytColumnItem = {checked: boolean; column: ChytListColumns};\n\nexport const getChytListColumnsFromSettings = (state: RootState) => {\n return (\n getSettingsData(state)['global::chyt::list_columns'] ??\n ([\n 'health',\n 'state',\n 'instance_count',\n 'total_cpu',\n 'total_memory',\n 'creator',\n 'creation_time',\n ] as const)\n );\n};\n\nexport const getChytListVisibleColumns = createSelector(\n [getChytListColumnsFromSettings],\n (columns): Array<ChytSelectableColumn> => {\n const userColumns = new Set(columns);\n return compact_(\n columns.map((k) => {\n return CHYT_LIST_SELECTABLE_COLUMNS[\n k as keyof typeof CHYT_LIST_SELECTABLE_COLUMNS\n ] && userColumns.has(k)\n ? (k as ChytSelectableColumn)\n : null;\n }),\n );\n },\n);\n\nexport const getChytListColumns = createSelector(\n [getChytListVisibleColumns],\n (columns): Array<ChytColumnItem> => {\n const userColumns = new Set(columns);\n const res = columns.map((column) => {\n return {checked: true, column};\n });\n\n Object.keys(CHYT_LIST_SELECTABLE_COLUMNS).forEach((k) => {\n const column = k as ChytSelectableColumn;\n if (!userColumns.has(column)) {\n res.push({checked: false, column});\n }\n });\n\n return res;\n },\n);\n\nexport const getChytListTableSortState = (state: RootState) => state.chyt.listFilters.sortState;\n\nexport const getChytListTableSortStateByName = createSelector(\n [getChytListTableSortState],\n (sortState) => {\n return sortState.reduce(\n (acc, item, index) => {\n if (item.column) {\n acc[item.column] = {\n ...item,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<keyof ChytInfo, SortState<keyof ChytInfo> & {multisortIndex?: number}>,\n );\n },\n);\n\nconst getChytFilterPredicate = createSelector(\n [\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterState,\n getChytListFilterHealth,\n ],\n (alias, creator, state, health) => {\n const predicates = compact_([\n alias ? (item: ChytInfo) => -1 !== item.alias.indexOf(alias) : undefined,\n creator !== undefined ? (item: ChytInfo) => creator === item.creator : undefined,\n state ? (item: ChytInfo) => state === item.state : undefined,\n health ? (item: ChytInfo) => health === item.health : undefined,\n ]);\n\n return predicates.length ? concatByAnd(...predicates) : undefined;\n },\n);\n\nexport const getChytListTableItems = createSelector(\n [getChytListData, getChytListTableSortState, getChytFilterPredicate],\n (data, sortState, predicate) => {\n const {items = []} = data;\n\n const filteredItems = !predicate ? items : items.filter(predicate);\n\n const sortedItems = multiSortBySortStateArray(filteredItems, sortState);\n\n return sortedItems;\n },\n);\n","import find_ from 'lodash/find';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {createSelector} from 'reselect';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChaosBundlesNS,\n getChytNS,\n getClusterNS,\n getSchedulingNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getPath} from '../../store/selectors/navigation';\nimport {getPool, getTree} from '../../store/selectors/scheduling/scheduling';\nimport {getTabletsActiveBundle} from './tablet_cell_bundles';\nimport {getChaosActiveBundle} from './chaos_cell_bundles';\nimport {getChytCurrentAlias} from './chyt';\n\n//************* Selectors for Accounts *****************\n\nexport const getFavouriteAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareFavourites,\n);\n\nexport const getLastVisitedAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareLastVisited,\n);\n\nexport const getPopularAccounts = createSelector([getLastVisitedAccounts], preparePopulars);\n\nexport const isActiveAcountInFavourites = createSelector(\n [getActiveAccount, getFavouriteAccounts],\n prepareIsInFavourites,\n);\n\nexport const getFavouriteChyt = createSelector([makeGetSetting, getChytNS], prepareFavourites);\n\nexport const getLastVisitedChyt = createSelector([makeGetSetting, getChytNS], prepareLastVisited);\n\nexport const getPopularChyt = createSelector([getLastVisitedChyt], preparePopulars);\n\nexport const isActiveCliqueInFavourites = createSelector(\n [getChytCurrentAlias, getFavouriteChyt],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Navigation *****************\n\nexport const getFavouritePaths = createSelector([makeGetSetting, getClusterNS], prepareFavourites);\n\nexport const getLastVisitedPaths = createSelector(\n [makeGetSetting, getClusterNS],\n prepareLastVisited,\n);\n\nexport const getPopularPaths = createSelector([getLastVisitedPaths], preparePopulars);\n\nexport const isCurrentPathInFavourites = createSelector(\n [getPath, getFavouritePaths],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Scheduling *****************\n\nexport const getFavouritePools = createSelector(\n [makeGetSetting, getSchedulingNS],\n prepareFavourites,\n);\n\nexport const isActivePoolInFavourites = createSelector(\n [getPool, getTree, getFavouritePools],\n prepareIsPoolInFavourites,\n);\n\n//************* Selectors for Bundles *****************\n\nexport const getFavouriteBundles = createSelector(\n [makeGetSetting, getBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveBundleInFavourites = createSelector(\n [getTabletsActiveBundle, getFavouriteBundles],\n prepareIsInFavourites,\n);\n\n// ************ Selectors for Chaos bundles ***********\n\nexport const getFavouriteChaosBundles = createSelector(\n [makeGetSetting, getChaosBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveChaosBundleInFavourites = createSelector(\n [getChaosActiveBundle, getFavouriteChaosBundles],\n prepareIsInFavourites,\n);\n\n//********************** Helpers *************************\n\nfunction prepareFavourites(getSetting, parentNS) {\n const items = getSetting(SettingName.LOCAL.FAVOURITES, parentNS);\n return sortBy_(items, 'path');\n}\n\nfunction prepareLastVisited(settingGetter, parentNS) {\n return settingGetter(SettingName.LOCAL.LAST_VISITED, parentNS) || [];\n}\n\nfunction preparePopulars(lastVisited) {\n return sortBy_(lastVisited, (entry) => -entry.count);\n}\n\nfunction prepareIsInFavourites(value, favourites) {\n return Boolean(find_(favourites, ({path}) => path === value));\n}\n\nfunction prepareIsPoolInFavourites(pool, tree, favourites) {\n return Boolean(find_(favourites, ({path}) => path === `${pool}[${tree}]`));\n}\n","import {createSelector} from 'reselect';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../constants/navigation/index';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {isFinalLoadingStatus} from '../../../utils/utils';\n\nexport const getTransaction = (state) => state.navigation.navigation.transaction;\nexport const getAttributes = (state) => state.navigation.navigation.attributes;\nexport const getAttributesWithTypes = (state) => state.navigation.navigation.attributesWithTypes;\nexport const getLoadState = (state) => state.navigation.navigation.loadState;\nexport const getError = (state) => state.navigation.navigation.error;\nexport const getRawPath = (state) => state.navigation.navigation.path;\nexport const getIdmSupport = (state) => state.navigation.navigation.isIdmSupported;\nexport const getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\n\nexport const getType = createSelector(getAttributes, (attributes) => attributes?.type);\n\nexport const getPath = createSelector(\n [getRawPath, getNavigationDefaultPath],\n (rawPath, defaultPath) => rawPath || defaultPath,\n);\n\nexport const getAttributesPath = createSelector(\n [getAttributes, getPath],\n (attributes, navigationPath) => attributes?.path || navigationPath,\n);\n\nexport const isNavigationFinalLoadState = createSelector([getLoadState], (state) => {\n return isFinalLoadingStatus(state);\n});\n\nexport const getParsedPath = createSelector(getPath, (path) => {\n try {\n return ypath.YPath.create(path, 'absolute');\n } catch (ex) {\n console.error(ex);\n }\n});\nexport const getActualPath = createSelector([getPath, getType], (path, type) => {\n return type === 'map_node' ? path + '/' : path;\n});\n\nexport const checkIsTrash = createSelector(\n [getPath],\n (path) => path.startsWith('//tmp/trash') || path.startsWith('//trash'),\n);\n","import {createSelector} from 'reselect';\nimport reduce_ from 'lodash/reduce';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../reducers';\nimport {getSchedulingPoolsMapByName} from './scheduling-pools';\n\nexport const getSchedulingAbcFilter = (state: RootState) =>\n state.scheduling.scheduling.abcServiceFilter;\n\nexport const getSchedulingAttributesToFilter = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilter;\nexport const getSchedulingAttributesToFilterParams = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilterParams;\n\nexport const schedulingOverviewHasFilter = (state: RootState) => {\n const abcFilter = getSchedulingAbcFilter(state);\n\n return abcFilter?.id !== undefined;\n};\n\nexport const getSchedulingFilteredPoolNames = createSelector(\n [getSchedulingAttributesToFilter, getSchedulingPoolsMapByName, getSchedulingAbcFilter],\n (attrsToFilter, loadedPools, abcFilter) => {\n if (!attrsToFilter) {\n return undefined;\n }\n\n if (abcFilter?.id === undefined) {\n return undefined;\n }\n\n const res = reduce_(\n attrsToFilter,\n (acc, attrs, key) => {\n if (attrs.abc?.id !== abcFilter?.id) {\n return acc;\n }\n\n acc.add(key);\n return acc;\n },\n new Set<string>(),\n );\n\n forEach_([...res], (poolName) => {\n let name = poolName;\n let item = attrsToFilter[name];\n while (item?.parent && !loadedPools[name]) {\n res.add(item.parent);\n\n name = item.parent;\n item = attrsToFilter[item.parent];\n }\n });\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\n\nexport const getExpandedPoolCypressData = (state: RootState) =>\n state.scheduling.expandedPools.flattenCypressData;\n\nexport const getSchedulingOperations = (state: RootState) =>\n state.scheduling.expandedPools.rawOperations;\nexport const getExpandedPoolsTree = (state: RootState) =>\n state.scheduling.expandedPools.expandedPoolsTree;\nexport const getSchedulingOperationsError = (state: RootState) =>\n state.scheduling.expandedPools.error;\nexport const getSchedulingOperationsLoading = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsLoaded = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsExpandedPools = (state: RootState) =>\n state.scheduling.expandedPools.expandedPools;\nexport const getExpandedPoolsLoadAll = (state: RootState) => state.scheduling.expandedPools.loadAll;\n\nexport const getSchedulingOperationsLoadingStatus = createSelector(\n [getSchedulingOperationsLoading, getSchedulingOperationsLoaded],\n (loading, loaded) => {\n return loading && !loaded;\n },\n);\n","import map_ from 'lodash/map';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport {appendInnerErrors} from '../errors';\n\nconst RESOURCE_LIMIT_MAPPER = {\n user_memory: 'memory',\n};\n\nfunction preparePoolChildResource(data, type, treeResources, resource) {\n const attributes = data.attributes;\n\n if (data.name === ROOT_POOL_NAME) {\n data.resources[resource] = {\n guaranteed: ypath.getNumber(treeResources, '/resource_limits/' + resource),\n usage: ypath.getNumber(treeResources, '/resource_usage/' + resource),\n };\n } else {\n const min = ypath.getNumber(attributes, '/strong_guarantee_resources/' + resource);\n const usage = ypath.getNumber(attributes, '/resource_usage/' + resource);\n const demand = ypath.getNumber(attributes, '/resource_demand/' + resource);\n const guaranteed = ypath.getNumber(\n attributes,\n '/promised_fair_share_resources/' + resource,\n );\n\n const limitResource = RESOURCE_LIMIT_MAPPER[resource] || resource;\n const limit = ypath.getNumber(data.cypressAttributes, '/resource_limits/' + limitResource);\n\n const treeLimit = ypath.getNumber(treeResources, '/resource_limits/' + resource);\n const detailed =\n treeLimit * ypath.getNumber(attributes, '/detailed_fair_share/total/' + limitResource);\n\n data.resources[resource] = {\n min,\n guaranteed,\n usage,\n demand,\n limit,\n detailed,\n };\n }\n\n return data;\n}\n\nexport function updatePoolChild(data, cypressData, type, treeResources) {\n try {\n const attributes = data.attributes;\n const cypressAttributes = ypath.getAttributes(cypressData);\n\n data.cypressAttributes = cypressAttributes;\n data.type = type;\n\n if (data.type === 'pool') {\n if (typeof attributes === 'undefined' && data.parent) {\n console.error(\n 'Pool \"%s\" without attributes inited by \"%s\"',\n data.name,\n data._initedBy,\n );\n }\n\n data.mode = ypath.getValue(attributes, '/mode');\n\n data.leaves = map_(data.leaves, (leaf) => {\n return updatePoolChild(leaf, {}, 'operation', treeResources);\n });\n\n const child_pool_count = ypath.getNumber(attributes, '/child_pool_count');\n if (child_pool_count > 0 && !data.children.length) {\n for (let i = 0; i < child_pool_count; ++i) {\n data.children.push({\n parent: data.name,\n type: 'pool',\n name: `#key_${data.name}_${i}`,\n attributes: {},\n leaves: [],\n incomplete: true,\n });\n }\n }\n\n if (!data.leaves?.length) {\n data.pool_operation_count = ypath.getNumber(\n attributes,\n '/pool_operation_count',\n NaN,\n );\n if (data.pool_operation_count > 0) {\n const emptyOp = updatePoolChild(\n {attributes: {}},\n {},\n 'operation',\n treeResources,\n );\n data.leaves = [];\n for (let i = 0; i < data.pool_operation_count; ++i) {\n data.leaves.push({\n ...emptyOp,\n name: `##fake_operation_${data.name}_${i}`,\n });\n }\n }\n }\n\n // Operations\n data.operationCount = ypath.getNumber(attributes, '/operation_count');\n data.maxOperationCount = ypath.getNumber(attributes, '/max_operation_count');\n data.maxOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_operation_count',\n );\n data.runningOperationCount = ypath.getNumber(attributes, '/running_operation_count');\n data.maxRunningOperationCount = ypath.getNumber(\n attributes,\n '/max_running_operation_count',\n );\n data.maxRunningOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_running_operation_count',\n );\n }\n\n data.id = data.name;\n data.starvation_status = ypath.getValue(attributes, '/starvation_status');\n\n // General\n data.weight = ypath.getNumber(attributes, '/weight');\n data.weightEdited = ypath.getNumber(cypressAttributes, '/weight');\n data.minShareRatio = ypath.getNumber(attributes, '/min_share_ratio');\n data.maxShareRatio = ypath.getNumber(attributes, '/max_share_ratio');\n data.fairShareRatio = ypath.getNumber(attributes, '/fair_share_ratio');\n data.fifoIndex = ypath.getNumber(attributes, '/fifo_index');\n data.usageRatio = ypath.getNumber(attributes, '/usage_ratio');\n data.demandRatio = ypath.getNumber(attributes, '/demand_ratio');\n data.isEphemeral = ypath.getBoolean(attributes, '/is_ephemeral');\n\n data.integralType = ypath.getValue(attributes, '/integral_guarantee_type');\n const userDefinedBurstCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/burst_guarantee_resources/cpu',\n NaN,\n );\n data.burstCPU = ypath.getNumber(\n attributes,\n '/specified_burst_guarantee_resources/cpu',\n userDefinedBurstCPU,\n );\n const userDefinedFlowCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/cpu',\n NaN,\n );\n data.flowCPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/cpu',\n userDefinedFlowCPU,\n );\n const userDefinedFlowGPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/gpu',\n NaN,\n );\n data.flowGPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/gpu',\n userDefinedFlowGPU,\n );\n\n data.accumulated = ypath.getValue(attributes, '/accumulated_resource_ratio_volume');\n data.accumulatedCpu = ypath.getValue(attributes, '/accumulated_resource_volume/cpu');\n data.burstDuration = ypath.getValue(attributes, '/estimated_burst_usage_duration_sec');\n\n const fifoSortParams = map_(\n ypath.getValue(attributes, '/fifo_sort_parameters') ||\n ypath.getValue(cypressAttributes, '/fifo_sort_parameters'),\n (param) => ypath.getValue(param),\n );\n data.fifoSortParams =\n fifoSortParams.length > 0\n ? fifoSortParams\n : ['start_time', 'weight', 'pending_job_count'];\n data.abc = ypath.getValue(attributes, '/abc') || {};\n data.forbidImmediateOperations =\n ypath.getBoolean(cypressAttributes, '/forbid_immediate_operations') || false;\n data.createEphemeralSubpools =\n ypath.getBoolean(cypressAttributes, '/create_ephemeral_subpools') || false;\n\n // Resources\n data.dominantResource = ypath.getValue(attributes, '/dominant_resource');\n\n data.resources = {};\n\n preparePoolChildResource(data, type, treeResources, 'cpu');\n preparePoolChildResource(data, type, treeResources, 'user_memory');\n preparePoolChildResource(data, type, treeResources, 'gpu');\n preparePoolChildResource(data, type, treeResources, 'user_slots');\n\n return data;\n } catch (e) {\n throw appendInnerErrors(e, {\n message: `An error occured while parsing pool \"${data.name}\" data.`,\n });\n }\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport {preparePools} from '../../../utils/scheduling/scheduling';\nimport ypath from '../../../common/thor/ypath';\nimport {updatePoolChild} from '../../../utils/scheduling/pool-child';\nimport {\n getExpandedPoolCypressData,\n getExpandedPoolsTree,\n getSchedulingOperations,\n} from './expanded-pools';\nimport {getCluster} from '../../../store/selectors/global';\nimport {RumWrapper} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {EMPTY_OBJECT} from '../../../constants/empty';\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nconst getPoolsRaw = (state: RootState) => state.scheduling.expandedPools.rawPools;\nconst getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\n\nconst getSchedulingTreeOperations = createSelector(\n [getSchedulingOperations, getExpandedPoolsTree, getTree],\n (rawOperations, expandedPoolsTree, tree) => {\n if (tree !== expandedPoolsTree) {\n return EMPTY_OBJECT as typeof rawOperations;\n }\n\n return rawOperations;\n },\n);\n\nconst getOperationsFiltered = createSelector(\n [getPoolsRaw, getSchedulingTreeOperations],\n (rawPools, rawOperations) => {\n return reduce_(\n rawOperations,\n (acc, item, operationId) => {\n if (rawPools[item.pool]) {\n acc[operationId] = item;\n }\n return acc;\n },\n {} as typeof rawOperations,\n );\n },\n);\n\nconst getPoolsPrepared = createSelector(\n [getPoolsRaw, getOperationsFiltered, getExpandedPoolCypressData, getTreeResources, getCluster],\n (rawPools, rawOperations, attributes, treeResources, cluster) => {\n if (isEmpty_(rawPools)) {\n return [];\n }\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.SCHEDULING);\n\n return rumId.wrap('prepareData', () => {\n const preparedPools = preparePools(rawPools!, rawOperations);\n return map_(preparedPools, (pool) => {\n const cypressAttributes = ypath.getValue(attributes)[pool.name];\n return updatePoolChild(pool, cypressAttributes, 'pool', treeResources);\n });\n });\n },\n);\n\nexport const getSchedulingPoolsMapByName = createSelector(\n [getPoolsPrepared],\n (pools: Array<PoolInfo>) => {\n return reduce_(\n pools,\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {} as Record<string, PoolInfo>,\n );\n },\n);\n\nexport const getSchedulingPoolsExtraInfo = createSelector(\n [getSchedulingPoolsMapByName],\n (poolsMap) => {\n const root = poolsMap[ROOT_POOL_NAME];\n if (!root) {\n return {};\n }\n\n const res: Record<string, PoolExtraInfo> = {};\n calcChildrenIntegrals(root, res);\n return res;\n },\n);\n\ntype PoolName = string;\n\nfunction calcChildrenIntegrals(pool: PoolInfo, dst: Record<PoolName, PoolExtraInfo>) {\n const {children, name} = pool;\n if (!children?.length) {\n const res = (dst[name] = {\n childrenBurstCPU: 0,\n childrenFlowCPU: 0,\n });\n return res;\n }\n\n const res: PoolExtraInfo = {\n childrenFlowCPU: 0,\n childrenBurstCPU: 0,\n };\n for (let i = 0; i < children.length; ++i) {\n const item = children[i];\n const itemExtraInfo = calcChildrenIntegrals(item, dst);\n\n dst[item.name] = itemExtraInfo;\n\n res.childrenFlowCPU += item.flowCPU || 0 + itemExtraInfo.childrenFlowCPU;\n res.childrenBurstCPU += item.burstCPU || 0 + itemExtraInfo.childrenBurstCPU;\n }\n\n dst[name] = res;\n return res;\n}\n\nexport interface PoolExtraInfo {\n childrenFlowCPU: number;\n childrenBurstCPU: number;\n}\n\nexport interface OperationInfo {\n name: string;\n type: 'operation';\n parent: string;\n attributes: object;\n cypressAttributes: object;\n flowCPU: number;\n burstCPU: number;\n flowGPU: number;\n integralType?: string;\n mode?: string;\n\n operationCount?: number;\n maxOperationCount?: number;\n maxRunningOperationCount?: number;\n\n pool: string;\n}\n\nexport interface PoolInfo extends Omit<OperationInfo, 'type' | 'pool'> {\n type: 'pool';\n incomplete?: boolean;\n children?: Array<PoolInfo>;\n leaves: Array<OperationInfo>;\n isEphemeral?: boolean;\n resources?: PoolResources;\n fifoIndex?: number;\n weight?: number;\n minShareRatio?: number;\n maxShareRatio?: number;\n fairShareRatio?: number;\n usageRatio?: number;\n demandRatio?: number;\n dominantResource?: number;\n runningOperationCount?: number;\n operationCount?: number;\n maxOperationCount?: number;\n childrenBurstCPU?: number;\n childrenFlowCPU?: number;\n accumulated?: number;\n accumulatedCpu?: number;\n burstDuration?: number;\n}\n\nexport type PoolResources = Partial<\n Record<'cpu' | 'gpu' | 'user_memory' | 'user_slots', PoolResourceDetails>\n>;\n\nexport type PoolResourceType = keyof PoolResources;\n\nexport type PoolResourceDetails = {\n min?: number;\n usage?: number;\n limit?: number;\n demand?: number;\n detailed?: number;\n guaranteed?: number;\n};\n\nexport const getPools = createSelector(\n [getPoolsPrepared, getSchedulingPoolsExtraInfo],\n (pools, extras) => {\n const res = map_(pools, (item) => {\n const itemExtra = extras[item.name] || {};\n return Object.assign(item, itemExtra);\n });\n return res;\n },\n);\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../common/hammer';\n\nimport reduce_ from 'lodash/reduce';\n\nfunction getNetworkResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Percent']((resourceUsage / resourceLimit) * 100);\n}\n\nfunction getMemoryResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Bytes'](resourceUsage) + ' / ' + hammer.format['Bytes'](resourceLimit);\n}\n\nfunction getDefaultResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Number'](resourceUsage) + ' / ' + hammer.format['Number'](resourceLimit);\n}\n\nfunction getResourcesText(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n switch (data.type) {\n case 'network':\n return getNetworkResourceText(resourceUsage, resourceLimit);\n case 'user_memory':\n return getMemoryResourceText(resourceUsage, resourceLimit);\n default:\n return getDefaultResourceText(resourceUsage, resourceLimit);\n }\n}\n\nfunction getResourceProgressValue(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n return (resourceUsage / resourceLimit) * 100;\n}\n\nfunction getResourceProgress(data) {\n return {\n text: getResourcesText(data),\n value: getResourceProgressValue(data),\n theme: 'info',\n };\n}\n\nexport function prepareResources(data) {\n const resourceUsage = ypath.getValue(data, '/resource_usage');\n const resourceLimits = ypath.getValue(data, '/resource_limits');\n const resourceTypes = ['cpu', 'user_memory', 'user_slots', 'network', 'gpu'];\n\n return reduce_(\n resourceTypes,\n (res, type) => {\n if (resourceUsage && resourceLimits) {\n const data = {\n type,\n usage: Number(ypath.getValue(resourceUsage[type], '')),\n limit: Number(ypath.getValue(resourceLimits[type], '')),\n };\n const progress = getResourceProgress(data);\n\n res.push({...data, progress});\n }\n return res;\n },\n [],\n );\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport hammer from '../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../store/selectors/global';\n\nimport {prepareResources} from '../../../utils/scheduling/overview';\nimport {childTableItems} from '../../../utils/scheduling/detailsTable';\nimport {poolsTableItems} from '../../../utils/scheduling/overviewTable';\nimport {\n ROOT_POOL_NAME,\n SCHEDULING_POOL_CHILDREN_TABLE_ID,\n SCHEDULING_POOL_TREE_TABLE_ID,\n} from '../../../constants/scheduling';\n\nimport {\n OperationInfo,\n PoolInfo,\n getPools as getPoolsImpl,\n getSchedulingPoolsMapByName,\n} from './scheduling-pools';\nimport {RootState} from '../../../store/reducers';\nimport {isAbcPoolName, isTopLevelPool} from '../../../utils/scheduling/pool';\nimport {visitTreeItems} from '../../../utils/utils';\nimport {getExpandedPoolsLoadAll, getSchedulingOperationsExpandedPools} from './expanded-pools';\nimport {\n getSchedulingAttributesToFilter,\n getSchedulingFilteredPoolNames,\n} from './attributes-to-filter';\nexport const getPools = getPoolsImpl;\n\nconst getExpandedPoolsIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.expandedPools;\n return !loaded && loading;\n};\n\nexport const getSchedulingIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.scheduling;\n return (!loaded && loading) || getExpandedPoolsIsInitialLoading(state);\n};\n\nexport const getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\nexport const getPoolChildrenFilter = (state: RootState) =>\n state.scheduling.scheduling.poolChildrenFilter;\nexport const getSchedulingTreeState = (state: RootState) => state.scheduling.scheduling.treeState;\nconst getContentModeRaw = (state: RootState) => state.scheduling.scheduling.contentMode;\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nexport const getTrees = (state: RootState) => state.scheduling.scheduling.trees;\n\nexport const getPool = (state: RootState) => state.scheduling.scheduling.pool;\n\nexport const getSchedulingEditItem = (state: RootState) => state.scheduling.scheduling.editItem;\n\nexport const getSortState = (state: RootState) => state.tables[SCHEDULING_POOL_TREE_TABLE_ID];\nexport const getPoolChildrenSortState = (state: RootState) =>\n state.tables[SCHEDULING_POOL_CHILDREN_TABLE_ID];\n\nexport const getPoolsNames = createSelector(\n getSchedulingAttributesToFilter,\n (pools): Array<string> => map_(pools, (_v, name) => name).sort(),\n);\n\nconst DETAILS_CONTENT_MODES = {\n cpu: 'cpu',\n memory: 'memory',\n gpu: 'gpu',\n user_slots: 'user_slots',\n operations: 'operations',\n integral: 'integral',\n};\n\nexport const getContentMode = createSelector([getContentModeRaw], (mode) => {\n return DETAILS_CONTENT_MODES[mode] || DETAILS_CONTENT_MODES.cpu;\n});\n\nexport const getIsRoot = createSelector(getPool, (pool) => pool === ROOT_POOL_NAME);\n\nexport const getTreesSelectItems = createSelector(getTrees, (trees) =>\n map_(trees, (tree) => ({\n value: tree,\n text: hammer.format['Readable'](tree) as string,\n })),\n);\n\nexport const getPoolsSelectItems = createSelector(getPoolsNames, (pools) => {\n const items = map_(pools, (pool) => ({\n value: pool,\n text: pool,\n }));\n\n return items;\n});\n\nexport const getCurrentPool = createSelector([getPool, getPools], (pool, pools) =>\n find_(pools, (item) => item.name === pool),\n);\n\nexport const getPoolIsEphemeral = createSelector([getCurrentPool], (currentPool) => {\n if (currentPool && currentPool.isEphemeral !== undefined) return currentPool.isEphemeral;\n return undefined;\n});\n\nexport const getCurrentPoolChildren = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.children;\n }\n\n return undefined;\n});\n\nexport const getCurrentPoolOperations = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.leaves;\n }\n\n return undefined;\n});\n\nexport const getResources = createSelector(\n [getCurrentPool, getTreeResources],\n (currentPool, resources) => {\n if (currentPool && currentPool.name !== '<Root>') {\n return prepareResources(currentPool.attributes);\n } else if (resources) {\n return prepareResources(resources);\n }\n\n return [];\n },\n);\n\nconst getFilteredTree = createSelector(\n [getCurrentPool, getSchedulingFilteredPoolNames],\n (treeRoot, visiblePools) => {\n if (treeRoot) {\n return hammer.treeList.filterTree(\n treeRoot,\n (pool: {name: string}) => {\n return visiblePools === undefined || visiblePools.has(pool.name);\n },\n true,\n );\n }\n return undefined;\n },\n);\n\nexport const getTableItems = createSelector(\n [getFilteredTree, getSortState],\n (filteredTree, sortState) => {\n if (filteredTree) {\n const isRoot = filteredTree && filteredTree.name === ROOT_POOL_NAME;\n const tree = isRoot ? filteredTree : {children: [filteredTree]};\n const sortedTree = hammer.treeList.sortTree(tree, sortState, poolsTableItems);\n\n return hammer.treeList.flattenTree(sortedTree);\n }\n\n return [];\n },\n);\n\nexport const getSchedulingOverviewMaxDepth = createSelector(\n [getTableItems, getExpandedPoolsLoadAll, getTree, getSchedulingOperationsExpandedPools],\n (items: Array<{level: number; name: string}>, allExpanded, tree, expandedPoolsMap) => {\n if (allExpanded) {\n return reduce_(\n items,\n (acc, item) => {\n const {level = 0} = item || {};\n return acc < level ? level : acc;\n },\n 0,\n );\n }\n\n const expandedPools = expandedPoolsMap[tree];\n if (!expandedPools?.size) {\n return 0;\n }\n\n return reduce_(\n items,\n (acc, item) => {\n if (expandedPools.has(item.name)) {\n return acc < item.level + 1 ? item.level + 1 : acc;\n }\n return acc;\n },\n 0,\n );\n },\n);\n\nconst getPoolChildrenData = createSelector(\n [getCurrentPool, getCurrentPoolChildren, getCurrentPoolOperations],\n (pool, pools, operations = []) => {\n if (pool && pools) {\n return [...pools, ...operations];\n }\n\n return undefined;\n },\n);\n\nconst getFilteredPoolChildren = createSelector(\n [getPoolChildrenData, getPoolChildrenFilter],\n (poolChildrenData, poolChildrenFilter) => {\n return hammer.filter.filter({\n data: poolChildrenData,\n input: poolChildrenFilter,\n factors: ['name'],\n });\n },\n);\n\nexport const getSortedPoolChildren = createSelector(\n [getFilteredPoolChildren, getPoolChildrenSortState, getCurrentPool],\n (filteredPoolChildren, poolChildrenSortState, currentPool) => {\n return hammer.utils.sort(filteredPoolChildren, poolChildrenSortState, childTableItems, {\n addGetParams: [currentPool],\n groupBy: {\n asc: true,\n get(item: PoolInfo | OperationInfo) {\n return item.type === 'operation' ? 0 : 1;\n },\n },\n });\n },\n);\n\nexport const getPollChildrenTableItems = createSelector(\n [getCurrentPool, getSortedPoolChildren],\n (currentPool, sortedPoolChildren) => {\n const extras = [];\n let isChildPool = false;\n if (currentPool && currentPool.name !== ROOT_POOL_NAME) {\n extras.push(currentPool);\n isChildPool = true;\n }\n\n return extras.concat(\n map_(sortedPoolChildren, (item) => {\n return Object.assign({}, item, {isChildPool});\n }),\n );\n },\n);\n\n// The same cluster is ready for bundle's ACL\nconst CLUSTERS_WITHOUT_POOL_ACL = ['locke'];\n\nexport const isPoolAclAllowed = createSelector([getCluster], (cluster) => {\n return CLUSTERS_WITHOUT_POOL_ACL.indexOf(cluster) === -1;\n});\n\nexport const getCurrentPoolPath = createSelector(\n [getPool, getPools, getTree],\n (pool, pools, tree) => {\n return calculatePoolPath(pool, pools, tree);\n },\n);\n\nexport function calculatePoolPath(pool: string, pools: Array<PoolInfo>, tree: string) {\n const prefix = `//sys/pool_trees/${tree}`;\n\n let current = pool;\n const path = [];\n while (current) {\n if (current !== ROOT_POOL_NAME) {\n path.push(current);\n }\n const tmp = current;\n const {parent} = find_(pools, ({name}) => name === tmp) || {};\n current = parent || '';\n }\n const pathStr = !path.length ? '' : '/' + path.reverse().join('/');\n return `${prefix}${pathStr}`;\n}\n\nexport const getSchedulingTopPoolOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingPoolsMapByName],\n (pool, mapOfPools) => {\n if (isAbcPoolName(pool?.name)) {\n return undefined;\n }\n\n if (isTopLevelPool(pool)) {\n return pool;\n }\n\n let item = pool;\n while (item) {\n const parent = mapOfPools[item.parent];\n if (isAbcPoolName(item.parent)) {\n return item;\n }\n\n if (isTopLevelPool(item)) {\n return item;\n }\n\n item = parent;\n }\n return undefined;\n },\n);\n\nexport const getSchedulingSourcesOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingTopPoolOfEditItem, getSchedulingPoolsMapByName],\n (pool, topPool, mapOfPools): Array<string> => {\n if (!pool?.name || !mapOfPools) {\n return [];\n }\n\n const res: Array<string> = [];\n visitTreeItems(\n topPool,\n (item: PoolInfo) => {\n if (pool.name !== item.name) {\n res.push(item.name);\n }\n },\n {\n isNeedToSkipChildren: (item: PoolInfo) => {\n return item?.name === pool?.name;\n },\n },\n );\n\n return res;\n },\n);\n\nexport const getSchedulingSourcesOfEditItemSkipParent = createSelector(\n [getSchedulingEditItem, getSchedulingSourcesOfEditItem],\n (pool, sources) => {\n if (!pool?.parent) {\n return sources;\n }\n\n return filter_(sources, (item) => item !== pool.parent);\n },\n);\n","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\n","import concat_ from 'lodash/concat';\nimport reduce_ from 'lodash/reduce';\n\nexport function injectColumnsFromSchema(\n columns: Array<string>,\n omittedColumns: Array<string>,\n schemaColumns: Array<string>,\n) {\n const toSkip = reduce_(\n concat_(columns, omittedColumns),\n (acc, column) => {\n acc[column] = true;\n return acc;\n },\n {} as {[column: string]: true},\n );\n const toAdd = reduce_(\n schemaColumns,\n (acc, col) => {\n if (!toSkip[col]) {\n acc.push(col);\n }\n return acc;\n },\n [] as Array<string>,\n );\n return concat_(columns, toAdd);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport unipika from '../../common/thor/unipika';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Yson from '../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * See unipika for more details\n */\nexport type UnipikaValueType = Array<string | UnipikaValueType>;\n\nexport type YqlValueProps = {\n value?: unknown;\n type: UnipikaValueType;\n settings: UnipikaSettings;\n inline?: boolean;\n};\n\nexport default class YqlValue extends React.Component<YqlValueProps> {\n static propTypes = {\n settings: PropTypes.object,\n value: PropTypes.any,\n type: PropTypes.array,\n inline: PropTypes.bool,\n };\n\n static defaultProps = {\n inline: false,\n folding: false,\n settings: Yson.defaultUnipikaSettings,\n };\n\n static getFormattedValue(value: unknown, type: UnipikaValueType, settings: UnipikaSettings) {\n const yqlValue = [value, type];\n\n return settings.format === 'raw-json'\n ? unipika.formatRaw(yqlValue, settings)\n : unipika.formatFromYQL(yqlValue, settings);\n }\n\n render() {\n const {value, type, inline, settings} = this.props;\n\n const formattedValue = YqlValue.getFormattedValue(value, type, settings);\n\n let title;\n\n if (inline) {\n const titleSettings = Object.assign({}, settings, {\n asHTML: false,\n });\n\n title =\n settings.format === 'raw-json'\n ? unipika.formatRaw(value, titleSettings)\n : unipika.formatFromYQL(value, titleSettings);\n }\n\n const classes = block('unipika-wrapper')({\n inline: inline && 'yes',\n });\n\n return (\n <ErrorBoundary>\n {settings.asHTML ? (\n <div className={classes} title={title} dir=\"auto\">\n <pre\n className=\"unipika\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n </div>\n ) : (\n <div\n className={classes}\n title={title}\n dir=\"auto\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n )}\n </ErrorBoundary>\n );\n }\n}\n","import React, {useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport copyToClipboard from 'copy-to-clipboard';\n\nimport {Button, Flex, Icon as UIKitIcon} from '@gravity-ui/uikit';\nimport {Eye} from '@gravity-ui/icons';\n\nimport unipika from '../../common/thor/unipika';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport YqlValue from '../../components/YqlValue/YqlValue';\nimport Yson from '../../components/Yson/Yson';\nimport Label from '../../components/Label/Label';\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\nimport './ColumnCell.scss';\n\nconst block = cn('yt-column-cell');\n\nfunction unquote(v: string) {\n const match = /^\"(.*)\"$/.exec(v);\n return match ? match[1] : v;\n}\n\ntype CellValueType =\n | null\n | (CellValueData & {\n $incomplete?: boolean;\n [k: number]: {inc?: boolean};\n });\n\ntype CellValueData = {$type: string; $value: string} | {$type?: undefined; $value: unknown};\n\ntype ColumnCellProps = {\n className?: string;\n\n value?: CellValueType | null;\n yqlTypes: Array<TypeArray> | null;\n ysonSettings: UnipikaSettings;\n allowRawStrings?: boolean | null;\n rowIndex: number;\n columnName: string;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void;\n};\n\nexport function ColumnCell({\n value = null,\n yqlTypes,\n ysonSettings,\n allowRawStrings,\n className,\n rowIndex,\n columnName,\n onShowPreview,\n}: ColumnCellProps) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const formatType = yqlTypes && value ? yqlTypes[Number(value[1])] : undefined;\n\n const escapedValue =\n formatType && value\n ? YqlValue.getFormattedValue(value[0], formatType, {\n ...ysonSettings,\n asHTML: false,\n })\n : unipika.prettyprint(value, {...ysonSettings, asHTML: false});\n const formattedValue =\n formatType && value ? (\n <YqlValue value={value[0]} type={formatType} settings={ysonSettings} />\n ) : (\n <Yson value={value} settings={ysonSettings} />\n );\n\n const {tag, isIncompleteTagged, isIncompleteValue} = React.useMemo(() => {\n let isIncompleteTagged = false;\n let isIncompleteValue = false;\n let tag: string | undefined;\n\n if (value && formatType) {\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$tag} = unipika.converters.yql([value[0], formatType], ysonSettings, flags);\n\n isIncompleteValue = flags.incomplete;\n isIncompleteTagged = flags.incomplete && $tag;\n tag = $tag;\n } else if (value) {\n isIncompleteValue = Boolean(value.$incomplete);\n }\n\n return {tag, isIncompleteTagged, isIncompleteValue};\n }, [value, formatType, ysonSettings]);\n\n const allowRawCopy = value?.$type === 'string';\n const useRawString = allowRawCopy && allowRawStrings;\n let copyTooltip = 'Hold SHIFT-key to copy raw value';\n if (useRawString) {\n copyTooltip = 'Hold SHIFT-key to copy escaped value';\n }\n\n const visibleValue = !useRawString ? (\n formattedValue\n ) : (\n <div className={'unipika-wrapper'}>\n <pre className={'unipika'}>\n <span className={'string'}>{value?.$value}</span>\n </pre>\n </div>\n );\n\n return (\n <div\n className={block(null, className) /*dataTableBlock('value')*/}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isIncompleteTagged ? (\n <Label theme=\"warning\" text={`Incomplete '${tag}' type`} />\n ) : (\n visibleValue\n )}\n {(hovered || isIncompleteTagged) && (\n <div className={block('control-button-wrapper')}>\n <Flex alignItems=\"center\">\n {value && !isIncompleteValue && (\n <Tooltip\n content={\n !allowRawCopy ? undefined : (\n <span className={block('copy-value-tooltip')}>\n {copyTooltip}\n </span>\n )\n }\n >\n <ClipboardButton\n view=\"flat-secondary\"\n size=\"m\"\n text={useRawString ? value.$value : unquote(escapedValue)}\n onCopy={(event: React.MouseEvent) => {\n if (event?.shiftKey && allowRawCopy) {\n copyToClipboard(\n useRawString ? unquote(escapedValue) : value.$value,\n );\n }\n }}\n />\n </Tooltip>\n )}\n {isIncompleteValue && (\n <Button\n view=\"flat-secondary\"\n size=\"m\"\n qa=\"truncated-preview-button\"\n onClick={() => onShowPreview(columnName, rowIndex, tag)}\n >\n <UIKitIcon data={Eye} size=\"12\" />\n </Button>\n )}\n </Flex>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport SchemaDataType from '../../components/SchemaDataType/SchemaDataType';\nimport Yson from '../../components/Yson/Yson';\nimport unipika from '../../common/thor/unipika';\nimport Icon from '../../components/Icon/Icon';\nimport {ColumnCell} from '../../components/ColumnCell/ColumnCell';\n\nimport map_ from 'lodash/map';\n\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport type {YsonSettings} from '../../store/selectors/thor/unipika';\n\nexport function prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n}: {\n columns: {name: string; sortOrder?: string}[];\n keyColumns: string[];\n yqlTypes: TypeArray[] | null;\n ysonSettings: YsonSettings;\n useRawStrings: boolean | null | undefined;\n schemaByName: Record<string, any>;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void;\n}) {\n return map_(columns, (column) => {\n const render = ({value, index}: {value?: any; index: number; row: any}) => (\n <ColumnCell\n allowRawStrings={useRawStrings}\n value={value}\n yqlTypes={yqlTypes || []}\n ysonSettings={ysonSettings}\n rowIndex={index}\n columnName={column.name}\n onShowPreview={onShowPreview}\n />\n );\n const {sortOrder} = column;\n const isKeyColumn = keyColumns.indexOf(column.name) > -1;\n const {type_v3} = schemaByName[column.name] || {};\n const header = (\n <Tooltip content={Boolean(type_v3) && <SchemaDataType type_v3={type_v3} />}>\n <Yson value={unipika.unescapeKeyValue(column.name)} settings={ysonSettings} inline>\n {isKeyColumn && (\n <Icon\n awesome={\n sortOrder === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n </Yson>\n </Tooltip>\n );\n return Object.assign({}, column, {render, header});\n });\n}\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\nimport type {PoolInfo, PoolResourceType} from '../../store/selectors/scheduling/scheduling-pools';\n\nfunction prepareDetailedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.detailed;\n },\n sort: true,\n caption: 'Abs fair share',\n align: 'right',\n };\n}\n\nfunction prepareLimitColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.limit;\n },\n sort: true,\n sortWithUndefined: true,\n caption: 'Limit',\n align: 'right',\n };\n}\n\nfunction prepareMinResourcesColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.min;\n },\n sort: true,\n caption: 'Strong guar.',\n title: 'Strong guarantee',\n align: 'right',\n };\n}\n\nfunction prepareAbsGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.guaranteed;\n },\n sort: true,\n caption: 'Estimated guar.',\n title: 'Estimated guarantee',\n align: 'right',\n };\n}\n\nfunction prepareRelGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsGuaranteedColumn(resource).get(item)! /\n prepareAbsGuaranteedColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel guaranteed',\n align: 'right',\n };\n}\n\nfunction prepareAbsDemandColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.demand;\n },\n sort: true,\n caption: 'Abs demand',\n align: 'right',\n };\n}\n\nfunction prepareAbsUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.usage;\n },\n sort: true,\n caption: 'Abs usage',\n align: 'right',\n };\n}\n\nfunction prepareRelUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsUsageColumn(resource).get(item)! /\n prepareAbsUsageColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel usage',\n align: 'right',\n };\n}\n\nfunction prepareGuaranteedUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return {\n guaranteed: prepareRelGuaranteedColumn(resource).get(item, currentPool),\n usage: prepareRelUsageColumn(resource).get(item, currentPool),\n };\n },\n caption: 'Usage / Guaranteed',\n align: 'center',\n };\n}\n\nexport const childTableItems = {\n name: {\n sort(item: PoolInfo) {\n return item.name;\n },\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n },\n mode: {\n sort(item: PoolInfo) {\n return item.mode;\n },\n align: 'center',\n },\n FI: {\n sort(item: PoolInfo) {\n return item.fifoIndex;\n },\n align: 'center',\n },\n weight: {\n sort(item: PoolInfo) {\n return item.weight;\n },\n align: 'right',\n },\n min_share: {\n sort(item: PoolInfo) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n max_share: {\n sort(item: PoolInfo) {\n return item.maxShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n get(item: PoolInfo) {\n return item.fairShareRatio;\n },\n sort: true,\n align: 'right',\n },\n usage: {\n get(item: PoolInfo) {\n return item.usageRatio;\n },\n sort: true,\n align: 'right',\n },\n demand: {\n get(item: PoolInfo) {\n return item.demandRatio;\n },\n sort: true,\n align: 'right',\n },\n fair_share_usage: {\n caption: 'Usage / Fair share',\n align: 'left',\n },\n dominant_resource: {\n sort(item: PoolInfo) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n\n resource_detailed_cpu: prepareDetailedColumn('cpu'),\n resource_detailed_memory: prepareDetailedColumn('user_memory'),\n resource_detailed_gpu: prepareDetailedColumn('gpu'),\n resource_detailed_user_slots: prepareDetailedColumn('user_slots'),\n\n resource_limit_cpu: prepareLimitColumn('cpu'),\n resource_limit_memory: prepareLimitColumn('user_memory'),\n resource_limit_gpu: prepareLimitColumn('gpu'),\n resource_limit_user_slots: prepareLimitColumn('user_slots'),\n\n min_resources_cpu: prepareMinResourcesColumn('cpu'),\n min_resources_memory: prepareMinResourcesColumn('user_memory'),\n min_resources_gpu: prepareMinResourcesColumn('gpu'),\n min_resources_user_slots: prepareMinResourcesColumn('user_slots'),\n\n abs_guaranteed_cpu: prepareAbsGuaranteedColumn('cpu'),\n abs_guaranteed_memory: prepareAbsGuaranteedColumn('user_memory'),\n abs_guaranteed_gpu: prepareAbsGuaranteedColumn('gpu'),\n abs_guaranteed_user_slots: prepareAbsGuaranteedColumn('user_slots'),\n\n rel_guaranteed_cpu: prepareRelGuaranteedColumn('cpu'),\n rel_guaranteed_memory: prepareRelGuaranteedColumn('user_memory'),\n rel_guaranteed_gpu: prepareRelGuaranteedColumn('gpu'),\n rel_guaranteed_user_slots: prepareRelGuaranteedColumn('user_slots'),\n\n abs_usage_cpu: prepareAbsUsageColumn('cpu'),\n abs_usage_memory: prepareAbsUsageColumn('user_memory'),\n abs_usage_gpu: prepareAbsUsageColumn('gpu'),\n abs_usage_user_slots: prepareAbsUsageColumn('user_slots'),\n\n abs_demand_cpu: prepareAbsDemandColumn('cpu'),\n abs_demand_memory: prepareAbsDemandColumn('user_memory'),\n abs_demand_gpu: prepareAbsDemandColumn('gpu'),\n abs_demand_user_slots: prepareAbsDemandColumn('user_slots'),\n\n rel_usage_cpu: prepareRelUsageColumn('cpu'),\n rel_usage_memory: prepareRelUsageColumn('user_memory'),\n rel_usage_gpu: prepareRelUsageColumn('gpu'),\n rel_usage_user_slots: prepareRelUsageColumn('user_slots'),\n\n guaranteed_usage_cpu: prepareGuaranteedUsageColumn('cpu'),\n guaranteed_usage_memory: prepareGuaranteedUsageColumn('user_memory'),\n guaranteed_usage_gpu: prepareGuaranteedUsageColumn('gpu'),\n guaranteed_usage_user_slots: prepareGuaranteedUsageColumn('user_slots'),\n\n operation_overview: {\n get(item: PoolInfo) {\n return [item.operationCount, item.runningOperationCount];\n },\n caption: 'Operations',\n sort: true,\n align: 'right',\n },\n operation_count: {\n get(item: PoolInfo) {\n return item.operationCount;\n },\n sort: true,\n align: 'right',\n },\n max_operation_count: {\n get(item: PoolInfo) {\n return item.maxOperationCount;\n },\n sort: true,\n align: 'right',\n },\n operation_progress: {\n get(item: PoolInfo) {\n return item.operationCount! / item.maxOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.operationCount)} / ${format.Number(\n item.maxOperationCount,\n )}`;\n },\n caption: 'Total operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n running_operation_count: {\n get(item: PoolInfo) {\n return item.runningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n max_running_operation_count: {\n get(item: PoolInfo) {\n return item.maxRunningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n running_operation_progress: {\n get(item: PoolInfo) {\n return item.runningOperationCount! / item.maxRunningOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.runningOperationCount)} / ${format.Number(\n item.maxRunningOperationCount,\n )}`;\n },\n caption: 'Running operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n\n integral_type: {\n get(item: PoolInfo) {\n const res = item.integralType;\n return res === 'none' ? undefined : res;\n },\n caption: 'Guarantee type',\n sort: true,\n align: 'right',\n sortWithUndefined: true,\n },\n burst_cpu: {\n get(item: PoolInfo) {\n return item.burstCPU;\n },\n sort(item: PoolInfo) {\n const res = item.burstCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Burst CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n flow_cpu: {\n get(item: PoolInfo) {\n return item.flowCPU;\n },\n sort(item: PoolInfo) {\n const res = item.flowCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Flow CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n children_burst_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenBurstCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's burst CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n children_flow_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenFlowCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's flow CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n accumulated: {\n get(item: PoolInfo) {\n return item.accumulated;\n },\n caption: 'Acc ratio volume',\n sortWithUndefined: true,\n sort: true,\n align: 'right',\n },\n accumulated_cpu: {\n get(item: PoolInfo) {\n return item.accumulatedCpu;\n },\n caption: 'Acc CPU volume',\n sort: true,\n align: 'right',\n },\n burst_duration: {\n get(item: PoolInfo) {\n return item.burstDuration;\n },\n caption: 'Est burst usage duration ',\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import React from 'react';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\n\nexport const poolsTableItems = {\n type: {\n caption: '',\n align: 'center',\n },\n name: {\n sort: true,\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n get(item) {\n return item.name;\n },\n },\n mode: {\n sort: true,\n align: 'center',\n get(item) {\n return item.mode;\n },\n },\n FI: {\n sort: true,\n align: 'right',\n title: 'FIFO Index',\n get(item) {\n return item.fifoIndex;\n },\n },\n weight: {\n sort: true,\n align: 'right',\n title: 'Effective weight',\n get(item) {\n return item.weight;\n },\n },\n operation_overview: {\n caption: 'Operations',\n sort: true,\n align: 'center',\n get(item) {\n return [item.operationCount, item.runningOperationCount];\n },\n },\n dominant_resource: {\n sort(item) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n min_share: {\n caption: 'Guarantee',\n title: 'Effective dominant strong guarantee share',\n sort(item) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n sort: true,\n title: 'Dominant fair share',\n align: 'right',\n get(item) {\n return item.fairShareRatio;\n },\n },\n usage: {\n sort: true,\n title: 'Dominant usage share',\n align: 'right',\n get(item) {\n return item.usageRatio;\n },\n },\n demand: {\n sort: true,\n title: 'Dominant demand share',\n align: 'right',\n get(item) {\n return item.demandRatio;\n },\n },\n fair_share_usage: {\n sort: true,\n caption: 'Usage / Fair share',\n align: 'center',\n sortWithUndefined: true,\n get(item) {\n const {fairShareRatio, usageRatio} = item;\n const x = Number(usageRatio) / Number(fairShareRatio);\n if (isNaN(usageRatio) || isNaN(fairShareRatio) || isNaN(x)) {\n return undefined;\n }\n return x;\n },\n },\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\n\nexport function isAbcPoolName(name?: string) {\n return name?.startsWith('abc:');\n}\n\nexport function isTopLevelPool(pool?: PoolInfo) {\n const {parent} = pool || {};\n\n return parent === ROOT_POOL_NAME;\n}\n","import find_ from 'lodash/find';\nimport indexOf_ from 'lodash/indexOf';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {OperationInfo, PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\nimport {attachTreeLeaves, prepareTree} from '../../common/hammer/tree-list';\n\nfunction getPool(pools: Array<PoolInfo>, name: string) {\n return find_(pools, (pool) => pool.name === name);\n}\n\nexport function prepareTrees(trees: Array<unknown>) {\n return map_(trees, (tree) => ypath.getValue(tree, '')).sort();\n}\n\nexport function prepareCurrentTree(defaultTree: unknown, trees: Array<string>, tree: string) {\n return tree !== '' && trees.indexOf(tree) !== -1\n ? tree\n : ypath.getValue(defaultTree, '') || trees[0];\n}\n\nexport function preparePools(\n pools: Record<string, PoolInfo>,\n operations: Record<string, OperationInfo>,\n) {\n const treeNodesMap = prepareTree<PoolInfo, OperationInfo>(pools, (entry: PoolInfo) =>\n ypath.getValue(entry, '/parent'),\n );\n\n attachTreeLeaves(treeNodesMap, operations, (operation: OperationInfo) =>\n ypath.getValue(operation, '/pool'),\n );\n\n return map_(treeNodesMap);\n}\n\nexport function computePathItems(pools: Array<PoolInfo>, name: string) {\n let pool: PoolInfo | undefined =\n getPool(pools, name) || ({parent: ROOT_POOL_NAME, name} as PoolInfo);\n const pathItems = [];\n\n // Unknown pool or dynamically created pool\n while (pool) {\n pathItems.unshift(pool.name);\n\n pool = getPool(pools, pool.parent);\n }\n\n return pathItems;\n}\n\nexport function computePoolPath(pool: PoolInfo, pools: Array<PoolInfo>) {\n const partitions = [pool.name];\n let parent: string | undefined = pool.parent;\n\n while (parent && parent !== ROOT_POOL_NAME) {\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n const parentPool = find_(pools, (item) => item.name === parent);\n partitions.unshift(parentPool?.name!);\n parent = parentPool?.parent;\n }\n\n return partitions.join('/');\n}\n\n/* eslint-disable prefer-const */\nexport function flattenAttributes(obj: any) {\n const toReturn: any = {};\n const object = ypath.getValue(obj);\n\n for (let i in object) {\n if (!Object.hasOwnProperty.call(object, i)) {\n continue;\n }\n\n const innerObject = ypath.getValue(object[i]);\n if (\n typeof innerObject === 'object' &&\n !Object.is(innerObject, null) &&\n Object.keys(innerObject).length > 0\n ) {\n toReturn[i] = object[i];\n\n const flatObject = flattenAttributes(object[i]);\n for (let x in flatObject) {\n if (!Object.hasOwnProperty.call(flatObject, x)) {\n continue;\n }\n\n toReturn[x] = flatObject[x];\n }\n } else {\n toReturn[i] = object[i];\n }\n }\n\n return toReturn;\n}\n\nfunction getResourceLimit(pool: PoolInfo | undefined, limitKey: string): number | '' {\n const value = Number(ypath.getValue(pool, `/cypressAttributes/resource_limits/${limitKey}`));\n return isNaN(value) ? '' : value;\n}\n\nfunction prepareValueDetails(pool: PoolInfo | undefined, path: string) {\n if (!pool) {\n return {};\n }\n\n const value = Number(ypath.getValue(pool, path));\n const childrenSum = prepareMinGuaranteed(pool, path);\n\n return {\n value: isNaN(value) ? undefined : value,\n childrenSum: isNaN(childrenSum!) ? undefined : childrenSum,\n };\n}\n\nfunction prepareMinGuaranteed(pool?: PoolInfo, path = '') {\n const res = reduce_(\n pool?.children,\n (sum, item) => {\n const tmp = Number(ypath.getValue(item, path) || 0);\n return isNaN(tmp) ? sum : tmp + firstValidNumber(sum, 0)!;\n },\n NaN,\n );\n return isNaN(res) ? undefined : res;\n}\n\nfunction firstValidNumber(...args: number[]) {\n for (let i = 0; i < args.length; ++i) {\n if (!isNaN(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nexport const INTEGRAL_GUARANTEES_PREFIX = 'integral_guarantees/';\n\nexport const POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR = {\n guaranteeType: INTEGRAL_GUARANTEES_PREFIX + 'guarantee_type',\n burstCpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/cpu',\n burstRam: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/memory',\n burstGpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/gpu',\n flowCpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/cpu',\n flowRam: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/memory',\n flowGpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/gpu',\n};\n\nexport const POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE = {\n cpuStrong: 'strong_guarantee_resources/cpu',\n gpuStrong: 'strong_guarantee_resources/gpu',\n memoryStrong: 'strong_guarantee_resources/memory',\n //userSlotsStrong: 'strong_guarantee_resources/user_slots',\n};\n\nexport const POOL_GENERAL_TYPE_TO_ATTRIBUTE = {\n maxOperationCount: 'max_operation_count',\n maxRunningOperationCount: 'max_running_operation_count',\n};\n\nexport const POOL_RESOURCE_TYPE_TO_ATTRIBUTE = {\n ...POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n ...POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE,\n ...POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR,\n};\n\nexport type PoolStrongResourceType = keyof typeof POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE;\nexport type PoolIntegralResourceType = keyof typeof POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR;\nexport type PoolGeneralResourceType = keyof typeof POOL_GENERAL_TYPE_TO_ATTRIBUTE;\nexport type PoolResourceType = keyof typeof POOL_RESOURCE_TYPE_TO_ATTRIBUTE;\n\nexport function getPoolResourceInfo(pool: PoolInfo, type: PoolResourceType) {\n const path = '/cypressAttributes/' + POOL_RESOURCE_TYPE_TO_ATTRIBUTE[type];\n return prepareValueDetails(pool, path);\n}\n\nexport interface InitialPoolResourceInfo {\n limit?: number;\n source?: string;\n}\n\nexport function getPoolResourceInitialValue(\n pool: PoolInfo | undefined,\n type: PoolResourceType,\n allowSource: boolean,\n): InitialPoolResourceInfo {\n if (!pool) {\n return {};\n }\n const {value} = getPoolResourceInfo(pool, type);\n return {\n limit: value,\n source: allowSource ? pool.parent : undefined,\n };\n}\n\nexport function getInitialValues(editItem: PoolInfo | undefined, allowedSources: Array<string>) {\n const slug = ypath.getValue(editItem, '/abc/slug');\n\n const allowSource = -1 !== indexOf_(allowedSources, editItem?.parent);\n\n return {\n general: {\n name: editItem?.name,\n abcService: slug\n ? {\n key: slug,\n value: slug,\n title: ypath.getValue(editItem, '/abc/name'),\n }\n : undefined,\n parent: editItem?.parent,\n mode: editItem?.mode,\n weight: ypath.getNumber(editItem, '/cypressAttributes/weight'),\n maxOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxOperationCount', allowSource),\n {source: undefined},\n ),\n maxRunningOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxRunningOperationCount', allowSource),\n {source: undefined},\n ),\n },\n resourceGuarantee: {\n cpuStrong: getPoolResourceInitialValue(editItem, 'cpuStrong', allowSource),\n gpuStrong: getPoolResourceInitialValue(editItem, 'gpuStrong', allowSource),\n memoryStrong: getPoolResourceInitialValue(editItem, 'memoryStrong', allowSource),\n //userSlotsStrong: getPoolResourceInitialValue(editItem, 'userSlotsStrong', allowSource),\n },\n integralGuarantee: {\n guaranteeType:\n ypath.getValue(\n editItem,\n `/cypressAttributes/${POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR.guaranteeType}`,\n ) || 'none',\n burstCpu: getPoolResourceInitialValue(editItem, 'burstCpu', allowSource),\n burstRam: getPoolResourceInitialValue(editItem, 'burstRam', allowSource),\n burstGpu: getPoolResourceInitialValue(editItem, 'burstGpu', allowSource),\n flowCpu: getPoolResourceInitialValue(editItem, 'flowCpu', allowSource),\n flowRam: getPoolResourceInitialValue(editItem, 'flowRam', allowSource),\n flowGpu: getPoolResourceInitialValue(editItem, 'flowGpu', allowSource),\n },\n resourceLimits: {\n cpu: getResourceLimit(editItem, 'cpu'),\n gpu: getResourceLimit(editItem, 'gpu'),\n memory: getResourceLimit(editItem, 'memory'),\n userSlots: getResourceLimit(editItem, 'user_slots'),\n },\n otherSettings: {\n forbidImmediateOperations: ypath.getBoolean(editItem, '/forbidImmediateOperations'),\n fifoSortParams: ypath.getValue(editItem, '/fifoSortParams'),\n createEphemeralSubpools: ypath.getBoolean(editItem, '/createEphemeralSubpools'),\n },\n };\n}\n","export function isImageTag(value: string) {\n return /image\\/.*/.test(value);\n}\n\nexport function isVideoTag(value: string) {\n return /video\\/.*/.test(value);\n}\n\nexport function isMediaTag(value: string) {\n return isImageTag(value) || isVideoTag(value);\n}\n","import { I18N } from '@gravity-ui/i18n';\nimport en from './keysets/en.json';\nimport ru from './keysets/ru.json';\nconst i18nFactory = new I18N();\nconst EN = 'en';\nconst RU = 'ru';\ni18nFactory.registerKeysets(EN, en);\ni18nFactory.registerKeysets(RU, ru);\nconst i18n = i18nFactory.i18n.bind(i18nFactory);\nexport { i18nFactory, i18n };\n","export const CHARTKIT_ERROR_CODE = {\n NO_DATA: 'ERR.CK.NO_DATA',\n INVALID_DATA: 'ERR.CK.INVALID_DATA',\n UNKNOWN: 'ERR.CK.UNKNOWN_ERROR',\n UNKNOWN_PLUGIN: 'ERR.CK.UNKNOWN_PLUGIN',\n TOO_MANY_LINES: 'ERR.CK.TOO_MANY_LINES',\n};\nexport class ChartKitError extends Error {\n constructor({ originalError, message, code = CHARTKIT_ERROR_CODE.UNKNOWN, } = {}) {\n super(message);\n this.isCustomError = true;\n this.code = code;\n if (originalError) {\n this.name = originalError.name;\n this.stack = originalError.stack;\n }\n }\n}\nexport const isChartKitError = (error) => {\n return error instanceof Error && 'isCustomError' in error;\n};\n","import isObject from 'lodash/isObject';\nimport mergeWith from 'lodash/mergeWith';\n// @ts-ignore\nexport function mergeSettingStrategy(objValue, srcValue, key) {\n if (key === 'plugins') {\n const currentPlugins = [...objValue];\n const newPlugins = [...srcValue];\n // modify existing plugins\n let newSettingsPlugins = currentPlugins.map((currentPlugin) => {\n const newPluginIndex = newPlugins.findIndex(({ type }) => type === currentPlugin.type);\n if (newPluginIndex !== -1) {\n const newPlugin = newPlugins[newPluginIndex];\n newPlugins.splice(newPluginIndex, 1);\n return {\n type: currentPlugin.type,\n renderer: newPlugin.renderer,\n };\n }\n return currentPlugin;\n });\n // add new plugins if it exist after modified\n if (newPlugins.length > 0) {\n newSettingsPlugins = [...newSettingsPlugins, ...newPlugins];\n }\n return newSettingsPlugins;\n }\n if (isObject(objValue)) {\n return mergeWith(objValue, srcValue, mergeSettingStrategy);\n }\n return srcValue;\n}\n","import { configure } from '@gravity-ui/uikit';\nimport get from 'lodash/get';\nimport mergeWith from 'lodash/mergeWith';\nimport { i18nFactory } from '../../i18n';\nimport { EventEmitter } from './eventEmitter';\nimport { mergeSettingStrategy } from './mergeSettingStrategy';\nexport const settingsEventEmitter = new EventEmitter();\nconst removeUndefinedValues = (data) => {\n return Object.entries(data).reduce((acc, [key, value]) => {\n if (typeof value !== 'undefined') {\n acc[key] = value;\n }\n return acc;\n }, {});\n};\nconst updateLang = (lang) => {\n configure({ lang });\n i18nFactory.setLang(lang);\n};\nclass ChartKitSettings {\n constructor() {\n this.settings = {\n plugins: [],\n lang: 'en',\n };\n updateLang(this.get('lang'));\n }\n get(key) {\n return get(this.settings, key);\n }\n set(updates) {\n const filteredUpdates = removeUndefinedValues(updates);\n this.settings = mergeWith(this.settings, filteredUpdates, mergeSettingStrategy);\n if (filteredUpdates.lang) {\n const lang = filteredUpdates.lang || this.get('lang');\n updateLang(lang);\n settingsEventEmitter.dispatch('change-lang', lang);\n }\n }\n}\nexport const settings = new ChartKitSettings();\n","export class EventEmitter {\n constructor() {\n this.events = {};\n }\n on(type, event) {\n if (this.events[type]) {\n this.events[type].push(event);\n }\n else {\n this.events[type] = [event];\n }\n }\n off(type, eventId) {\n if (this.events[type]) {\n this.events[type] = this.events[type].filter(({ id }) => id !== eventId);\n }\n }\n dispatch(type, args) {\n if (this.events[type]) {\n this.events[type].forEach(({ action }) => {\n action(args);\n });\n }\n }\n}\n","import { withNaming } from '@bem-react/classname';\nexport const NAMESPACE = 'chartkit-';\nexport const cn = withNaming({ e: '__', m: '_' });\nexport const block = withNaming({ n: NAMESPACE, e: '__', m: '_' });\n","export const randomString = (length, chars) => {\n let result = '';\n for (let i = length; i > 0; --i) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n};\nexport const getRandomCKId = () => `ck.${randomString(10, '0123456789abcdefghijklmnopqrstuvwxyz')}`;\n","import * as React from 'react';\nconst ChevronLeft = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.53 2.97a.75.75 0 0 1 0 1.06L6.56 8l3.97 3.97a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 0Z\", clipRule: \"evenodd\" })));\nexport default ChevronLeft;\n","import * as React from 'react';\nconst ChevronRight = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0Z\", clipRule: \"evenodd\" })));\nexport default ChevronRight;\n","import * as React from 'react';\nconst Ellipsis = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M3 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\", clipRule: \"evenodd\" })));\nexport default Ellipsis;\n","import React from 'react';\nexport const AlertContext = React.createContext(null);\n","'use client';\nimport React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const useAlertContext = () => {\n const context = React.useContext(AlertContext);\n if (!context)\n throw new Error('Alert: `useAlertContext` hook is used out of \"AlertContext\"');\n return context;\n};\n","'use client';\nimport React from 'react';\nimport { Button } from '../Button';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertAction = (props) => {\n const { view } = useAlertContext();\n return React.createElement(Button, Object.assign({ view: view === 'filled' ? 'normal-contrast' : undefined }, props));\n};\n","import { block } from '../utils/cn';\nimport './Alert.css';\nexport const DEFAULT_ICON_SIZE = 18;\nexport const bAlert = block('alert');\n","'use client';\nimport React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const AlertContextProvider = ({ layout, view, children }) => {\n return React.createElement(AlertContext.Provider, { value: { layout, view } }, children);\n};\n","import React from 'react';\nimport { CircleCheck, CircleCheckFill, CircleInfo, CircleInfoFill, CircleXmark, CircleXmarkFill, Thunderbolt, ThunderboltFill, TriangleExclamation, TriangleExclamationFill, } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text/colorText/colorText';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nconst typeToIcon = {\n danger: {\n filled: CircleXmarkFill,\n outlined: CircleXmark,\n },\n info: {\n filled: CircleInfoFill,\n outlined: CircleInfo,\n },\n success: {\n filled: CircleCheckFill,\n outlined: CircleCheck,\n },\n warning: {\n filled: TriangleExclamationFill,\n outlined: TriangleExclamation,\n },\n utility: {\n filled: ThunderboltFill,\n outlined: Thunderbolt,\n },\n normal: null,\n};\nexport const AlertIcon = ({ className, theme, view = 'filled', size = DEFAULT_ICON_SIZE, }) => {\n const iconByTheme = typeToIcon[theme];\n if (!iconByTheme) {\n return null;\n }\n let color;\n if (theme === 'success') {\n color = 'positive';\n }\n else if (theme !== 'normal') {\n color = theme;\n }\n return (React.createElement(\"div\", { className: bAlert('icon', colorText({ color }, className)) },\n React.createElement(Icon, { data: iconByTheme[view], size: size })));\n};\n","import * as React from 'react';\nconst CircleXmarkFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z\", clipRule: \"evenodd\" })));\nexport default CircleXmarkFill;\n","import * as React from 'react';\nconst CircleXmark = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z\", clipRule: \"evenodd\" })));\nexport default CircleXmark;\n","import * as React from 'react';\nconst CircleInfoFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z\", clipRule: \"evenodd\" })));\nexport default CircleInfoFill;\n","import * as React from 'react';\nconst CircleCheckFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z\", clipRule: \"evenodd\" })));\nexport default CircleCheckFill;\n","import * as React from 'react';\nconst TriangleExclamationFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\", clipRule: \"evenodd\" })));\nexport default TriangleExclamationFill;\n","import * as React from 'react';\nconst ThunderboltFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", d: \"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z\" })));\nexport default ThunderboltFill;\n","import { addComponentKeysets } from '../../utils/addComponentKeysets';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Alert';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","import React from 'react';\nimport { Xmark } from '@gravity-ui/icons';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text';\nimport { Flex, spacing } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { AlertActions } from './AlertActions';\nimport { AlertContextProvider } from './AlertContextProvider';\nimport { AlertIcon } from './AlertIcon';\nimport { AlertTitle } from './AlertTitle';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nimport i18n from './i18n';\nexport const Alert = (props) => {\n const { theme = 'normal', view = 'filled', layout = 'vertical', message, className, corners, style, onClose, align, qa, } = props;\n return (React.createElement(AlertContextProvider, { layout: layout, view: view },\n React.createElement(Card, { style: style, className: bAlert({ corners }, spacing({ py: 4, px: 5 }, className)), theme: theme, view: view, qa: qa },\n React.createElement(Flex, { gap: \"3\", alignItems: align },\n typeof props.icon === 'undefined' ? (React.createElement(Alert.Icon, { theme: theme, view: view })) : (props.icon // ability to pass `null` as `icon` prop value\n ),\n React.createElement(Flex, { direction: layout === 'vertical' ? 'column' : 'row', gap: \"5\", grow: true },\n React.createElement(Flex, { gap: \"2\", grow: true, className: bAlert('text-content') },\n React.createElement(Flex, { direction: \"column\", gap: \"1\", grow: true, justifyContent: align },\n typeof props.title === 'string' ? (React.createElement(Alert.Title, { text: props.title })) : (props.title),\n message)),\n Array.isArray(props.actions) ? (React.createElement(Alert.Actions, { items: props.actions })) : (props.actions)),\n onClose && (React.createElement(Button, { view: \"flat\", className: bAlert('close-btn'), onClick: onClose, extraProps: {\n 'aria-label': i18n('label_close'),\n } },\n React.createElement(Icon, { data: Xmark, size: DEFAULT_ICON_SIZE, className: colorText({ color: 'secondary' }) })))))));\n};\nAlert.Icon = AlertIcon;\nAlert.Title = AlertTitle;\nAlert.Actions = AlertActions;\nAlert.Action = AlertAction;\n","import React from 'react';\nimport { Text } from '../Text';\nimport { bAlert } from './constants';\nexport const AlertTitle = ({ text, className }) => {\n return (React.createElement(Text, { variant: \"subheader-2\", className: bAlert('title', className) }, text));\n};\n","'use client';\nimport React from 'react';\nimport { Flex } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { bAlert } from './constants';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertActions = ({ items, children, className }) => {\n const { layout } = useAlertContext();\n return (React.createElement(Flex, { className: bAlert('actions', { minContent: layout === 'horizontal' }, className), direction: \"row\", gap: \"3\", wrap: true, alignItems: layout === 'horizontal' ? 'center' : 'flex-start' }, (items === null || items === void 0 ? void 0 : items.map(({ handler, text }, i) => (React.createElement(AlertAction, { key: i, onClick: handler }, text)))) || children));\n};\n","import { block } from '../utils/cn';\nexport const cnDropdownMenu = block('dropdown-menu');\n","import React from 'react';\nexport const DropdownMenuContext = React.createContext({\n toggle() { },\n data: undefined,\n});\nDropdownMenuContext.displayName = 'DropdownMenu.Context';\n","export function moveBack(items, activeItemIndex, steps = 1, skip) {\n const newActiveItemIndex = (items.length + activeItemIndex - (steps % items.length)) % items.length;\n if (skip && skip(items[newActiveItemIndex])) {\n return moveBack(items, newActiveItemIndex, 1, skip);\n }\n return newActiveItemIndex;\n}\n","export function moveForward(items, activeItemIndex, steps = 1, skip) {\n const newActiveItemIndex = (activeItemIndex + steps) % items.length;\n if (skip && skip(items[newActiveItemIndex])) {\n return moveForward(items, newActiveItemIndex, 1, skip);\n }\n return newActiveItemIndex;\n}\n","'use client';\nimport React from 'react';\nconst rootMenuPath = [];\nexport const DropdownMenuNavigationContext = React.createContext({\n activeMenuPath: rootMenuPath,\n setActiveMenuPath: () => { },\n anchorRef: { current: null },\n});\nexport const DropdownMenuNavigationContextProvider = ({ anchorRef, children, disabled, }) => {\n const [activeMenuPath, setActiveMenuPath] = React.useState(rootMenuPath);\n React.useEffect(() => {\n if (disabled) {\n setActiveMenuPath(rootMenuPath);\n }\n }, [disabled]);\n const contextValue = React.useMemo(() => ({\n activeMenuPath,\n setActiveMenuPath,\n anchorRef,\n }), [activeMenuPath, anchorRef]);\n return (React.createElement(DropdownMenuNavigationContext.Provider, { value: contextValue }, children));\n};\n","export const dropdownMenuSeparator = { text: '', action: () => { }, path: [] };\n","import { dropdownMenuSeparator } from '../constants';\nexport function isSeparator(item) {\n return item === dropdownMenuSeparator;\n}\n","import { isSeparator } from './isSeparator';\nexport function shouldSkipItemNavigation(item) {\n return item.disabled || isSeparator(item);\n}\n","export function stringifyNavigationPath(path) {\n var _a;\n return (_a = path === null || path === void 0 ? void 0 : path.join(' ')) !== null && _a !== void 0 ? _a : '';\n}\n","'use client';\nimport React from 'react';\nimport { useListNavigation } from '../../hooks';\nimport { Menu } from '../Menu';\nimport { Popup } from '../Popup';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuNavigationContext } from './DropdownMenuNavigationContext';\nimport { isSeparator } from './utils/isSeparator';\nimport { shouldSkipItemNavigation } from './utils/shouldSkipItemNavigation';\nimport { stringifyNavigationPath } from './utils/stringifyNavigationPath';\nexport const DropdownMenuPopup = ({ items, open, anchorRef, onClose, size, menuProps, children, popupProps, path = [], }) => {\n const { toggle, data } = React.useContext(DropdownMenuContext);\n const { activeMenuPath, setActiveMenuPath, anchorRef: navigationAnchorRef, } = React.useContext(DropdownMenuNavigationContext);\n const isSubmenu = path.length > 0;\n const activateParent = React.useCallback(() => {\n setActiveMenuPath(path.slice(0, path.length - 1));\n }, [setActiveMenuPath, path]);\n const handleMouseEnter = React.useCallback((event) => {\n var _a;\n setActiveMenuPath(path);\n (_a = popupProps === null || popupProps === void 0 ? void 0 : popupProps.onMouseEnter) === null || _a === void 0 ? void 0 : _a.call(popupProps, event);\n }, [path, popupProps, setActiveMenuPath]);\n const handleMouseLeave = React.useCallback((event) => {\n var _a;\n activateParent();\n (_a = popupProps === null || popupProps === void 0 ? void 0 : popupProps.onMouseLeave) === null || _a === void 0 ? void 0 : _a.call(popupProps, event);\n }, [activateParent, popupProps]);\n const handleSelect = React.useCallback((activeItem, event) => {\n var _a;\n if (activeItem.items && activeItem.path) {\n setActiveMenuPath(activeItem.path);\n }\n else {\n (_a = activeItem.action) === null || _a === void 0 ? void 0 : _a.call(activeItem, event, data);\n toggle(false);\n }\n }, [data, setActiveMenuPath, toggle]);\n const handleKeydown = React.useCallback((activeItemIndex, event) => {\n switch (event.key) {\n case 'Escape': {\n if (isSubmenu) {\n event.stopPropagation();\n activateParent === null || activateParent === void 0 ? void 0 : activateParent();\n }\n return false;\n }\n case 'Enter':\n case ' ': {\n const activeItem = items[activeItemIndex];\n const isSubmenuToggleActive = activeItem === null || activeItem === void 0 ? void 0 : activeItem.items;\n if (isSubmenu || isSubmenuToggleActive) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (activeItem) {\n handleSelect(activeItem, event);\n }\n return false;\n }\n }\n return true;\n }, [activateParent, handleSelect, isSubmenu, items]);\n const isNavigationActive = open && stringifyNavigationPath(path) === stringifyNavigationPath(activeMenuPath);\n const { activeItemIndex, setActiveItemIndex, reset: resetNavigation, } = useListNavigation({\n items,\n skip: shouldSkipItemNavigation,\n anchorRef: navigationAnchorRef,\n onAnchorKeyDown: handleKeydown,\n disabled: !isNavigationActive,\n initialValue: isSubmenu ? 0 : -1,\n });\n React.useEffect(() => {\n if (!open) {\n resetNavigation();\n }\n }, [open, resetNavigation]);\n return (React.createElement(Popup, Object.assign({ open: open, anchorRef: anchorRef, onClose: onClose }, popupProps, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }), children || (React.createElement(Menu, Object.assign({ className: cnDropdownMenu('menu'), size: size }, menuProps), items.map((item, index) => {\n var _a;\n const isActive = isNavigationActive && activeItemIndex === index;\n const activate = () => setActiveItemIndex(index);\n const isActiveParent = open &&\n !isActive &&\n activeMenuPath.length !== 0 &&\n stringifyNavigationPath(item.path) ===\n stringifyNavigationPath(activeMenuPath.slice(0, item.path.length));\n const extraProps = Object.assign(Object.assign({}, item.extraProps), { onMouseEnter: activate });\n return (React.createElement(DropdownMenuItem, Object.assign({ key: index, className: cnDropdownMenu('menu-item', {\n separator: isSeparator(item),\n 'active-parent': isActiveParent,\n 'with-submenu': Boolean((_a = item.items) === null || _a === void 0 ? void 0 : _a.length),\n }, item.className), selected: isActive, popupProps: popupProps, closeMenu: onClose }, item, { extraProps: extraProps })));\n })))));\n};\n","import React from 'react';\nimport { moveBack } from './moveBack';\nimport { moveForward } from './moveForward';\nexport function useListNavigation({ items, skip, pageSize, processHomeKey = true, processEndKey = true, anchorRef, disabled = false, initialValue = -1, onAnchorKeyDown, }) {\n const [activeItemIndex, setActiveItemIndex] = React.useState(initialValue);\n const reset = React.useCallback(() => {\n setActiveItemIndex(initialValue);\n }, [initialValue]);\n React.useEffect(() => {\n if (items) {\n reset();\n }\n }, [items, reset]);\n React.useLayoutEffect(() => {\n if (disabled) {\n return undefined;\n }\n const canNavigate = items.some((item) => !(skip === null || skip === void 0 ? void 0 : skip(item)));\n if (!canNavigate) {\n return undefined;\n }\n const anchor = anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current;\n if (!anchor) {\n return undefined;\n }\n const handleKeyDown = (event) => {\n const shouldProcessKeydown = onAnchorKeyDown === null || onAnchorKeyDown === void 0 ? void 0 : onAnchorKeyDown(activeItemIndex, event);\n if (shouldProcessKeydown === false) {\n return;\n }\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n // Go 1 step forward\n setActiveItemIndex((previousActiveItemIndex) => moveForward(items, previousActiveItemIndex, 1, skip));\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n // Go 1 step back\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, 1, skip));\n break;\n }\n case 'PageDown': {\n if (!pageSize) {\n return;\n }\n event.preventDefault();\n // Go pageSize steps forward\n setActiveItemIndex((previousActiveItemIndex) => moveForward(items, previousActiveItemIndex, pageSize, skip));\n break;\n }\n case 'PageUp': {\n if (!pageSize) {\n return;\n }\n event.preventDefault();\n // Go pageSize steps back\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, pageSize, skip));\n break;\n }\n case 'Home': {\n if (!processHomeKey) {\n return;\n }\n event.preventDefault();\n // Go to the start of the list\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, previousActiveItemIndex, skip));\n break;\n }\n case 'End': {\n if (!processEndKey) {\n return;\n }\n event.preventDefault();\n // Go to the end of the list\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, previousActiveItemIndex + 1, skip));\n break;\n }\n }\n };\n anchor.addEventListener('keydown', handleKeyDown);\n return () => {\n anchor.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n activeItemIndex,\n anchorRef,\n disabled,\n items,\n onAnchorKeyDown,\n pageSize,\n processEndKey,\n processHomeKey,\n skip,\n ]);\n return {\n activeItemIndex,\n setActiveItemIndex,\n reset,\n };\n}\n","export function isSubmenuOpen(path, activeMenuPath) {\n var _a;\n return (_a = path === null || path === void 0 ? void 0 : path.every((item, index) => item === (activeMenuPath === null || activeMenuPath === void 0 ? void 0 : activeMenuPath[index]))) !== null && _a !== void 0 ? _a : false;\n}\n","import React from 'react';\nimport { DropdownMenuNavigationContext } from '../DropdownMenuNavigationContext';\nimport { isSubmenuOpen } from '../utils/isSubmenuOpen';\nexport function useSubmenu({ items, path }) {\n const { activeMenuPath, setActiveMenuPath } = React.useContext(DropdownMenuNavigationContext);\n const hasSubmenu = Boolean(path) && Boolean(items === null || items === void 0 ? void 0 : items.length);\n const closeSubmenu = React.useCallback(() => {\n if (!path) {\n return;\n }\n setActiveMenuPath(path.slice(0, path.length - 1));\n }, [path, setActiveMenuPath]);\n const openSubmenu = React.useCallback(() => {\n if (!path) {\n return;\n }\n setActiveMenuPath(path);\n }, [path, setActiveMenuPath]);\n return {\n hasSubmenu,\n isSubmenuOpen: isSubmenuOpen(path, activeMenuPath),\n openSubmenu,\n closeSubmenu,\n };\n}\n","'use client';\nimport { __rest } from \"tslib\";\nimport React from 'react';\nimport { ChevronLeft, ChevronRight } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { Menu } from '../Menu';\nimport { useDirection } from '../theme';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuPopup } from './DropdownMenuPopup';\nimport { useSubmenu } from './hooks/useSubmenu';\nexport const DropdownMenuItem = (_a) => {\n var { text, action, items: subMenuItems, popupProps, closeMenu, children, path } = _a, props = __rest(_a, [\"text\", \"action\", \"items\", \"popupProps\", \"closeMenu\", \"children\", \"path\"]);\n const { toggle, data } = React.useContext(DropdownMenuContext);\n const menuItemRef = React.useRef(null);\n const direction = useDirection();\n const { hasSubmenu, isSubmenuOpen, closeSubmenu, openSubmenu } = useSubmenu({\n items: subMenuItems,\n path,\n });\n const handleCloseMenu = React.useCallback(() => {\n const close = () => {\n if (closeMenu) {\n closeMenu();\n }\n else {\n toggle(false);\n }\n };\n if (hasSubmenu) {\n closeSubmenu();\n // Wait for submenu to close\n requestAnimationFrame(close);\n }\n else {\n close();\n }\n }, [closeMenu, closeSubmenu, hasSubmenu, toggle]);\n const handleMenuItemClick = React.useCallback((event) => {\n if (hasSubmenu) {\n return;\n }\n action === null || action === void 0 ? void 0 : action(event, data);\n handleCloseMenu();\n }, [action, data, handleCloseMenu, hasSubmenu]);\n const extraProps = React.useMemo(() => {\n return Object.assign(Object.assign({}, props.extraProps), { onMouseEnter: (event) => {\n var _a, _b;\n (_b = (_a = props.extraProps) === null || _a === void 0 ? void 0 : _a.onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n if (hasSubmenu) {\n openSubmenu();\n }\n }, onMouseLeave: (event) => {\n var _a, _b;\n (_b = (_a = props.extraProps) === null || _a === void 0 ? void 0 : _a.onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n if (hasSubmenu) {\n closeSubmenu();\n }\n } });\n }, [props.extraProps, closeSubmenu, hasSubmenu, openSubmenu]);\n const subMenuPlacement = React.useMemo(() => (direction === 'rtl' ? ['left-start', 'right-start'] : ['right-start', 'left-start']), [direction]);\n const iconEnd = React.useMemo(() => hasSubmenu ? (React.createElement(Icon, { data: direction === 'rtl' ? ChevronLeft : ChevronRight, size: 10, className: cnDropdownMenu('sub-menu-arrow') })) : (props.iconEnd), [hasSubmenu, direction, props.iconEnd]);\n return (React.createElement(React.Fragment, null,\n React.createElement(Menu.Item, Object.assign({ ref: menuItemRef }, props, { extraProps: extraProps, onClick: handleMenuItemClick, iconEnd: iconEnd }), text || children),\n hasSubmenu && subMenuItems && (React.createElement(DropdownMenuPopup, { popupProps: Object.assign(Object.assign({}, popupProps), { className: cnDropdownMenu('sub-menu', popupProps === null || popupProps === void 0 ? void 0 : popupProps.className), placement: subMenuPlacement }), items: subMenuItems, path: path, open: isSubmenuOpen, anchorRef: menuItemRef, onClose: handleCloseMenu }))));\n};\n","export function toItemList(items, separator, path = [], startIndex = 0) {\n const updatedItems = [];\n let addedGroup = false;\n let index = startIndex;\n for (const item of items) {\n if (Array.isArray(item)) {\n const groupItems = toItemList(item, separator, path, index);\n if (updatedItems.length !== 0) {\n updatedItems.push(separator);\n }\n updatedItems.push(...groupItems);\n index += groupItems.length;\n addedGroup = true;\n }\n else {\n if (item.hidden) {\n continue;\n }\n if (addedGroup) {\n updatedItems.push(separator);\n }\n const updatedItem = Object.assign(Object.assign({}, item), { path: [...path, index++] });\n if (item.items) {\n updatedItem.items = toItemList(item.items, separator, updatedItem.path);\n }\n updatedItems.push(updatedItem);\n addedGroup = false;\n }\n }\n return updatedItems;\n}\n","'use client';\nimport React from 'react';\nimport { Ellipsis } from '@gravity-ui/icons';\nimport { useActionHandlers } from '../../hooks/useActionHandlers';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem as DropdownMenuItemComponent } from './DropdownMenuItem';\nimport { DropdownMenuNavigationContextProvider } from './DropdownMenuNavigationContext';\nimport { DropdownMenuPopup } from './DropdownMenuPopup';\nimport { dropdownMenuSeparator } from './constants';\nimport { usePopupVisibility } from './hooks/usePopupVisibility';\nimport { useScrollHandler } from './hooks/useScrollHandler';\nimport { toItemList } from './utils/toItemList';\nimport './DropdownMenu.css';\nconst DropdownMenu = ({ items = [], size = 'm', icon = React.createElement(Icon, { data: Ellipsis }), open, onOpenToggle, hideOnScroll = true, data, disabled, switcher, renderSwitcher, switcherWrapperClassName, defaultSwitcherProps, defaultSwitcherClassName, onSwitcherClick, menuProps, popupProps, children, }) => {\n const anchorRef = React.useRef(null);\n const { isPopupShown, togglePopup, closePopup } = usePopupVisibility(open, onOpenToggle, disabled);\n useScrollHandler(closePopup, anchorRef, !isPopupShown || !hideOnScroll);\n const contextValue = React.useMemo(() => ({\n toggle: togglePopup,\n data,\n }), [data, togglePopup]);\n const itemsList = React.useMemo(() => toItemList(items, dropdownMenuSeparator), [items]);\n const handleSwitcherClick = React.useCallback((event) => {\n if (disabled) {\n return;\n }\n onSwitcherClick === null || onSwitcherClick === void 0 ? void 0 : onSwitcherClick(event);\n togglePopup();\n }, [disabled, onSwitcherClick, togglePopup]);\n const { onKeyDown: handleSwitcherKeyDown } = useActionHandlers(handleSwitcherClick);\n const switcherProps = React.useMemo(() => ({\n onClick: handleSwitcherClick,\n onKeyDown: handleSwitcherKeyDown,\n }), [handleSwitcherClick, handleSwitcherKeyDown]);\n return (React.createElement(DropdownMenuContext.Provider, { value: contextValue },\n React.createElement(\"div\", Object.assign({ ref: anchorRef, className: cnDropdownMenu('switcher-wrapper', switcherWrapperClassName) }, (renderSwitcher ? {} : switcherProps)), (renderSwitcher === null || renderSwitcher === void 0 ? void 0 : renderSwitcher(switcherProps)) || switcher || (React.createElement(Button, Object.assign({ view: \"flat\", size: size }, defaultSwitcherProps, { className: cnDropdownMenu('switcher-button', defaultSwitcherClassName), disabled: disabled }), icon))),\n React.createElement(DropdownMenuNavigationContextProvider, { anchorRef: anchorRef, disabled: !isPopupShown },\n React.createElement(DropdownMenuPopup, { items: itemsList, open: isPopupShown, size: size, menuProps: menuProps, anchorRef: anchorRef, onClose: closePopup, popupProps: popupProps }, children))));\n};\nconst DropdownMenuExport = Object.assign(DropdownMenu, { Item: DropdownMenuItemComponent });\nexport { DropdownMenuExport as DropdownMenu };\n","import React from 'react';\nimport { useConditionallyControlledState } from '../../../hooks/private';\nexport function usePopupVisibility(visible, onChangeVisibility, disabled) {\n const [isPopupShown, setPopupShown] = useConditionallyControlledState(visible, onChangeVisibility, false);\n const togglePopup = React.useCallback((open) => {\n setPopupShown((isShown) => {\n if (typeof open === 'boolean') {\n return open;\n }\n return !isShown;\n });\n }, [setPopupShown]);\n const closePopup = React.useCallback(() => {\n setPopupShown(false);\n }, [setPopupShown]);\n React.useEffect(() => {\n if (disabled && isPopupShown) {\n closePopup();\n }\n }, [closePopup, disabled, isPopupShown]);\n return {\n isPopupShown,\n togglePopup,\n closePopup,\n };\n}\n","import { useStateWithCallback } from '../useStateWithCallback';\nexport function useConditionallyControlledState(property, setProperty, initialState, isControlled = property !== undefined && setProperty !== undefined) {\n const state = useStateWithCallback((property || initialState), setProperty);\n if (isControlled) {\n return [property, setProperty];\n }\n return state;\n}\n","import React from 'react';\nimport { isFunction } from '../../../components/utils/typeCheckers';\nexport function useStateWithCallback(initialValue, callback) {\n const [state, setState] = React.useState(initialValue);\n const setWithCallback = React.useCallback((nextValue) => {\n if (isFunction(nextValue)) {\n setState((previousState) => {\n const newState = nextValue(previousState);\n callback === null || callback === void 0 ? void 0 : callback(newState);\n return newState;\n });\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(nextValue);\n setState(nextValue);\n }\n }, [callback]);\n return [state, setWithCallback];\n}\n","export const isFunction = (value) => typeof value === 'function';\n","import React from 'react';\nexport function useScrollHandler(onScroll, anchorRef, disabled) {\n React.useEffect(() => {\n if (disabled) {\n return undefined;\n }\n const handleScroll = (event) => {\n if (event.target.contains(anchorRef.current)) {\n onScroll(event);\n }\n };\n document.addEventListener('scroll', handleScroll, true);\n return () => {\n document.removeEventListener('scroll', handleScroll, true);\n };\n }, [anchorRef, onScroll, disabled]);\n}\n","import React from 'react';\nimport { useUniqId } from '../../hooks';\nimport { block } from '../utils/cn';\nconst b = block('menu');\nexport const MenuGroup = React.forwardRef(function MenuGroup({ label, children, style, className, qa }, ref) {\n const labelId = useUniqId();\n return (React.createElement(\"li\", { ref: ref, className: b('list-group-item') },\n React.createElement(\"div\", { style: style, className: b('group', className), \"data-qa\": qa },\n label && (React.createElement(\"div\", { id: labelId, className: b('group-label') }, label)),\n React.createElement(\"ul\", { role: \"group\", \"aria-labelledby\": labelId, className: b('group-list') }, children))));\n});\n","'use client';\nimport React from 'react';\nimport { useActionHandlers } from '../../hooks';\nimport { block } from '../utils/cn';\nimport { eventBroker } from '../utils/event-broker';\nconst b = block('menu');\nexport const MenuItem = React.forwardRef(function MenuItem({ icon, iconStart = icon, iconEnd, title, disabled, active, selected, href, target, rel, onClick, style, className, theme, extraProps, children, qa, }, ref) {\n const { onKeyDown } = useActionHandlers(onClick);\n const handleClickCapture = React.useCallback((event) => {\n eventBroker.publish({\n componentId: 'MenuItem',\n eventId: 'click',\n domEvent: event,\n });\n }, []);\n const defaultProps = {\n role: 'menuitem',\n onKeyDown: onClick && !disabled ? onKeyDown : undefined,\n };\n const commonProps = {\n title,\n onClick: disabled ? undefined : onClick,\n onClickCapture: disabled ? undefined : handleClickCapture,\n style,\n tabIndex: disabled ? -1 : 0,\n className: b('item', { disabled, active, selected, theme, interactive: Boolean(onClick) || Boolean(href) }, className),\n 'data-qa': qa,\n };\n const content = [\n iconStart && (React.createElement(\"div\", { key: \"icon-start\", className: b('item-icon') }, iconStart)),\n React.createElement(\"div\", { key: \"content\", className: b('item-content') }, children),\n iconEnd && (React.createElement(\"div\", { key: 'icon-end', className: b('item-icon-end') }, iconEnd)),\n ];\n let item;\n if (href) {\n item = (React.createElement(\"a\", Object.assign({}, defaultProps, extraProps, commonProps, { href: href, target: target, rel: rel }), content));\n }\n else {\n item = (React.createElement(\"div\", Object.assign({}, defaultProps, extraProps, commonProps), content));\n }\n return (React.createElement(\"li\", { ref: ref, className: b('list-item') }, item));\n});\n","'use client';\nimport React from 'react';\nimport { block } from '../utils/cn';\nimport { MenuGroup } from './MenuGroup';\nimport { MenuItem } from './MenuItem';\nimport './Menu.css';\nconst b = block('menu');\n// TODO: keyboard navigation, Up/Down arrows and Enter\nexport const Menu = React.forwardRef(function Menu({ size = 'm', children, style, className, qa }, ref) {\n return (React.createElement(\"ul\", { ref: ref, role: \"menu\", \n // tabIndex={0}\n style: style, className: b({ size }, className), \"data-qa\": qa }, children));\n});\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\n"],"names":["fetchFromTabletErrorsApi","action","cluster","params","cancelToken","axios","post","concat","_objectSpread","Set","AttributesButton","_ref","_ref$view","view","_ref$size","size","rest","_objectWithoutProperties","_excluded","_jsx","Button","children","Icon","awesome","connect","openAttributesModal","title","_ref$getPathProps","getPathProps","path","exactPath","attribute","attributes","_ref$withTooltip","withTooltip","_ref$tooltipProps","tooltipProps","placement","content","onClick","pathProps","block","cn","Dropdown","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","state","popupVisible","anchor","React","toggle","setState","prevState","open","close","_createClass","key","value","_this$props","this","props","button","trigger","actionProps","undefined","onMouseEnter","onMouseLeave","template","_this$props$template","data","renderer","templates","get","__default__","_this$props2","popup","directions","Popup","onClose","anchorRef","hasArrow","renderTemplate","className","_jsxs","ref","renderButton","renderPopup","Component","defaultProps","zIndexGroupLevel","EditableAsText","onChange","text","withControls","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","_React$useState","_React$useState2","_slicedToArray","editMode","setEditMode","_React$useState3","_React$useState4","input","setInput","useEffect","handleChangeMode","useCallback","isEdit","closeEditMode","startTextEdit","handleChange","val","applyValue","closeAndResetValue","onApply","handleKeyDown","evt","controlSize","_Fragment","onBlur","TextInput","autoFocus","onUpdate","onKeyDown","extraProps","onMouseDown","type","EditButton","getHistogram","histogram","createGetQuartiles","createSelector","hammer","stat","quartiles","createGetPDF","pdf","createGetECDF","ecdf","steps","unshift","x","min","y","push","bucketNumber","bucketSize","HistogramChart","format","dataName","lineOnly","yagrData","xFormat","formatLib","Bytes","Number","_ref2","_ref5","_ref6","_step","buckets","timeline","NaN","_iterator","_createForOfIteratorHelper","s","n","done","item","getX","getY","err","e","f","graphs","color","getSerieColor","step","getLineOnlyData","_ref3","_ref4","lineData","j","i","_buckets$i","bestX","itemX","isArray","calcBestY","Math","scale","renderOptions","gap","getColumnData","res","libraryConfig","axes","values","_d","map","side","grid","show","y1","scales","max","tooltip","render","tooltipData","_first$rows","_first$rows2","_second$rows","_renderDefaultTooltip","_tooltipData$scales","first","second","columnValue","rows","originalValue","lineValue","_ref7","colValue","colX0","colX1","lineX","lp","compact_","join","renderDefaultTooltip","digits","sources","YagrChartKit","v","left","right","ly","ry","lx","Histogram","activeHistogram","handleHistogramChange","histogramItems","isDataGood","isDatailedLine","setDetailed","Select","options","map_","keys_","width","Checkbox","checked","q25","q50","q75","quartilesProps","PropTypes","pdfProps","valueMax","valueMin","ecdfProps","getQuartiles","getPDF","getECDF","getIsDataGood","pdfData","ecdfData","xmlns","fill","viewBox","d","b","Info","infoIcon","toaster","Toaster","LoadDataHandler","error","loaded","errorData","add","theme","name","autoHiding","message","NO_VALUE","actions","label","showErrorPopup","_this$props2$alwaysSh","alwaysShowError","Error","_ypath$getValues","ypath","_ypath$getValues2","compressionRatio","compressionCodec","erasureCodec","replicationFactor","hideReplicationFactor","helpUrl","docsUrl","UIFactory","docsUrls","visible","metaTablePresetMain","_UIFactory$yqlWidgetS","id","owner","account","creationTime","modificationTime","accessTime","yql_op_id","yqlLink","yqlWidgetSetup","renderYqlOperationLink","Template","Id","SubjectCard","AccountLink","Boolean","Time","time","valueFormat","_toConsumableArray","makeTTLItems","showTTLLabel","RowsCount","count","isDynamic","Popover","AutomaticModeSwitchEditor","onEdit","setError","handleAdd","_asyncToGenerator","_regeneratorRuntime","_callee","form","_form$getState","_context","prev","next","getState","t0","stop","_x","YTDFDialog","pristineSubmittable","headerProps","onAdd","initialValues","fields","caption","extras","makeErrorFields","AutomaticModeSwitch","showEditor","setShowEditor","handleShow","handleClose","Switch","StatusBulb","replicatedTableTracker","getValue","LabelOnOff","tableSize","mediumList","getValues","rowCount","chunkCount","dataWeight","FormattedValue","tableStorage","tableType","optimizeFor","Label","compression","erasureReplication","dynTableInfo","tabletErrorCount","_ypath$getValues3","_ypath$getValues4","tabletCellBundle","tabletState","inMemoryMode","tabletUrl","tabletActiveBundleLink","Link","routed","url","makeMetaItems","_ref$mediumList","_ref$tabletErrorCount","onEditEnableReplicatedTableTracker","cf","sorted","chaosCellBundle","enable_replicated_table_tracker","chaosUrl","tabletActiveChaosBundleLink","reduce_","acc","getCommonFields","CypressNodeTypes","REPLICATED_TABLE","REPLICATION_LOG_TABLE","main","automaticModeSwitch","CHAOS_REPLICATED_TABLE","metaTablePresetSize","uncompressedDataSize","compressedDataSize","primaryMedium","usageDiskSpace","diskSpace","mediumsTemplates","medium","usageMediumDiskSpace","mediumDiskSpace","Readable","attrs","_ypath$getValue","expiration_time","expiration_timeout","timeout","withTTL","moment","qa","makeNavigationLink","formatTimeDuration","TTLLabel","SchemaDataType","type_v3","primitiveTypes","useSelector","getPrimitiveTypesMap","dataTypeProps","getType","parseV3Type","_unused","DataType","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","order","allowUnordered","withUndefined","nextSortOrderValue","hidden","icon","Tooltip","ReadableField","face","Secondary","disabled","Bold","SecondaryBold","Warning","WarningLight","NoWrap","Escaped","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onEnterKeyDown","handleChangeExt","throttle_","cancel","handleBlur","WarningIcon","hoverContent","Text","variant","typedMemo","ErrorBoundary","constructor","super","resetError","getDerivedStateFromError","componentDidCatch","_a","_b","onError","componentDidUpdate","prevProps","code","NO_DATA","i18n","toString","getErrorMessage","renderError","renderPluginLoader","pluginLoader","Object","assign","ChartKitComponent","widgetRef","instanceRef","propsId","isMobile","restProps","ckId","lang","settings","plugin","find","iteratedPlugin","UNKNOWN_PLUGIN","ChartComponent","reflow","details","current","fallback","mobile","YagrPlugin","set","plugins","COLORS","serieIndex","DEFAULT_SHORTCUTS","YTTimelineImpl","topShortcuts","setWidth","setRef","onResize","w","contentRect","useResizeObserver","element","Timeline","padding","hasPicker","wrapper","ruler","picker","YTTimeline","ONE_DAY_MS","calcFromTo","timeRange","shortcutValue","calculateShortcutTime","_ref6$from","from","floor","Date","now","_ref6$to","to","ceil","withRouter","_props$theme","match","computeStateQuery","FormattedText","FormattedTextOrLink","_ref$asLink","asLink","FormattedLink","FormattedId","_useState","useState","_useState2","hovered","setHovered","ClipboardButton","printColumnAsBytes","columnName","column","columns","printColumnAsNumber","renderText","mix","elem","mods","textProps","decode","String","prepareTextProps","printColumnAsTimeDurationWithMs","getColumn","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","_typeof","hideOopsMsg","asNumber","_templates","templateId","keys","reduce","newTemplates","wrapRenderMethods","ROWS_PER_PAGE","FLAG_NAME_PREFIX","SHORT_TITLE","access_control_object","COLUMNS_FELDS","compose","withVisible","_SHORT_TITLE$idmKind","aclMode","buttonClassName","idmKind","requestPermissions","cancelRequestPermissions","columnGroups","buttonProps","_UIFactory$getAclApi","getAclApi","requestPermissionsFields","_UIFactory$getAclApi$","requestPermissionsFlags","buttonsTitle","permissionFlags","forEach","k","currentCaption","_UIFactory$getAclPerm","getAclPermissionsSettings","permissionsToRequest","getAvailablePermissions","availablePermissions","setAvailablePermissions","onShow","sent","finish","firstItemDisabled","IdmObjectType","ACCOUNT","choices","permissions","PermissionsControl","getChoiceName","valueWithCheckedFirstChoice","availableFields","useMemo","disabledChoices","required","makeLink","readColumns","readColumnGroup","subjects","placeholder","allowedTypes","duration","commentHeader","comment","inheritance_mode","items","INHERITANCE_MODE_TYPES","hideClear","hideFilter","with","useColumns","AclMode","COLUMN_GROUPS_PERMISSISONS","dialogFields","flagsIndex","field","has","flags","flagInfo","help","initialValue","splice","_ref2$editAcl","editAcl","_ref2$editColumnsAcl","editColumnsAcl","OBJECT_AND_DESCENDANTS","validate","validationError","selectCellPreviewVisible","navigation","modals","cellPreviewModal","selectCellPreviewLoading","loading","selectCellPreviewData","selectCellPreviewYtCliDownloadCommand","ytCliDownloadCommand","selectCellPreviewNoticeText","noticeText","selectErrorPreviewCellPath","CellPreviewModal","dispatch","useDispatch","unipikaSettings","getPreviewCellYsonSettings","SimpleModal","onCancel","closeCellPreviewAndCancelRequest","wrapperClassName","Flex","direction","PreviewContent","$type","$value","$tag","isMediaTag","src","alt","Yson","folding","tableSettings","dynamicRenderScrollParentGetter","customLayout","toolbar","reShortName","makeRegexpFromSettings","uiSettings","reShortNameFromAddress","reTabletNodeShortName","reShortNameFromTabletNodeAddress","Host","_ref$address","address","prefix","copyBtnClassName","useText","asTabletNode","inlineMargins","host","re","_res$groups","exec","groups","shortname","suffix","filter","calcShortNameByRegExp","getCluster","withSplit","_WithSplit","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","SidePanelPortal","useSidePanel","renderContent","widgetOpened","setWidgetOpened","openWidget","splitScreen","mergeScreen","closeWidget","widgetContent","observer","ResizeObserver","observe","unobserve","genAccountsUrl","Page","ACCOUNTS","AccountsTab","GENERAL","propsCluster","inline","currentCluster","ellipsis","pathToFileName","replace","getOnlyFolders","suggestions","filter_","child","showErrorInModal","_getCorrectInnerError","ErrorMessage","innerErrors","correctErrorCodes","values_","NetworkCode","find_","some_","getCorrectInnerError","inner_errors","prepareErrorMessage","SHOW_ERROR","hideError","HIDE_ERROR","openEditingPopup","objectPath","multipleMode","closeEditingPopup","withScope","scope","ResComponent","prevScope","getScope","setScope","useHotkeysScope","PathEditorModal","_handleBlur","handleFocus","event","onFocus","_handleFocus","newPath","_handleChange","handleApply","_handleApply","setPath","editingPath","inProcess","description","showError","errorMessage","PathEditor","customFilter","defaultPath","showErrors","hasClear","modalTitle","Modal","onConfirm","onConfirmButtonClick","onCancelButtonClick","isConfirmDisabled","confirmText","SET_PATH","requests","CancelHelper","copyObjectIntoDirectory","parts","split","yt","copy","parameters","source_path","preparePath","destination_path","prepareDestinationPath","cancellation","saveCancelToken","copySingleObject","charAt","exists","then","exist","copyObjectWithRename","CopyObjectModal","preserve_account","recursive","handleConfirmButtonClick","copyPath","doCopy","handleCancelButtonClick","abortRequests","resetOptions","CLOSE_COPY_OBJECT_POPUP","copying","onUpdateRecursiveCopy","onUpdatePreserveAccount","toPath","_this2","_this$props3","copyObject","updateView","_this$state","_this$props4","mapDispatchToProps","copyingPath","onSuccess","COPY_OBJECT","REQUEST","Promise","resolve","startTransaction","copyRequests","node","command","transaction_id","titleUnquoted","wrapBatchPromise","executeBatchWithRetries","YTApiId","navigationCopy","errorTitle","saveCancelSourceCb","commitTransaction","abortTransaction","reject","copyObjects","SUCCESS","CANCELLED","FAILURE","removeAllRequests","_navigation$modals$co","CreateDirectoryModal","onRecursiveUpdate","_this$props$clearCrea","clearCreateDirectoryError","creatingPath","createDirectory","CLOSE_CREATE_DIRECTORY_POPUP","creating","CREATE_DIRECTORY","create","CREATE_MESSAGE","_state$navigation$mod","moveObjectIntoDirectory","move","moveSingleObject","moveObjectWithRename","MoveObjectModal","movedPath","doMove","CLOSE_MOVE_OBJECT_POPUP","renaming","moveObject","afterMoveStrategy","updatePath","destinationPath","MOVE_OBJECT","moveRequests","navigationMove","moveObjects","entityId","output_format","$attributes","encode_utf8","rumLogError","resolveEntityPath","JSON","parse","result","_items$","getPath","_navigation$modals$mo","getNextObjectName","initialPath","INITIAL_STEP","checkPathExists","isExists","findCorrectObjectName","inTrash","startsWith","restoreObject","restorePath","RESTORE_OBJECT","EXIST","correctRestorePath","OPEN_RESTORE_POPUP","INCORRECT_PATH","openAction","errorAction","RestoreObjectModal","restoredPath","CLOSE_RESTORE_POPUP","restoring","_navigation$modals$re","AclTabParams","_AclTabParams","PATH","rumType","RumMeasureTypes","NAVIGATION_TAB_ACL","NavigationAcl","ACCESS_CONTROL_OBJECT","NAVIGATION_TAB_ACL_ACCESS","AccessContentAcl","createACLTabComponent","mapStateToProps","getAttributes","getRawPath","isPrincipalACLtab","mode","loadState","getAclLoadState","makeMapStateToProps","_AclTabParams$idmKind","useAppRumMeasureStart","startDeps","allowStart","isFinalLoadingStatus","useRumMeasureStop","stopDeps","allowStop","makeComponentWithRum","AccessAclTab","makeTableRumId","measureId","NAVIGATION_CONTENT_TABLE_DYNAMIC","NAVIGATION_CONTENT_TABLE_STATIC","RumWrapper","getColumnPresetEndpoint","utf8","utils","_loadStaticTable","requestOutputFormat","setup","useZeroRangeForPreload","stringLimit","transaction","moveBackward","requestedPageSize","defaultTableColumnLimit","login","offsetValue","useYqlTypes","decodedColumns","outputFormat","apiId","getCellSize","getTransaction","getMoveOffsetBackward","getRequestedPageSize","getDefaultTableColumnLimit","global","getColumns","getNextOffset","isYqlTypesEnabled","decodeNameField","getRequestOutputFormat","prepareRequest","table_reader","workload_descriptor","category","dump_error_into_response","omit_inaccessible_columns","relativePath","getIsDynamic","LOAD_TYPE","PRELOAD","tableReadPreload","tableRead","fetch","readStaticTable","reverseRows","abrupt","loadTableRows","transformResponse","parsedData","rawResponse","headers","getIsStrict","loadPromise","keyColumns","getKeyColumns","_getNextOffset","offset","descending","orderBySupported","offsetColumns","limit","isEmpty_","allColumns","Columns","getSchemaColumns","dynTableCheckPerm","ytApiV3Id","checkPermission","permission","user","keyColumnsNames","keyBy_","_reduce_","index","availableColumns","omittedColumns","has_","deniedKeyColumns","query","Query","prepareQuery","dynTableSelectRowsPreload","selectRows","parseErrorFromResponse","getParsedError","_prepareRows","prepareRows","yqlTypes","getVisibleColumns","getOmittedColumns","getDeniedKeyColumns","key_columns","dynTableSelectRows","readDynamicTable","loadDynamicTable","_x2","_x3","_x4","_x5","loadStaticTable","schemaColumns","getTableColumnNamesFromSchema","injectColumnsFromSchema","updateTableData","_getNextOffset2","GET_TABLE_DATA","UPDATE","storedColumns","preparedColumns","prepareColumns","preparedOmittedColumns","prepareOmittedColumns","setColumns","newOffsetValue","previousRows","getRows","addRowCount","slice","prepareKey","getColumnsValues","SET_OFFSET","SET_COLUMNS","closeColumnSelectorModal","CLOSE_COLUMN_SELECTOR_MODAL","updateColumns","columnsOrder","getColumnsOrder","storeAllColumns","SET_COLUMNS_ORDER","setColumnsOrder","SET_TABLE_COLUMNS_PRESET_HASH","toggleFullScreen","TOGGLE_FULL_SCREEN","FilePicker","inputRef","onLinkClick","click","target","files","multiple","ClickableText","WRITE_ATTRIBUTES","json","enable_type_conversion","yson","yamr","dsv","enable_string_to_all_conversion","schemaful_dsv","xlsx","getFileTypes","payload","fileTypes","getConfigUploadTable","uploadTableExcelBaseUrl","UploadManager","hasUpcomingFile","file","fileType","progress","inProgress","append","firstRowAsNames","secondRowAsTypes","showOverwriteConfirmation","cancelHelper","onReset","onFile","cancelUpload","onDragOver","preventDefault","stopPropagation","onDrop","dataTransfer","lastDotIndex","lastIndexOf","extStr","substr","fileError","checkFile","onDragEnter","onDragLeave","renderConfirm","renderClose","onUploadProgress","onConfirmImpl","setOverwriteConfirmationVisible","proxy","externalProxy","uploadConfig","onStartUpload","txId","writeTable","uploadTableUseLocalmode","location","input_format","getWriteAttributes","removeAllAndSave","onStopUpload","onXlsxUpload","_this$state2","dropable","empty","renderFileContent","renderSettings","renderProgress","_this$typeSpecificFie","typeSpecificFields","initials","modal","_this3","_this$state3","helpLink","HelpLink","total","totalStr","loadedStr","Progress","stack","uploadTableMaxSize","schema","withColumns","isCancel","_error$response","response","_this4","_this$state4","readyUrl","uploadUrl","_this4$state","start_row","URLSearchParams","header","types","formData","FormData","withCredentials","withXSRFToken","xsrfCookieName","getXsrfCookieName","xsrfHeaderName","generateNextToken","_this5","footerContent","renderFooterContent","renderCustomConfirm","renderCustomCancel","contentClassName","renderOverwriteConfirmationDialog","connector","getSchema","_getCurrentClusterCon","getCurrentClusterConfig","DYN_TABLES_ALLOWED_STATES_OF_ACTION","mount","unmounted","unmount","mounted","frozen","freeze","unfreeze","DYN_TABLES_ALLOWED_ACTIONS_BY_STATE","mixed","showDynTablesStateModalByPaths","paths","DYN_TABLES_STATE_MODAL_PARTIAL","showModal","showDynTablesStateModalByNodes","selectedNodes","allowedFrom","dynTablesChangeState","wrapApiPromiseByToaster","navigationDynTableState","toasterName","successContent","batchType","skipSuccessToast","waitWhileThereIsTransient","capitalize_","delayed","navigationGetTabletState","results","toRecheck","output","DynamicActions","Fragment","StaticActions","DownloadManager","table","mountUnmountTable","metrics","countEvent","navigation_dynamic_table_action","ytApiV3","console","getTableType","getTabletErrorsBackgroundCount","CollapsibleSection","UI_COLLAPSIBLE_SIZE","MetaTable","ReplicatedTableSettingsButton","setVisible","toggleVisibility","ReplicatedTableSettingsDialog","_form$getState$values","auto_replica_tracker","replica_cluster","replica_path","getNavigationReplicatedTableLoadingStatus","store","replicatedTable","calculateLoadingStatus","getReplicatedTableReplicas","replicas","getAllowEnableReplicatedTracker","getReplicatedTableReplicasMap","error_count","getNumberDeprecated","cluster_name","replicated_table_tracker_enabled","getBoolean","replication_lag_time","tableSets","default","ReplicatedTable","renderActions","replica","performReplicaAction","replicaValue","replicaAttributes","isAsync","atomicity","replicaData","ClickableAttributesButton","modeState","updateEnableReplicatedTableTracker","loadReplicas","abortAndReset","tableMode","css","striped","itemHeight","isLoading","tableItems","sets","renderName","renderField","errors","renderErrors","renderAsReadableField","renderState","automatic_mode_switch","renderAutomaticModeSwitch","bind","renderAsTimeDuration","computeKey","hasActions","TableMeta","StickyContainer","Sticky","topOffset","HEADER_HEIGHT","isSticky","sticky","TableActions","ElementsTable","replicaLink","NAVIGATION","enableTableTracker","align","sort","flag","ReplicatedTableConnected","_getReplicatedTableDa","getReplicatedTableData","allowEnableReplicatedTracker","ReplicatedTableWithRum","NAVIGATION_CONTENT_REPLICATED_TABLE","LinkConnected","getAttributesWithTypes","targetPath","broken","getDownloadPath","cypressPath","makeDirectDownloadPath","encodeURIComponent","getIsEmpty","getIsTooBig","MAX_FILE_SIZE","getNavigationFileLoadingStatus","NavigationExtraActions","getNavigationPathAttributes","renderNavigationExtraActions","messageBlock","codeBlock","renderMeta","downloadPath","href","renderTooBigInfo","isTooBig","loadFile","LOAD_FILE","readFile","FileConnected","_state$navigation$con","isEmpty","getEffectiveMode","initialLoading","Loader","rowKey","row","DataTableWrapper","useRawStrings","getSettingTableDisplayRawStrings","schemaByName","getSchemaByName","ysonSettings","isFullScreen","onShowPreview","rowIndex","tag","showCellPreviewModal","dtColumns","updating","setTimeout","requestAnimationFrame","window","dispatchEvent","Event","fullscreen","DataTable","SharePresetButton","handleClick","visibleColumns","columnsEncoded","request","method","errorContent","saveColumnPreset","hash","openInNewTab","share_columns","pin","SavePresetButton","getAllColumns","ColumnsPresetButton","getColumnsPresetHash","actionStyle","marginRight","openColumnSelectorModal","OPEN_COLUMN_SELECTOR_MODAL","isStrict","getSchemaStrict","allowPickColumns","showAllColumns","allowUserColumnPresets","getConfigData","style","methodMap","nativeAPI","unprefixedMethods","returnValue","methodList","exitFullscreenMethod","entries","eventNameMap","change","fullscreenchange","fullscreenerror","screenfull","documentElement","onFullScreenEntered","off","on","returnPromise","requestFullscreen","catch","exit","isFullscreen","onFullScreenExit","exitFullscreen","onchange","callback","onerror","eventName","addEventListener","removeEventListener","raw","defineProperties","fullscreenElement","enumerable","isEnabled","fullscreenEnabled","FullScreen","_ref$enabled","enabled","_ref$onChange","container","useRef","isFullScreenAllowed","changePageSize","pageSize","CHANGE_PAGE_SIZE","changeCellSize","cellSize","CHANGE_CELL_SIZE","setTableDisplayRawStrings","getPageSize","allowRawStrings","stringLimitProps","cellSizeRadioButtonItems","pageSizeProps","pageSizeRadioButtonItems","RadioButton","xmlnsXlink","mixBlendMode","xlinkHref","transform","getNavigationPathAttributesLoadState","LOADING_STATUS","LOADED","basePath","getJupyterBasePath","Logo","height","moveOffset","prevOffsetValue","getOffsetValue","MOVE_OFFSET","openOffsetSelectorModal","OPEN_OFFSET_SELECTOR_MODAL","keyColumn","renderInput","onEndEditing","Filter","iconLeft","RangeInputPicker","onOutsideClick","onAfterUpdate","onSubmit","maxValue","infoPointsCount","renderPlaceholder","handleStartEditing","progressWidth","getProgressWidth","getRowCount","editing","changeEditing","edit","dynamic","OffsetSelectorButton","moveOffsetToStart","moveOffsetToLeft","getYqlTypes","getBottomBoundKey","moveOffsetToRight","getUpperBoundKey","moveOffsetToEnd","isPaginationDisabled","getIsPaginationDisabled","isTableEndReached","getIsTableEndReached","Pagination","handler","hotkeyHandler","hotkeyScope","hotkey","previous","last","YQLKitButton","getNavigationSqlService","getSettingsData","isDeveloper","isAdmin","isQtKitEnabled","indexOf","isYqlKitEnabled","hasYqlWidget","OpenQueryButtons","autoOpen","panelMode","setPanelMode","onOpenYqlKit","_useSidePanel","QueryWidgetLazy","renderWidget","_useSelector","createQueryFromTablePath","QueryEngine","YQL","allowQtAutoOpen","selected","createNewQueryUrl","opened","onOpen","CreateQueryFromTable","NAVIGATION_ATTRIBUTES_EDITOR_REQUEST","NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS","NAVIGATION_ATTRIBUTES_EDITOR_ERROR","NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL","getNavigationAttributesEditorAttributes","attributesEditor","attributesMap","getNavigationAttributesEditorPath","getNavigationAttributesEditorError","getNavigationAttributesEditorVisible","getNavigationAttributesEidtorNodesByTypes","attrsMap","staticTables","mapNodes","dynamicTables","forEach_","getNavigationAttributesEditorStaticTables","getNavigationAttributesEditorDynamicTables","getNavigationAttributesEditorMapNodes","EDITABLE_ATTRIBUTES","showNavigationAttributesEditor","attributesEditorGetAttrs","getBatchError","join_","EDIT_MARKER","makeUiMarker","EDIT_MERGE_MARKER","navigationSetNodeAttributes","generalAttrs","storageAttrs","runMerge","warn","stringify","in_memory_mode","tablet_cell_bundle","restGeneralAttrs","newAttrs","isDynTable","prepareSetCommandForBatch","attributesEditorSet","prepareMergeParams","spec","input_table_paths","output_table_path","force_transform","promises","merge","opId","AppStoreProvider","OperationShortInfo","output_attribute_name","successTitle","autoHide","all","attributesEditorMerge","prepareRestorePath","lastChar","SUPPRESS_REDIRECT","openDeleteModal","checkIsTrash","OPEN_DELETE_OBJECT_POPUP","getInfo","realPath","parsedRealPath","getKey","navigationGetPathInfo","createDestinationPath","unix","showTableEraseModal","TABLE_ERASE_MODAL_PARTIAL","runTableErase","combine_chunks","range","isNaN","erase","table_path","Node","iconType","parsedPath","parsedPathError","pathState","recursiveResourceUsage","sizePerMedium","chunks","nodes","tabletStaticMemory","tablets","masterMemory","locks","modified","created","linkParsedPath","linkPathState","targetPathBroken","targetPathState","unmergedRows","chunkRows","contentMode","prepareTitle","prepareCaption","YPath","clone","escapeSpecialCharacters","prepareNavigationState","recursive_resource_usage","getResource","lock_count","modification_time","creation_time","target_path","row_count","unmerged_row_count","chunk_row_count","tablet_state","TITLE_PRINT_SETTINGS","CAPTION_PRINT_SETTINGS","SUPPORTS_RESOURCE_USAGE","_Node","indent","break","binaryAsHex","highlightControlCharacter","escapeWhitespace","journal","updateResourceUsage","getFilteredNodes","isRootNode","UPDATE_RESOURCE_USAGE","nodesChunks","chunk_","batchedRequests","nodesChunk","executeBatch","navigationResourceUsage","resultChunks","dataMap","errorResults","resultChunkIndex","getNodesData","nodeData","nodeValue","newData","GENERIC_ERROR_MESSAGE","selectAll","isAllSelected","allNodes","SELECT_ALL","Chooser","getIsAllSelected","handleSelectChange","showRemoteCopyModal","_results$index","REMOTE_COPY_MODAL_PARTIAL","hideRemoteCopyModal","remoteCopy","dstCluster","MultipleActions","isOneSelected","isSelected","getSelectedNodes","isTooLarge","dynTablesActions","getSelectedNodesAllowedDynTablesActions","hasRestoreButton","handleDeleteClick","allowModifyActions","dropdownButton","restoreMoveCopy","OPEN_COPY_OBJECT_POPUP","OPEN_MOVE_OBJECT_POPUP","navigationRestorePath","restoreObjects","transferItem","editItem","mergeSortSection","showTableSortModal","showTableMergeModal","dynTablesSection","onCopyPathClick","copyToClipboard","handleClearAll","buttonText","onCopy","DropdownMenu","switcher","getFilterState","mapNode","getMediumType","mediumType","getTableColumns","customSort","chooser","renderHeader","disk_space","_node$sizePerMedium","MediumType","ALL","data_weight","chunk_count","node_count","tablet_static_memory","master_memory","tablet_count","multipleActions","getPreparedTableColumns","transform_","getContentMode","getSelected","getSortState","tables","NAVIGATION_MAP_NODE_TABLE_ID","nodesData","getNodes","getParsedPath","ContentMode","DEFAULT","makeGetSetting","getSetting","NAMESPACES","multifilter","factors","sortState","groupByType","SettingName","GROUP_NODES","TYPE_WEIGHTS","asc","groupBy","includes_","every_","weight","getSortedNodes","getNodesInfo","sumNodesType","aggregation","countValues","keyValue","_keyValue","getMapNodeResourcesLoading","resourcesLoading","DATE_REGEXP","shouldApplyCustomSort","USE_SMART_SORT","test","getLoadState","getError","getSelectedIndex","strictIndex","findIndex_","getSelectedNodesDynTablesStates","dynTablesStates","pickBy_","showLinkToModal","LINK_TO_MODAL_PARTIAL","hideLinkToModal","linkPath","dstPath","createLink","PathActions","_React$useMemo","handleUpdateView","onMove","onShowAttributes","onEditAttributes","onRestoreClick","onDeleteClick","onSort","onErase","onMerge","onMount","onUnmount","onFreeze","onUnfreeze","onLink","onTransfer","secondGroup","firstGroup","menuItems","commonProps","onlyDropdown","dropDownBtnClassName","_props$dropDownBtnThe","dropDownBtnTheme","_props$dropDownBtnSiz","dropDownBtnSize","EditTableActions","DataLensButton","getNavigationTableDataLensButtonAlerts","isEmptySchema","enableDynamicStoreRedRequired","datalensBaseUrl","datalensAllowedCluster","showTooltip","toUpperCase","btn","linkUrl","isSplit","allowQueryTracker","isQueryTrackerAllowed","Paginator","OffsetInput","ColumnSelectorButton","SettingsButton","JupyterButton","FullScreenButton","OffsetSelectorModal","_handleCONFIRMButtonClick","isTableSorted","closeOffsetSelectorModal","minKeyValue","offsetValues","_handleCANCELButtonClick","initialItems","_changeFilter","updateItemValue","prevItems","findIndex","changedItem","_handleInputChange","RegExp","escapeRegExp_","visibleItems","filterItemsByName","renderSearchBox","renderItems","isOffsetSelectorOpen","borderless","itemProps","isRequired","CLOSE_OFFSET_SELECTOR_MODAL","getCurrentOffsetValues","getIsTableSorted","TableColumnsPresetNotice","getColumnsPresetColumns","getColumnsPresetError","ErrorBlock","log","collapsed","Table","columnsProps","accessor","renderColumnSelectorModal","srcColumns","isColumnSelectorOpen","ColumnSelectorModal","srcItems","isVisible","renderTable","visibleRows","stickyTop","OVERVIEW_HEIGHT","stickyHead","syncHeadOnResize","sortable","stripedRows","displayIndices","emptyDataMessage","startIndex","getTableData","isYqlV3Types","handleScreenChanged","TableOverview","hashToLoad","getColumnsPreset","ui_loadColumnPreset","_ref$data","encode","SET_TABLE_COLUMNS_PRESET","setTablePreset","setTablePresetError","_ref5$deniedKeyColumn","preset","_preset$columns","includes","waitForFontFamilies","tableSimilarityEnabled","isTableSimilarityEnabled","field_weight_limit","max_selected_column_count","max_all_column_names_count","column_names","restoreSimilarColumns","restoreExactColumns","restoreColumns","_excluded2","storedIsFullScreen","TableConnected","getTableYsonSettings","getSrcColumns","getVisibleRows","TTLInfo","ttlItems","forceLinksAppearance","getNoSuggestionsMsg","link","TableType","DYNAMIC","STATIC","AGGREGATE_CHOICES","SELECT_EMPTY_VALUE","AggrTypes","TABLE_SETTINGS","COLUMNS","CreateTableModalContentImpl","nextId","tableName","replicasCount","getNewTableReplicasCount","uniqueKeys","activeTabId","createNewColumn","selectedColumnTab","_primitiveTypes$","duplicate","userOptions","newTab","names","tmp","genNewName","_values$TABLE_SETTING","compCodec","storageOption","optimize_for","columnsRaw","reorderColumns","isEqual_","compression_codec","StorageOptions","REPLICATION","replication_factor","erasure_codec","schemaAttributes","unique_keys","aggregate","dataType","group","optional","lock","ascending","sort_order","type_name","createTable","validateTableName","parentDirectory","closeCreateTableModal","lastValidationResult","validateForm","set_","nameCounters","columnData","nameIndexes","validateColumnData","indices","validateTableSettings","formValidator","_assertThisInitialized","indexById","sortBy_","isDynamicTable","ColumnDataTypes","ANY","YSON","isOrderedColumn","isDescendingColumn","aggr","SUM","MIN","MAX","INT64","UINT64","DOUBLE","ordered","validateAggregate","validateColumnDataType","validateColumnLock","str","round","DESCENDING","hasOrderedColumn","colData","hasUnorderedColumn","nameError","replicasCountError","validateReplicasCount","_primitiveTypes$2","_field$visibilityCond","when","isActive","compressionCodecs","erasureCodecs","groupSuggestions","virtualized","isApplyDisabled","getFormValidator","onActiveTabChange","tab","separator","ERASURE","visibilityCondition","onCreateTab","getTitle","isRemovable","renderControls","_item","_onCreate","onRemove","touched","getItems","getNoItemsMessage","_value","_oldValue","_field","_fieldName","_form","allGroups","setCreateTableGroupSuggestions","allLocks","setCreateTableLockSuggestions","_getCreateTableModalS","getCreateTableModalState","columnNameCounters","getPrimitiveTypes","getColumnGroupSuggestions","lockSuggestions","getColumnLockSuggestions","getCompressionCodecs","getErasureCodecs","trimXLSX","fileName","_i","_arr","toLowerCase","endsWith","FILE_TYPES","getExcelBaseUrl","UploadManagerCreate","parentDir","EXCEL_BASE_URL","UPLOAD_CONFIG","NodesTypes","sortedNodes","orderBy_","slice_","sum","renderItem","displayedNodes","_prepareNodes","allNodesCount","_getSumCount","otherNodesCount","renderSelected","NodesInfo","nodesInfo","closeCreateACOModal","CREATE_ACO_MODAL","createACO","namespace","tbBlock","MapNode","fetchNodes","prevPath","prevTransaction","MapNodeToolbarConnected","_this$props$error","renderToolbar","MapNodesTable","ERROR","renderView","CreateTableModal","showACOCreateButton","filterState","getMediumList","showCreateTableModal","isCreateTableModalVisible","TYPE","CONTENT_MODE_OPTIONS","RESOURCES","setFilter","SET_TEXT_FILTER","setContentMode","SET_CONTENT_MODE","allowEffectiveExpiration","isSupportedEffectiveExpiration","FETCH_NODES","_UIFactory$getNavigat","NAVIGATION_CONTENT_MAP_NODE","navigationListNodes","list","getNavigationMapNodeSettings","additionalAttributes","saveRequestCancellation","getList","applyCustomSort","APPLY_CUSTOM_SORT","changeColumnSortOrder","tableId","setMediumType","SET_MEDIUM_TYPE","openCreateTableModal","openCreateACOModal","MapNodeConnected","MapNodeWithRum","LOADING","MapNodeToolbar","_React$PureComponent","_super2","uploadXlsRef","createDirectoryButtonClick","OPEN_CREATE_DIRECTORY_POPUP","createTableButtonClick","uploadTableButtonClick","createLinkButtonClick","createACOButtonClick","_UIFactory$getMapNode","getMapNodeExtraCreateActions","renderModals","prepareSimpleValue","ShowResourcesButton","SelectSingle","menuSize","popupClass","isRoot","saveDocument","documentString","SET_DOCUMENT_EDIT_MODE","GET_DOCUMENT","getNavigationDocumentLoadingStatus","selectNavigationDocument","onEditClick","OpenYqlViewButton","DocumentExtraTools","queryAutoOpen","isYqlView","_ref4$document","Alert","layout","extraTools","onSave","handleSaveDocument","jsonEditor","fullWidth","initialSplitSize","initialShowPreview","prepareSettings","navigationGetDocument","handleEditClick","handleOnCancel","handleOnDocumentSave","DocumentBody","DocumentEditModal","NAVIGATION_CONTENT_DOCUMENT","Document","TransactionConnected","startTime","handleTransactionAbort","ABORT_TRANSACTION","navigateParent","handleModalClose","modalContent","confirmTheme","TransactionWithRum","NAVIGATION_CONTENT_TRANSACTION","Transaction","parentParsedPath","started","start_time","fragmentFromYSON","getFilteredTransactions","transactionMap","transactions","rawTransactions","getTransactions","NAVIGATION_TRANSACTION_MAP_TABLE_ID","filteredTransactions","getNavigationTransactionMapLoadingStatus","TransactionMap","handleFilterChange","changeFilter","loadTransactions","cssHover","renderIcon","renderId","renderOwner","renderStartTime","renderTitle","iconName","getIconNameForType","isLink","itemNavigationAllowed","LOAD_TRANSACTIONS","navigationListTransactions","CHANGE_FILTER","TransactionMapConnected","TranscationMapWithRum","NAVIGATION_CONTENT_TRANSACTION_MAP","supportedContentTypes","map_node","portal_entrance","portal_exit","rootstock","scion","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","tablet_cell","scheduler_pool_tree_map","scheduler_pool","string_node","int64_node","uint64_node","double_node","boolean_node","NAVIGATION_CONTENT_LINK","NAVIGATION_CONTENT_FILE","getNavigationTableLoadingState","getMeasureId","sybType","replicated_table","chaos_replicated_table","replication_log_table","nested_transaction","topmost_transaction_map","transaction_map","metaMock","cell_id","emptyRate","getFamily","_state$navigation$tab","tabs","queue","status","statusData","family","getPartitionCount","_state$navigation$tab2","partition_count","getWriteDataWeightRate","_state$navigation$tab7","_state$navigation$tab8","write_data_weight_rate","getWriteRowCountRate","_state$navigation$tab9","_state$navigation$tab10","write_row_count_rate","getStatusError","statusError","getStatusLoading","statusLoading","getStatusLoaded","statusLoaded","getQueueStatusDataAlerts","_state$navigation$tab11","alerts","getQueueMode","filters","queueMode","getQueuePartitionIndex","queuePartitionIndex","getQueuePartitionsColumns","partitionsColumns","getQueueTabletCellHost","queueTabletCellHost","getQueueTabletCellId","queueTabletCellId","getQueueConsumerName","queueConsumerName","getQueueOwner","queueOwner","getQueueRateMode","queueRateMode","getQueueTimeWindow","queueTimeWindow","getPartitions","partitions","partitionsData","_partitionsData$map$f","_partitionsData$map","partition","_partition$meta","_partition$write_data","_partition$write_row_","meta","partition_index","getPartitionsError","partitionsError","getPartitionsLoading","partitionsLoading","getPartitionsLoaded","partitionsLoaded","getConsumers","_state$navigation$tab12","registrations","consumers","consumer","read_data_weight_rate","read_row_count_rate","getConsumerPartitionIndex","consumerPartitionIndex","getConsumerRateMode","consumerRateMode","getConsumerPartitionsColumns","getConsumerTimeWindow","consumerTimeWindow","getTargetQueue","targetQueue","getConsumerRegisteredQueues","consumerData","getTargetQueueStatusData","_getTargetQueue","_statusData$queues","getStatusData","_ref$queue","queues","getOwner","_getTargetQueueStatus","_getTargetQueueStatus2","getReadDataWeightRate","_getTargetQueueStatus3","_getTargetQueueStatus4","getReadRowCountRate","_getTargetQueueStatus5","_getTargetQueueStatus6","getTargetQueueError","targetQueueStatusData","getConsumerMode","consumerMode","_partition$read_data_","_partition$read_row_c","changeConsumerFilters","CONSUMER_CHANGE_FILTERS","TargetQueue","clusterQueueUrl","firstColon","genNavigationUrl","ConsumerQueueSelector","topMargin","_useSelector2","handleSelect","_registrations$0$queu","_registrations$","pref","findCommonPathParent","Prefix","abs","marginBottom","backgroundColor","_counters$show","counters","formatter","hummerFormat","counterNames","_counters$key","BarChart","_counters$key2","Meta","partitionCount","readDataWeightRate","readRowCountRate","vital","isNull","Multimeter","BytesPerSecond","RowsPerSecond","tabItems","CONSUMER_MODE","METRICS","PARTITIONS","changeConsumerMode","Extras","bool","getter","sortAccessor","datetime","valueOf","HoverContent","_error$message","multimeter","number","readRateName","_readRateName","CONSUMER_RATE_MODE","ROWS","DATA_WEIGHT","readRateGetter","_readRateGetter","rateMode","timeWindow","loadConsumerPartitions","CONSUMER_PARTITIONS_LOAD_REQUEST","queueConsumerPartitions","CONSUMER_PARTITIONS_LOAD_SUCCESS","CONSUMER_PARTITIONS_LOAD_FAILURE","DataTableYT","useThemeYT","NoContent","hint","warning","rateItems","timeItems","CompactColumnSelector","ColumnSelector","changeConsumerPartitionIndex","changeConsumerRateMode","changeConsumerTimeWindow","changeConsumerPartitionsColumns","views","_views","ExtraControls","View","MetricsComponent","getComponentForConsumerMetrics","PartitionsExtraControls","Partitions","emptyView","loadConsumerStatus","CONSUMER_STATUS_LOAD_REQUEST","queueConsumerStatus","CONSUMER_STATUS_LOAD_SUCCESS","state2","CONSUMER_STATUS_LOAD_FAILURE","_useViewByMode","WithStickyToolbar","Toolbar","Alerts","_ref$marginDirection","marginDirection","alert","writeDataWeightRate","writeRowCountRate","changeQueueRateMode","QUEUE_CHANGE_PERSISTED_STATE","changeQueueTimeWindow","QUEUE_MODE","CONSUMERS","changeQueueMode","QueueMetrics","getComonentForQueueMetrics","QUEUE_RATE_MODE","_ref10","_consumer$split","_consumer$split2","changeQueueConsumerName","changeQueueOwner","writeRateName","_writeRateName","writeRateGetter","_writeRateGetter","classNames","_x$meta","_ref8","string","_x$meta2","loadQueuePartitions","QUEUE_PARTITIONS_LOAD_REQUEST","queuePartitions","QUEUE_PARTITIONS_LOAD_SUCCESS","QUEUE_PARTITIONS_LOAD_FAILURE","changeQueuePartitionIndex","changeQueueTabletCellHost","changeQueueTabletCellId","changeQueuePartitionsColumns","QUEUE_CHANGE_PARTITIONS_COLUMNS","queuePartitionsColumns","ConsumersExtraControls","consumersLoading","consumersLoaded","loadQueueStatus","QUEUE_STATUS_LOAD_REQUEST","queueStatus","QUEUE_STATUS_LOAD_SUCCESS","QUEUE_STATUS_LOAD_FAILURE","clusters","YT","getLocksModeFilter","modeFilter","getLocksLoadStatus","getLocksFiltered","Locks","renderTransaction","operationId","operation_id","cellTag","parseInt","clusterConfig","_clusterConfig$primar","primaryMaster","additional","findClusterConfigByOperationId","clusterId","operationIdUrl","page","Linkify","TemplateTime","onModeFilter","setLocksModeFilter","getLocks","renderIndex","renderLock","MAX_TRANSACTIONS_REQUESTS","itemsToWrap","CustomRadioButton","isPartial","renderModeFilter","renderMessage","child_key","attribute_key","GET_LOCKS","navigationLocks","rowLocks","navigationTransactions","_splitBatchResults","splitBatchResults","prepareData","IS_PARTIAL","PARTITION","LocksConnected","LocksWithRum","NAVIGATION_TAB_LOCKS","ErrorIcon","mdBlock","MarkdownLinePreview","_ref$allowHTML","allowHTML","hideModal","useMarkdown","html","div","createElement","innerHTML","plainText","innerText","footer","ExternalDescription","_data$glossaryEntity","hasWarning","markdown","glossaryEntity","typeMismatchElement","elementsBlock","COLUMNS_TO_HIDE","Schema","_loadExternalSchemaData","externalSchemaUrl","externalSchema","externalSchemaError","loadExternalSchemaData","renderExternalColumn","_this$props$computedC","computedColumns","preparedSet","col","preparedItems","omit_","_columns$column","externalSchemaDescriptionSetup","virtualType","truePath","_yield$UIFactory$exte","load","Map","filteredSchema","updateFilter","SCHEMA_UPDATE_FILTER","SchemaConnected","getAttributesPath","getSchemaMeta","getFilteredSchema","getComputedColumns","SchemaWithRum","NAVIGATION_TAB_SCHEMA","prepareFlatColumns","flatColumns","correctPrefix","getStorePreloadValues","tablet","completed","failed","pending","name_tablet_id","name_cell_id","tablet_id","cell_leader_address","allowedOrderTypes","DESC_ASC_UNORDERED","overall","replication_error_count","pivot_key","store_count","overlapping_store_count","store_preload","storePreload","aggregatedStorePreload","currentStorePreload","uncompressed_data_size","compressed_data_size","static_chunk","read","lookup","write","delete","unmerged_row_read_rate","merged_row_read_rate","static_chunk_read","static_chunk_lookup","dynamic_row_read_rate","dynamic_row_lookup_rate","dynamic_row_write_rate","dynamic_row_delete_rate","getRawTablets","getTabletsSortState","NAVIGATION_TABLETS_TABLE_ID","getActiveHistogram","histogramType","getSortedTablets","rawTablets","getFilteredTablets","tabletsFilter","sortedTablets","getPreparedDataForColumns","collection","mapValues_","getTablets","filteredTablets","preparedCollection","prepare","prepareAggregation","getHistograms","histogramItem","dataFormat","caps","histograms","getNavigationTabletsLoadingStatus","getTabletsExpandedHosts","expandedHosts","SUM_FIELDS","getTabletsMax","max_","getTabletsByNameRoot","tabletsMode","sortedAndFilteredItems","groupByKey","maxDst","maxHost","mapByName","dst","parent","level","leaves","addHostItem","isTopLevel","root","toArray_","childrenCount","_root$children$","sortTree","sortTreeInPlace","maxByLevel","getTabletsByName","expanded","isCollapsed","flattenTree","Tablets","useBytes","_this$props$maxByLeve","_item$level","getProgressBarColorByIndex","renderBytesProgress","renderNumberProgress","onRowClick","toggleExpandedHost","loadTablets","defaultItems","structure","performance","by_host","by_cell","renderTabletId","renderCellId","renderHost","renderPivotKey","renderStorePreload","dynamic_read","dynamic_lookup","dynamic_write","dynamic_delete","itemMods","changeTabletsFilter","changeTabletsMode","histogramCollapsed","toggleHistogram","changeActiveHistogram","collapsibleSize","onToggle","renderOverview","rowClassName","onItemClick","top","TABLET","renderIdWithLink","genTabletCellBundlesCellUrl","none","freezing","unfreezing","mounting","unmounting","pivotKey","storePreloadProgress","prepareStorePreloadProgress","_Tablets","typedValueProps","tabletProps","last_commit_timestamp","performance_counters","statistics","GET_TABLETS","navigationTablets","TYPED_OUTPUT_FORMAT","TOGGLE_HISTOGRAM","CHANGE_TABLETS_MODE","TABLETS_STATE_PARTIAL","CHANGE_ACTIVE_HISTOGRAM","TabletsConnected","TabletsWithRum","NAVIGATION_TAB_TABLETS","getAttributesTab","getAttributesLoadingInfo","requestAttributes","requestParams","_response$","attributesActions","onRequest","nodeAttributes","isCancelled","onFailure","Attributes","attributesPath","YsonDownloadButton","AttributesWithRum","NAVIGATION_TAB_ATTRIBUTES","shortcut","TIMELINE_RANGE_PICKER_SHORTCUTS","getAccessLogFilterPagination","accessLog","accessLogFilters","pagination","getAccessLogFilterPathRegex","path_regex","getAccessLogFilterUserRegex","user_regex","getAccessLogFilterMethod","method_group","getAccessLogFilterUserType","user_type","getAccessLogFilterScope","getAccessLogFilterTime","getAccessLogFilterFieldSelector","field_selector","getAccessLogFilterMetadata","metadata","getAccessLogFilterDistinctBy","distinct_by","getAccessLogLoading","getAccessLogReady","ready","getAccessLogLoaded","getAccessLogError","getAccessLogItems","accesses","getAccessLogAvailableTimeRange","availableTimeRange","getAccessLogPagesCount","total_row_count","totalRowCount","getAccessLogLastLoadedParams","skipEmpty","getAccessLogRequestParams","convertTimeToRequestParams","begin","end","getAccessLogHasChangedFilters","lastLoaded","getAccessLogLastLoadedFieldSelector","accesLogCancelHelper","fetchAccessLog","pathChanged","lastLoadedParams","ACCESS_LOG_PATH_CHANGED","ACCESS_LOG_REQUEST","ACCESS_LOG_PARTIAL","getAccessLogBasePath","removeAllAndGenerateNextToken","latest","erliest","ACCESS_LOG_SUCCESS","_e$response","ACCESS_LOG_FAILURE","setAccessLogFilters","ACCESS_LOG_FILTERS","setAccessLogFiltersPage","TransactionInfo","CopyText","transaction_title","operation_title","copyText","DateHeaderMemo","DateHeader","MOVING","stickyFooter","STICKY_DOUBLE_TOOLBAR_BOTTOM","stickyBottom","AccessLogTable","fieldSelector","instant","_ref3$row","original_path","PathTag","transaction_info","headerTitle","_ref9","AccountsLogTransactionInfo","pageCount","ColumnHeader","pageIndex","isTarget","capitalize","AccessLogError","valueToSelection","selectionToValue","emptyValue","ACCESS_LOG_FIELD_SELECTOR_ITEMS","ACCESS_LOG_METHOD_ITEMS","ACCESS_LOG_USER_TYPE_ITEMS","ACCESS_LOG_SCOPE_ITEMS","clipPath","fillRule","clipRule","AccessLogOpenQtButton","setLoading","_","newParams","_yield$wrapApiPromise","query_id","AbbrSqlIcon","AccessLogFilters","AccessLogPagination","AccessLogTimeline","AccessLogFieldselector","AccessLogMetadata","AccessLogDistictBy","AccessLogPathRegexp","growable","shrinkable","AccessLogUserRegexp","AccessLogUserTypeFilter","AccessLogScopeFilter","AccessLogMethod","AccessLogApplyFilters","hasChanges","SimplePagination","METADATA_ITEMS","valueStr","vals","DISTINCT_BY_ITEMS","handleUpdate","initialState","EMPTY_OBJECT","maxVisibleValues","TIMELINE_SHOURCUTS","updateTime","updateShortcut","_ref$from","_ref$to","TimelinePicker","onShortcut","shortcuts","hasDatePicker","AvailableTimeRange","earliest","formatInterval","AccessLog","ACCESS_LOG_RESET_FILTERS","doubleHeight","getTabletErrors","tabletErrorsBackground","tabletErrors","replicationErrors","getTabletErrorsReplicationErrors","TabletErrorsConnected","tablet_errors","TabletErrorsCountNotice","TabletErrorsBlock","sectionClassName","ReplicationErrorsBlock","TabletErrorsWithRum","getTabletErrorsLoadingStatus","NAVIGATION_TAB_TABLET_ERRORS","counter","replicaId","ReplicaErrorHeader","getTabletErrorsBackgroundCountNoticeVisbile","TabletErrorsHeader","disableLogger","getTabletErrorsByPathError","tabletErrorsByPath","getTabletErrorsByPathLoading","getTabletErrorsByPathLoaded","getTabletErrorsByPathData","getTabletErrorsByPathDataParams","dataParams","getTabletErrorsByPathAllMethods","all_methods","getTabletErrorsByPathPageCount","getTabletErrorsByPathTimeRange","timeRangeFilter","getTabletErrorsByPathMethodsFilter","methodsFilter","getTabletErrorsByPathPageFilter","pageFilter","getTabletErrorsByPathTabletIdFilter","tabletIdFilter","TabletErrorsByPathTable","_useTableColumnsAndDa","_ref2$errors","alignItems","timestamp","useTableColumnsAndData","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT","TabletErrorsRequest","TabletErrorsRequestToolbar","_useTabletErrorFromAp","_calcFromTo","tabletErrorsByPathActions","table_id","start_timestamp","end_timestamp","methods","prevDataParams","prevData","fixed_end_timestamp","count_limit","useTabletErrorFromApiLoad","_useTabletErrorFromAp2","allMethods","hasRuler","maxVisibleValuesTextLength","TabletErrors","viewMode","getTabletErrorsViewMode","backgroundErrorCount","allowTabletErrorsAPI","TabletErrorsBackground","updateTabletErrorsViewMode","_callee2","_dispatch","_context2","getUserAttributes","userAttributes","getUserAttributesLoadInfo","UserAttributes","userAttributesActions","navigationUserAttributes","UserAttributesWithRum","NAVIGATION_TAB_USER_ATTRIBUTES","TableMountConfig","getNavigationTableMountConfig","getNavigationMountConfigYsonSettings","Flow","withLazyLoading","supportedAttributeTypes","_supportedAttributeTy","acl","ACL","user_attributes","Tab","ACCESS_LOG","AUTO","CONSUMER","Consumer","MOUNT_CONFIG","QUEUE","Queue","FLOW","getNavigationExtraTabs","component","getSupportedAttributeTypes","checkContentIsSupported","CONTENT","getComponentByContentType","getComponentByMode","noAccess","_WithKeyboardNavigation","ElementsTableBase","WithKeyboardNavigation","_args","hoverSelectedIndex","selectedIndex","wrapHotkeyHandler","_len2","_key2","selectIndex","maxIndex","selectNext","selectPrev","handleMouseMove","handleItemHover","handleItemSelect","querySelector","windowHeight","clientHeight","bounding","getBoundingClientRect","bottomCoordinate","topCoordinate","scrollIntoView","scrollBy","handleItemKeyboardClick","hotkeys","onItemHover","onMouseMove","onItemSelect","Hotkey","renderMapNodesTableIcon","renderNodeIcon","isTrashNode","isLinkToTrashNode","_index","_evt$target","_evt$target$contains","classList","contains","onChooserClick","batch","setMode","onSpaceHotkey","info","shiftKey","nativeEvent","setSelectedItem","renderChooser","renderRowCount","dyntable","defaultColumns","resources","resourcesColumns","renderLocks","renderModificationTime","renderCreationTime","renderAccount","tableProps","_createElement","TRASH_PATH","linkState","renderNameImpl","renderTags","renderTrash","textOrLink","poolTreeIndex","fragments","fragment","pool","ROOT_POOL_NAME","poolTree","SCHEDULING","SchedulingTab","OVERVIEW","arrow","goToLink","viewLink","lastSelected","getLastSelected","lastIndex","nameIndex","SET_SELECTED_ITEM","MapNodesTableConnected","MapNodesTableWithRum","DeleteObjectModal","deleteObject","deleteObjects","getRealPath","getRealPaths","loadingRealPath","errorRealPath","renderLoader","renderMultipleModeContent","errorDataRealPath","_this$props5","permanently","togglePermanentlyDelete","_this$props6","multipleInfo","resourceUsage","nodeCount","renderPermanentlyCheckbox","_this$props7","buildItems","_this$props8","closeDeleteModal","helpLinkUrl","LOAD_REAL_PATH","navigationGetPath","_navigation$modals$de2","DELETE_OBJECT","CLOSE_DELETE_OBJECT_POPUP","_getState","_navigation$modals$de","remove","deleteCurrentObject","currentPath","realPathDecoded","decodeEscapedAbsPath","_getState3","_navigation$modals$de3","navigationDelete","permanentlyDeleteObjects","setAttributesRequests","navigationMoveToTrashRestorePath","navigationMoveToTrash","moveObjectsIntoTrash","responses","reverse","TOGGLE_PERMANENTLY_DELETE","AnnotationVisibility","AnnotationWithPartial","annotation","isFullText","Markdown","ActionButtons","isSaving","onSaveClick","onCancelClick","getNavigationAnnotation","visibility","getSettingAnnotationVisibility","getNavigationAnnotationSaving","isEditing","getNavigationAnnotationEditing","annotationPath","getNavigationAnnotationPath","getNavigationAnnotationError","oldValue","handleToggleAnnotationCollapse","setSettingAnnotationVisibility","SET_ANNOTATION_EDITING","handleCancelClick","SET_ANNOTATION","handleChangeDescription","handleSaveClick","saveAnnotation","overview","EditAnnotationWithPreview","valuePath","hideReset","isContentTab","NavigationDescription","ErrorImages","stroke","strokeLinecap","strokeLinejoin","strokeWidth","opacity","NavigationErrorImage","ErrorImage","denyColumns","getDenyColumnsItems","getIdmPermissionsRequestError","RequestPermissions","RequestPermissionIsNotAllowed","objectType","RequestPermission","errorPath","isRequestPermissionsForPathAllowed","pathForRequest","getParentPath","ErrorsInfo","username","perm","getLeadingErrorCode","errorCode","getYtErrorCode","inner_error","innerErrorCode","PrettyError","getPermissionDeniedError","getErrorTitle","justifyContent","ErrorDetails","UnexpectedError","NavigationError","NavigationPermissionsNotice","isWriteable","getNavigationIsWritable","isAccountUsable","getNavigationIsAccountUsable","checkPermissionsError","getNavigationCheckPermissionsError","getNavigationPathAccount","accountAclLink","genAccountsAclLink","Block","AttributesEditorLoaded","singleMode","getMediumListNoCache","storeError","stateError","setErr","hasMapNodes","hasStaticTables","hasDynamicTables","hasTables","hasDynTableOrMapNode","pathsValues","annotationInitial","general","primary_medium","storage","compressionCodecValueFromString","normalizeErasureCodec","_storageOption","storageOptionFromErasureCodec","dataDiff","generalAttributes","storageAttributes","compressionCodecValueToString","erasureCodecFromStorageOption","forEachStaticTable","mergeNoticeAndError","DialogError","annotationTab","inMemoryModeField","InMemoryMode","NONE","COMPRESSED","UNCOMPRESSED","optimizeForField","AttributesEditor","validateStorage","validateReplicationFactor","getRemoteCopyModalVisible","remoteCopyModal","getRemoteCopyModalPaths","makeCompressionCodecFinder","findCompressionCodec","RemoteCopyModal","_pathsValues$","_response","calculateValueOnPoolsLoaded","loadedPoolNames","schema_inference_mode","override","excludeClusters","allowEphemeral","getNavigationTableEraseModalVisible","tableEraseModal","getNavigationTableEraseModalPath","TableEraseModal","validator","validateRange","RANGE","TableSortModal","getCurrentUserName","getNavigationTableSortVisible","getNavigationTableSortPaths","suggestError","getNavigationTableSortError","suggestColumns","getNavigationTableSortSuggestColumns","attributeValues","getNavigationTableAttributesValues","_paths","_outputPath","outputPath","sort_by","pool_trees","runTableSort","hideTableSortModal","handlePathsChange","tableSortModalLoadColumns","errorFields","WaitForDefaultPoolTree","defaultPoolTree","isPathStaticTable","allowDescending","poolTrees","TableMergeModal","getNavigationTableMergeVisible","chunkSize","chunkSizeBytes","data_size_per_job","parseBytes","runTableMerge","merge_by","hideTableMergeModal","getDynTablesStateModalVisible","dynTablesStateModal","getDynTablesStateModalPaths","getDynTablesStateModalAction","DynTablesStateModal","WARN_TEXT","renderWarning","getLinkToModalState","linkToModal","LinkToModal","_validator2","_validator","_callee3","_context3","getCreateACOModalState","createACOModal","CreateACOModal","Navigation","onTabChange","onEditButtonClick","trackVisit","updateTitleWithPath","onTransactionChange","updateTitle","tabSize","Tabs","active","underline","_this$props6$type","ContentViewer","_this$props8$error","_this$props9","hasError","renderEditButton","renderTabs","NavigationConnected","isFinalState","isNavigationFinalLoadState","isIdmSupported","getIdmSupport","UI_TAB_SIZE","getTabs","NavigationWithRumMemo","NavigationWithMesure","NAVIGATION_PRELOAD","NavigationWithRum","Editor","cancelOnBlur","NavigationTopRowContent","getNavigationDefaultPath","RowWithName","urlParams","NavigationFavourites","EditableNavigationBreadcrumbs","NavigationTools","favourites","getFavouritePaths","isInFavourites","isCurrentPathInFavourites","handleToggle","navigationToggleFavourite","handleItemClick","Favourites","NavigationPathToClipboard","onCopyToClipboard","toggleEditMode","NavigationPathEditor","hideEditor","NavigationBreadcrumbs","actualPath","getActualPath","_event$target","select","bcItems","getNavigationBreadcrumbs","getMode","history","useHistory","isLastItem","makeRoutedURL","pathname","navmode","BreadcrumbsItem","Breadcrumbs","navigate","showRoot","RefreshButton","RestoreButton","handleClearTransaction","clearTransaction","handleEdit","setTransaction","navigation_refresh","getNavigationRestorePath","handleRestore","centered","useQueryWidgetSidePanel","SchedulingOperationsLoader","getSchedulingOperationsLoadingStatus","useRumMeasureStart","subPage","prepareUserPermissions","userPermissions","permissionTypes","getPathToCheckPermissions","_getPathToCheckPermissions","_callee4","entityName","fullPath","_context5","UI_EFFECTIVE_ACL","POOL","TABLET_CELL_BUNDLE","schedulingPoolFullPath","loadAclData","normalizedPoolTree","userPermissionsPath","_state$global","_state$global$cluster","pathToCheckPermissions","pathToCheckUserPermissions","LOAD_DATA","getTree","getAcl","kind","sysPath","checkUserPermissionsUI","getResponsible","responsible","version","auditors","objectPermissions","column_groups","readApprovers","disableAclInheritance","bossApproval","disableInheritanceResponsible","t1","deletePermissions","roleKey","itemToDelete","_getState$global$clus","deletePermissionsPath","DELETE_PERMISSION","deleteRole","_x6","_x7","dateToDaysAfterNow","date","getTime","_ref11","_state$global$cluster2","daysAfter","roles","rolesGroupedBySubject","_loop","_values$comment","requestPermissionsPath","_context4","REQUEST_PERMISSION","subject","commonPart","flattenPermissions","prepareAclSubject","deprive_after_days","_ref12","_ref13","applyToRequestedRole","flatten_","convertFromUIPermissions","role_type","column_group_id","delegateYield","roles_grouped","t2","_x8","_x9","_ref14","updateAcl","_ref15","_getState$global$clus2","UPDATE_ACL","cancelUpdateAcl","_ref17","_yield$ytApiV3Id$sele","_yield$ytApiV3Id$read","readTable","prepareHeaders","getCliCommandResultFormat","_tag$split","_tag$split2","extension","getImageResultFormat","getDynamicTableCellPath","getCurrentRowKey","getDynamicTableCliCommand","cellPath","loadDynamicTableCellPreview","getStaticTableCellPath","getStaticTableCliCommand","loadStaticTableCellPreview","ytApiV4","getCellPath","getCliCommand","loadCellPreview","getDefaultRequestOutputFormat","PREVIEW_LIMIT","value_format","cellPreviewCancelHelper","isIncomplete","parsed","typeIndex","_unipika$converters$y","hasType","CELL_PREVIEW","openCellPreview","incomplete","converters","yql","yql_type_registry","maxStringSize","maxListSize","treatValAsData","$incomplete","getApproversSubjectFilter","aclFilters","approversSubject","getObjectSubjectFilter","objectSubject","getObjectPermissionsFilter","getAclFilterColumns","columnsFilter","getAclFilterColumnGroupName","columnGroupNameFilter","getAclFilterExpandedSubjects","expandedSubjects","getAclCurrentTab","aclCurrentTab","prepareColumnsNames","columnsPermissions","uniq_","prepareApprovers","approvers","extra","subjectType","groupInfo","group_name","getAllUserPermissions","getAllObjectPermissions","getAllObjectPermissionsWithSplittedSubjects","isSplitted","subjectIndex","getObjectPermissionsTypesList","permissionsFilter","uniquePermisions","subjectFilterPredicate","_item$subjects$","_str","pop","getAllObjectPermissionsFiltered","subjectFilter","_partition_","partition_","_item$columns","_partition_2","mainPermissions","lowerNameFilter","toLocaleLowerCase","filterBySubject","permissionsFilterSet","filterByPermissions","_permissionsFilterPre","foundCount","some","p","permissionsFilterPredicate","filterByColumns","_columns$some","colName","mainPredicates","columnsPredicates","concatByAnd","getObjectPermissionsAggregated","aggregateBySubject","AggregateBySubject","aggrKey","inherited","allPermissions","aggregationKey","_item$permissions","_child$permissions","_child$permissions2","_item$columns2","_this$first","_this$first2","_this$first3","_this$first4","isMissing","isUnrecognized","isApproved","isRequested","hasInherited","hasDenyAction","inheritedFrom","hasExpandable","objPermissions","aggregated","aggKey","_item$getItems","_partition_3","_partition_4","other","OrderByRoleStatus","getAllColumnGroupsActual","nameFilter","nameFilterLower","predicates","removed","_item$columns$some","_item$columns3","_item$name","filtered","unrecognized","requested","depriving","isDepriving","getReadApprovers","getResponsibles","getAuditors","getNotInheritedReadApprovers","readApprover","getNotInheritedResponsibles","responsibles","getNotInheritedAuditors","auditros","auditro","getAllApprovers","getHasApprovers","getApproversFiltered","getApproversFilteredAndOrdered","getAllAccessColumnsPermissions","filteredPermissions","_permission$columns","getAllDenyColumnsPermissions","_permission$columns2","getAllAccessColumnsNames","getAllDenyColumnsNames","isPermissionDeleted","permissionDeletionError","deletionError","getLastDeletedPermissionKey","deletedItemKey","idmPermissionsRequestError","getIdmManageAclRequestError","idmManageAclRequestError","getIdmPathVersion","getChaosIsLoaded","chaos_cell_bundles","getChaosIsLoading","getChaosBundlesSortState","bundlesSort","getChaosBundlesNameFilter","bundlesNameFilter","getChaosBundlesAccountFilter","bundlesAccountFilter","getChaosBundlesTagNodeFilter","bundlesTagNodeFilter","getChaosBundles","bundles","getChaosActiveBundle","activeBundle","getChaosBundlesTableMode","bundlesTableMode","getChaosActiveBundleData","bundle","getChaosBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getChaosBundlesFiltered","accountFilter","tagNodeFilter","lowerAccountFilter","changelog_account","snapshot_account","lowerTagNodeFilter","node_tag_filter","getChaosBundlesSorted","sortTableBundles","columnsSortable","getChaosCells","cells","getChaosCellsSortState","cellsSort","getChaosCellsIdFilter","cellsIdFilter","getChaosCellsBundleFilter","cellsBundleFilter","getChaosCellsHostFilter","cellsHostFilter","getChaosCellsOfActiveAccount","getChaosCellsFiltered","idFilter","bundleFilter","hostFilter","peerAddress","filterChaosCellsByBundle","getChaosCellsSorted","sortArrayBySortState","getChaosCellsBundles","getChaosCellsHosts","getChaosCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","getChaosBreadcrumbItems","tabletChaosBundleRootLink","getChytListData","chyt","getChytListAvailableCreators","_data$items","creator","getChytListAvailableHealths","_data$items2","health","getChytListAvailableStates","_data$items3","getChytCurrentAlias","clique","currentClique","getChytListFilterAlias","listFilters","getChytListFilterHealth","getChytListFilterCreator","getChytListFilterState","CHYT_LIST_SELECTABLE_COLUMNS","instance_count","total_cpu","total_memory","stage","yt_operation_start_time","yt_operation_finish_time","speclet_modification_time","strawberry_state_modification_time","getChytListVisibleColumns","_getSettingsData$glob","userColumns","getChytListColumns","getChytListTableSortState","getChytListTableSortStateByName","multisortIndex","getChytFilterPredicate","alias","getChytListTableItems","predicate","_data$items4","filteredItems","multiSortBySortStateArray","getFavouriteAccounts","getAccountsNS","prepareFavourites","getLastVisitedAccounts","prepareLastVisited","getPopularAccounts","preparePopulars","isActiveAcountInFavourites","getActiveAccount","prepareIsInFavourites","getFavouriteChyt","getChytNS","getLastVisitedChyt","isActiveCliqueInFavourites","getClusterNS","getLastVisitedPaths","getPopularPaths","getFavouritePools","getSchedulingNS","isActivePoolInFavourites","getPool","tree","getFavouriteBundles","getBundlesNS","isActiveBundleInFavourites","getTabletsActiveBundle","getFavouriteChaosBundles","getChaosBundlesNS","isActiveChaosBundleInFavourites","parentNS","LOCAL","FAVOURITES","settingGetter","LAST_VISITED","lastVisited","entry","attributesWithTypes","rawPath","navigationPath","ex","getSchedulingAbcFilter","scheduling","abcServiceFilter","getSchedulingAttributesToFilter","attributesToFilter","getSchedulingAttributesToFilterParams","attributesToFilterParams","schedulingOverviewHasFilter","abcFilter","getSchedulingFilteredPoolNames","getSchedulingPoolsMapByName","attrsToFilter","loadedPools","_attrs$abc","abc","poolName","getExpandedPoolCypressData","expandedPools","flattenCypressData","getSchedulingOperations","rawOperations","getExpandedPoolsTree","expandedPoolsTree","getSchedulingOperationsError","getSchedulingOperationsExpandedPools","getExpandedPoolsLoadAll","loadAll","RESOURCE_LIMIT_MAPPER","user_memory","preparePoolChildResource","treeResources","resource","guaranteed","usage","demand","limitResource","cypressAttributes","detailed","updatePoolChild","cypressData","_data$leaves","_initedBy","leaf","child_pool_count","pool_operation_count","emptyOp","operationCount","maxOperationCount","maxOperationCountEdited","runningOperationCount","maxRunningOperationCount","maxRunningOperationCountEdited","starvation_status","weightEdited","minShareRatio","maxShareRatio","fairShareRatio","fifoIndex","usageRatio","demandRatio","isEphemeral","integralType","userDefinedBurstCPU","burstCPU","userDefinedFlowCPU","flowCPU","userDefinedFlowGPU","flowGPU","accumulated","accumulatedCpu","burstDuration","fifoSortParams","param","forbidImmediateOperations","createEphemeralSubpools","dominantResource","appendInnerErrors","getPoolsRaw","rawPools","getSchedulingTreeOperations","getOperationsFiltered","getPoolsPrepared","wrap","preparedPools","preparePools","pools","getSchedulingPoolsExtraInfo","poolsMap","calcChildrenIntegrals","childrenBurstCPU","childrenFlowCPU","itemExtraInfo","getPools","itemExtra","getResourcesText","resourceLimit","getNetworkResourceText","getMemoryResourceText","getDefaultResourceText","getResourceProgressValue","prepareResources","resourceLimits","getResourceProgress","getPoolsImpl","getSchedulingIsInitialLoading","_state$scheduling$sch","_state$scheduling$exp","getExpandedPoolsIsInitialLoading","getTreeResources","getPoolChildrenFilter","poolChildrenFilter","getSchedulingTreeState","treeState","getSchedulingEditItem","getPoolsNames","_v","DETAILS_CONTENT_MODES","cpu","memory","gpu","user_slots","operations","integral","getIsRoot","getTreesSelectItems","trees","getPoolsSelectItems","getCurrentPool","getPoolIsEphemeral","currentPool","getCurrentPoolChildren","getCurrentPoolOperations","getResources","getFilteredTree","treeRoot","visiblePools","treeList","filterTree","getTableItems","SCHEDULING_POOL_TREE_TABLE_ID","filteredTree","sortedTree","poolsTableItems","getSchedulingOverviewMaxDepth","allExpanded","expandedPoolsMap","_ref$level","getPoolChildrenData","getFilteredPoolChildren","poolChildrenData","getSortedPoolChildren","SCHEDULING_POOL_CHILDREN_TABLE_ID","filteredPoolChildren","poolChildrenSortState","childTableItems","addGetParams","getPollChildrenTableItems","sortedPoolChildren","isChildPool","CLUSTERS_WITHOUT_POOL_ACL","isPoolAclAllowed","getCurrentPoolPath","calculatePoolPath","pathStr","getSchedulingTopPoolOfEditItem","mapOfPools","isAbcPoolName","isTopLevelPool","getSchedulingSourcesOfEditItem","topPool","visitTreeItems","isNeedToSkipChildren","getSchedulingSourcesOfEditItemSkipParent","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","compact","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getEditJsonYsonSettings","getNodeUnrecognizedOptionsYsonSettings","getFlowSpecYsonSettings","toSkip","concat_","toAdd","YqlValue","formattedValue","getFormattedValue","titleSettings","formatRaw","formatFromYQL","classes","dir","yqlValue","defaultUnipikaSettings","unquote","ColumnCell","_ref$value","formatType","escapedValue","isIncompleteTagged","isIncompleteValue","allowRawCopy","useRawString","copyTooltip","visibleValue","UIKitIcon","Eye","sortOrder","isKeyColumn","unescapeKeyValue","prepareDetailedColumn","_item$resources","prepareLimitColumn","_item$resources2","sortWithUndefined","prepareMinResourcesColumn","_item$resources3","prepareAbsGuaranteedColumn","_item$resources4","prepareRelGuaranteedColumn","prepareAbsDemandColumn","_item$resources5","prepareAbsUsageColumn","_item$resources6","prepareRelUsageColumn","prepareGuaranteedUsageColumn","captionTail","FI","min_share","max_share","fair_share","fair_share_usage","dominant_resource","resource_detailed_cpu","resource_detailed_memory","resource_detailed_gpu","resource_detailed_user_slots","resource_limit_cpu","resource_limit_memory","resource_limit_gpu","resource_limit_user_slots","min_resources_cpu","min_resources_memory","min_resources_gpu","min_resources_user_slots","abs_guaranteed_cpu","abs_guaranteed_memory","abs_guaranteed_gpu","abs_guaranteed_user_slots","rel_guaranteed_cpu","rel_guaranteed_memory","rel_guaranteed_gpu","rel_guaranteed_user_slots","abs_usage_cpu","abs_usage_memory","abs_usage_gpu","abs_usage_user_slots","abs_demand_cpu","abs_demand_memory","abs_demand_gpu","abs_demand_user_slots","rel_usage_cpu","rel_usage_memory","rel_usage_gpu","rel_usage_user_slots","guaranteed_usage_cpu","guaranteed_usage_memory","guaranteed_usage_gpu","guaranteed_usage_user_slots","operation_overview","operation_count","max_operation_count","operation_progress","running_operation_count","max_running_operation_count","running_operation_progress","integral_type","burst_cpu","flow_cpu","children_burst_cpu","children_flow_cpu","accumulated_cpu","burst_duration","prepareTrees","prepareCurrentTree","defaultTree","treeNodesMap","prepareTree","attachTreeLeaves","operation","computePoolPath","parentPool","flattenAttributes","obj","toReturn","object","hasOwnProperty","innerObject","is","flatObject","getResourceLimit","limitKey","INTEGRAL_GUARANTEES_PREFIX","POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR","guaranteeType","burstCpu","burstRam","burstGpu","flowCpu","flowRam","flowGpu","POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE","cpuStrong","gpuStrong","memoryStrong","POOL_GENERAL_TYPE_TO_ATTRIBUTE","POOL_RESOURCE_TYPE_TO_ATTRIBUTE","getPoolResourceInfo","childrenSum","firstValidNumber","prepareMinGuaranteed","prepareValueDetails","getPoolResourceInitialValue","allowSource","source","getInitialValues","allowedSources","slug","indexOf_","abcService","resourceGuarantee","integralGuarantee","userSlots","otherSettings","isImageTag","isVideoTag","i18nFactory","registerKeysets","CHARTKIT_ERROR_CODE","INVALID_DATA","UNKNOWN","TOO_MANY_LINES","ChartKitError","originalError","isCustomError","mergeSettingStrategy","objValue","srcValue","currentPlugins","newPlugins","newSettingsPlugins","currentPlugin","newPluginIndex","newPlugin","settingsEventEmitter","events","eventId","updateLang","configure","setLang","updates","filteredUpdates","withNaming","m","getRandomCKId","chars","random","randomString","AlertContext","useAlertContext","context","AlertAction","bAlert","AlertContextProvider","Provider","typeToIcon","danger","filled","outlined","CircleInfo","success","CircleCheck","TriangleExclamation","utility","Thunderbolt","normal","addComponentKeysets","en","corners","Card","spacing","py","px","grow","Title","Actions","I","Xmark","colorText","iconByTheme","minContent","Action","cnDropdownMenu","DropdownMenuContext","moveBack","activeItemIndex","skip","newActiveItemIndex","moveForward","rootMenuPath","DropdownMenuNavigationContext","activeMenuPath","setActiveMenuPath","DropdownMenuNavigationContextProvider","contextValue","dropdownMenuSeparator","isSeparator","shouldSkipItemNavigation","stringifyNavigationPath","DropdownMenuPopup","menuProps","popupProps","navigationAnchorRef","isSubmenu","activateParent","handleMouseEnter","handleMouseLeave","activeItem","handleKeydown","isSubmenuToggleActive","isNavigationActive","setActiveItemIndex","reset","resetNavigation","processHomeKey","processEndKey","onAnchorKeyDown","previousActiveItemIndex","useListNavigation","Menu","isActiveParent","DropdownMenuItem","closeMenu","isSubmenuOpen","every","useSubmenu","hasSubmenu","closeSubmenu","openSubmenu","subMenuItems","menuItemRef","useDirection","handleCloseMenu","handleMenuItemClick","subMenuPlacement","iconEnd","ChevronLeft","ChevronRight","Item","toItemList","updatedItems","addedGroup","groupItems","updatedItem","DropdownMenuExport","Ellipsis","onOpenToggle","hideOnScroll","renderSwitcher","switcherWrapperClassName","defaultSwitcherProps","defaultSwitcherClassName","onSwitcherClick","isPopupShown","togglePopup","closePopup","onChangeVisibility","setPopupShown","property","setProperty","isControlled","nextValue","previousState","newState","useStateWithCallback","useConditionallyControlledState","isShown","usePopupVisibility","onScroll","handleScroll","useScrollHandler","itemsList","handleSwitcherClick","handleSwitcherKeyDown","useActionHandlers","switcherProps","MenuGroup","labelId","useUniqId","u","role","MenuItem","iconStart","rel","handleClickCapture","publish","componentId","domEvent","onClickCapture","tabIndex","interactive","Group"],"sourceRoot":""}
|