@ytsaurus/ui 1.95.0 → 1.97.0
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/README.md +1 -0
- package/dist/public/build/assets-manifest.json +39 -37
- package/dist/public/build/css/1454.e1b6441b.chunk.css +2 -0
- package/dist/public/build/css/1454.e1b6441b.chunk.css.map +1 -0
- package/dist/public/build/css/333.4b28585f.chunk.css +2 -0
- package/dist/public/build/css/333.4b28585f.chunk.css.map +1 -0
- package/dist/public/build/css/{3716.f1b13197.chunk.css → 3716.932479b0.chunk.css} +2 -2
- package/dist/public/build/css/3716.932479b0.chunk.css.map +1 -0
- package/dist/public/build/css/4592.687b04fa.chunk.css +2 -0
- package/dist/public/build/css/4592.687b04fa.chunk.css.map +1 -0
- package/dist/public/build/css/8944.c58273b7.chunk.css +2 -0
- package/dist/public/build/css/8944.c58273b7.chunk.css.map +1 -0
- package/dist/public/build/css/{navigation.32b6fca4.chunk.css → navigation.4b7a1ff3.chunk.css} +2 -2
- package/dist/public/build/css/navigation.4b7a1ff3.chunk.css.map +1 -0
- package/dist/public/build/js/1016.3ced9e8b.chunk.js +2 -0
- package/dist/public/build/js/1016.3ced9e8b.chunk.js.map +1 -0
- package/dist/public/build/js/2150.647430c7.chunk.js +2 -0
- package/dist/public/build/js/2150.647430c7.chunk.js.map +1 -0
- package/dist/public/build/js/4776.b922a445.chunk.js.map +1 -1
- package/dist/public/build/js/{5082.b1a7f7b1.chunk.js → 5082.b475d219.chunk.js} +2 -2
- package/dist/public/build/js/5082.b475d219.chunk.js.map +1 -0
- package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js +2 -0
- package/dist/public/build/js/cluster-page-wrapper.b7cb91f7.chunk.js.map +1 -0
- package/dist/public/build/js/dashboard.8850118b.chunk.js +3 -0
- package/dist/public/build/js/dashboard.8850118b.chunk.js.map +1 -0
- package/dist/public/build/js/main.a609b753.js +3 -0
- package/dist/public/build/js/main.a609b753.js.map +1 -0
- package/dist/public/build/js/navigation.7e85a761.chunk.js +2 -0
- package/dist/public/build/js/navigation.7e85a761.chunk.js.map +1 -0
- package/dist/public/build/js/runtime.78bd9bc8.js +2 -0
- package/dist/public/build/js/runtime.78bd9bc8.js.map +1 -0
- package/dist/public/build/js/scheduling.680c5ca7.chunk.js +2 -0
- package/dist/public/build/js/scheduling.680c5ca7.chunk.js.map +1 -0
- package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js +2 -0
- package/dist/public/build/js/tablet-errors-by-bundle.95473558.chunk.js.map +1 -0
- package/dist/public/build/js/{yt-df-dialog.ba05eea6.chunk.js → yt-df-dialog.5aa0b817.chunk.js} +3 -3
- package/dist/public/build/js/yt-df-dialog.5aa0b817.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +34 -32
- package/dist/server/components/requestsSetup.d.ts +1 -1
- package/dist/server/components/requestsSetup.js +5 -2
- package/dist/server/controllers/yt-tablet-errors-api.js +7 -3
- package/dist/shared/tablet-errors-manager.d.ts +1 -0
- package/package.json +2 -2
- package/dist/public/build/css/1454.cc1b5254.chunk.css +0 -2
- package/dist/public/build/css/1454.cc1b5254.chunk.css.map +0 -1
- package/dist/public/build/css/333.dc69b4bd.chunk.css +0 -2
- package/dist/public/build/css/333.dc69b4bd.chunk.css.map +0 -1
- package/dist/public/build/css/3716.f1b13197.chunk.css.map +0 -1
- package/dist/public/build/css/6975.7cc85b1a.chunk.css +0 -2
- package/dist/public/build/css/6975.7cc85b1a.chunk.css.map +0 -1
- package/dist/public/build/css/navigation.32b6fca4.chunk.css.map +0 -1
- package/dist/public/build/js/1016.d5d3729e.chunk.js +0 -2
- package/dist/public/build/js/1016.d5d3729e.chunk.js.map +0 -1
- package/dist/public/build/js/45.12c412c1.chunk.js +0 -2
- package/dist/public/build/js/45.12c412c1.chunk.js.map +0 -1
- package/dist/public/build/js/5082.b1a7f7b1.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-page-wrapper.fe57aae8.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.fe57aae8.chunk.js.map +0 -1
- package/dist/public/build/js/dashboard.0a7085cc.chunk.js +0 -3
- package/dist/public/build/js/dashboard.0a7085cc.chunk.js.map +0 -1
- package/dist/public/build/js/main.0aacb164.js +0 -3
- package/dist/public/build/js/main.0aacb164.js.map +0 -1
- package/dist/public/build/js/navigation.f37d6960.chunk.js +0 -2
- package/dist/public/build/js/navigation.f37d6960.chunk.js.map +0 -1
- package/dist/public/build/js/runtime.f44b62dd.js +0 -2
- package/dist/public/build/js/runtime.f44b62dd.js.map +0 -1
- package/dist/public/build/js/scheduling.83bb157a.chunk.js +0 -2
- package/dist/public/build/js/scheduling.83bb157a.chunk.js.map +0 -1
- package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js +0 -2
- package/dist/public/build/js/tablet-errors-by-bundle.2dba0b10.chunk.js.map +0 -1
- package/dist/public/build/js/yt-df-dialog.ba05eea6.chunk.js.map +0 -1
- /package/dist/public/build/js/{dashboard.0a7085cc.chunk.js.LICENSE.txt → dashboard.8850118b.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.0aacb164.js.LICENSE.txt → main.a609b753.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{yt-df-dialog.ba05eea6.chunk.js.LICENSE.txt → yt-df-dialog.5aa0b817.chunk.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"js/navigation.f37d6960.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/constants/pagination.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/bars-descending-align-left.svg","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/./src/shared/tablet-errors-manager.ts","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/modal-no-content.svg","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelectorModal/ColumnSelectorModal.tsx","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/ClickableAttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/containers/Host/Host.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/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/./node_modules/@gravity-ui/chartkit/build/libs/chartkit-error/chartkit-error.js","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/utils/yql-types.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Ellipsis.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronLeft.js","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","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/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Pagination/Pagination.js","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.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/./node_modules/@gravity-ui/chartkit/build/utils/cn.js","webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronRight.js","webpack://@ytsaurus/ui/./src/ui/components/ColumnSelector/ColumnSelector.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/./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/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/RemountAlert/RemountAlert.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/remount-table.ts","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/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/pages/navigation/modals/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/Queue/QueueError.tsx","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/store/api/navigation/tabs/consumer/consumer.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/make-cluster-select-options-same-env.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/modals/RegisterDialog.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/store/api/navigation/tabs/queue/consumers.ts","webpack://@ytsaurus/ui/./src/ui/store/api/navigation/tabs/queue/exports.ts","webpack://@ytsaurus/ui/./src/ui/store/api/navigation/tabs/queue/queue.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/utils.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/CreateConsumerDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/UnregisterConsumerDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/RegisterConsumerDialog.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/views/Exports/ExportsEditDialog/utils/prepareValues.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/ExportsEditDialog/utils/validate.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/ExportsEditDialog/ExportsEditDialog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/ExportsEditDialog/utils/consts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/ExportsEdit/ExportsEdit.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/Exports.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Queue.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/ExportsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Exports/use-exports.ts","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/./node_modules/@gravity-ui/icons/svgs/arrow-right.svg","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/assets/img/svg/icons/queue-consumer.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/icons/queue-producer.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNodesTable.js","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withKeyboardNavigation.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/DeleteObjectModal/DeleteObjectModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/ContentViewer.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/./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","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Card/Card.js","webpack://@ytsaurus/ui/./src/ui/components/Favourites/Favourites.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/common.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/helpers/pathToFileName.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/modals/cell-preview.ts","webpack://@ytsaurus/ui/./src/ui/containers/CellPreviewModal/CellPreviewModal.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/./node_modules/@gravity-ui/icons/esm/ArrowUpRightFromSquare.js","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/CollapsibleSection/CollapsibleSection.tsx"],"sourcesContent":["export const ROWS_PER_PAGE = 100;\n","const SvgBarsDescendingAlignLeft = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M1 3.25a.75.75 0 0 1 .75-.75h12.5a.75.75 0 0 1 0 1.5H1.75A.75.75 0 0 1 1 3.25M1 8a.75.75 0 0 1 .75-.75h8.5a.75.75 0 0 1 0 1.5h-8.5A.75.75 0 0 1 1 8m.75 4a.75.75 0 0 0 0 1.5h2.5a.75.75 0 0 0 0-1.5z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgBarsDescendingAlignLeft;","import * as React from 'react';\nexport const AlertContext = React.createContext(null);\n","'use client';\nimport * as 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 { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Button } from '../Button';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertAction = (props) => {\n const { view } = useAlertContext();\n return _jsx(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 { jsx as _jsx } from \"react/jsx-runtime\";\nimport { AlertContext } from './AlertContext';\nexport const AlertContextProvider = ({ layout, view, children }) => {\n return _jsx(AlertContext.Provider, { value: { layout, view }, children: children });\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\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 (_jsx(\"div\", { className: bAlert('icon', colorText({ color }, className)), children: _jsx(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 14M6.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.94z\", 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 0M15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0M6.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.94z\", 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 14m1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0M8 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.75\", 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 14m3.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-.08z\", 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.835 2.244c.963-1.665 3.367-1.665 4.33 0l4.916 8.505c.964 1.666-.24 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.165-3.751zM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5m1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0\", 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.22 2.22 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.414\" })));\nexport default ThunderboltFill;\n","import { addComponentKeysets } from '../../../i18n';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Alert';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\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 (_jsx(AlertContextProvider, { layout: layout, view: view, children: _jsx(Card, { style: style, className: bAlert({ corners }, spacing({ py: 4, px: 5 }, className)), theme: theme, view: view, qa: qa, children: _jsxs(Flex, { gap: \"3\", alignItems: align, children: [typeof props.icon === 'undefined' ? (_jsx(Alert.Icon, { theme: theme, view: view })) : (props.icon // ability to pass `null` as `icon` prop value\n ), _jsxs(Flex, { direction: layout === 'vertical' ? 'column' : 'row', gap: \"5\", grow: true, children: [_jsx(Flex, { gap: \"2\", grow: true, className: bAlert('text-content'), children: _jsxs(Flex, { direction: \"column\", gap: \"1\", grow: true, justifyContent: align, children: [typeof props.title === 'string' ? (_jsx(Alert.Title, { text: props.title })) : (props.title), message] }) }), Array.isArray(props.actions) ? (_jsx(Alert.Actions, { items: props.actions })) : (props.actions)] }), onClose && (_jsx(Button, { view: \"flat\", className: bAlert('close-btn'), onClick: onClose, extraProps: {\n 'aria-label': i18n('label_close'),\n }, children: _jsx(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 { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Text } from '../Text';\nimport { bAlert } from './constants';\nexport const AlertTitle = ({ text, className }) => {\n return (_jsx(Text, { variant: \"subheader-2\", className: bAlert('title', className), children: text }));\n};\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\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 (_jsx(Flex, { className: bAlert('actions', { minContent: layout === 'horizontal' }, className), direction: \"row\", gap: \"3\", wrap: true, alignItems: layout === 'horizontal' ? 'center' : 'flex-start', children: (items === null || items === void 0 ? void 0 : items.map(({ handler, text }, i) => (_jsx(AlertAction, { onClick: handler, children: text }, i)))) || children }));\n};\n","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","const SvgModalNoContent = props => <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 194 194\" {...props}><g fill=\"none\" fillRule=\"evenodd\" stroke=\"#999\" opacity={0.22}><path strokeWidth={2} d=\"M97.116 188.443h1v1h-1zM96.424 185.293h1.1v1h-1.1zM95.374 182.143h2.34v1h-2.34zM94.324 178.993h4.2v1h-4.2zM93.273 175.842h6.679v1h-6.679zM91.173 172.692h9.779v1h-9.779zM89.597 169.542h13.499v1H89.597zM87.496 166.391h17.839v1H87.496zM84.871 163.241h22.798v1H84.871zM81.719 160.091h28.998v1H81.719zM78.043 156.94h35.817v1H78.043zM73.842 153.623h45.117v1H73.842z\" /><ellipse cx={96.77} cy={96.61} strokeWidth={8} rx={92.403} ry={92.61} /><ellipse cx={96.669} cy={96.371} strokeWidth={4} rx={37.057} ry={37.141} /><ellipse cx={97.269} cy={96.915} strokeWidth={8} rx={11.499} ry={11.532} /><path strokeLinecap=\"square\" strokeWidth={4} d=\"M34.504 34.653 66.12 66.34\" /><path strokeDasharray=\"8,8\" strokeWidth={4} d=\"M33.023 44.104V148.48M160.116 44.104V148.48\" /><path strokeLinecap=\"square\" strokeWidth={4} d=\"M159.603 34.653 127.986 66.34M34.504 159.798l31.617-31.685M159.603 159.798l-31.617-31.685\" /></g></svg>;\nexport default SvgModalNoContent;","import React from 'react';\nimport hammer from '../../common/hammer';\nimport block from 'bem-cn-lite';\n\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport Modal from '../Modal/Modal';\nimport ColumnSelector, {makeItemsCopy} from '../ColumnSelector/ColumnSelector';\nimport NoContentImage from '../../assets/img/svg/modal-no-content.svg';\n\nimport './ColumnSelectorModal.scss';\n\nconst b = block('column-selector-modal');\n\nexport type ColumnSelectorModalProps<DataT> = {\n items: Array<ColumnSelectorItem<DataT>>;\n srcItems: Array<ColumnSelectorItem<DataT>>;\n isVisible?: boolean;\n onChange: (items: Array<ColumnSelectorItem<DataT>>) => void;\n onConfirm: (items: Array<ColumnSelectorItem<DataT>>) => void;\n onCancel: () => void;\n\n itemRenderer: (item: ColumnSelectorItem<DataT>) => React.ReactNode;\n entity: string;\n};\n\nexport type ColumnSelectorItem<DataT> = {\n name: string;\n checked: boolean;\n data: DataT;\n disabled?: boolean;\n keyColumn?: boolean;\n};\n\ntype Props<T> = ColumnSelectorModalProps<T>;\n\ntype State<T> = Pick<Props<T>, 'items' | 'srcItems'> & {itemsOrder: Array<string>};\n\nexport default class ColumnSelectorModal<T = never> extends React.Component<Props<T>, State<T>> {\n static defaultProps: Partial<Props<unknown>> = {\n entity: 'columns',\n };\n\n state: State<T> = {\n srcItems: this.props.srcItems || this.props.items,\n items: makeItemsCopy(this.props.items),\n itemsOrder: this._getItemsOrder(this.props.items),\n };\n\n // in React 16.3 there is another way to do it: getDerivedStateFromProps;\n // revise this place once received data is managed by Redux\n componentDidUpdate(prevProps: Props<T>) {\n const {items, srcItems} = this.props;\n if (prevProps.items !== items || prevProps.srcItems !== srcItems) {\n // don't update itemsOrder\n this.setState({\n srcItems: srcItems || this.props.items,\n items: this._getOrderedItems(makeItemsCopy(items)),\n });\n }\n }\n\n _handleCONFIRMButtonClick = () => {\n const {items} = this.state;\n this.props.onConfirm(items);\n };\n\n _handleCANCELButtonClick = () => {\n const {items} = this.props;\n const order = this._getItemsOrder(items);\n // reset state to initial on cancel\n this.setState({\n items: this._getOrderedItems(makeItemsCopy(items)),\n itemsOrder: order,\n });\n this.props.onCancel();\n };\n\n _getItemsOrder(items: Props<T>['items']) {\n return map_(items, (item) => item.name);\n }\n\n _getOrderedItems(items: Props<T>['items'], order = this.state.itemsOrder) {\n return items.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));\n }\n\n _getSelectorProps<P>(props: P, items: Props<T>['items']) {\n return {\n ...props,\n items,\n showDisabledItems: true,\n isHeadless: false,\n isFilterable: true,\n onChange: this.onSourceChange,\n };\n }\n\n _getSortableSelectorProps<P>(props: P, items: Props<T>['items']) {\n return {\n ...props,\n items,\n isSelectable: false,\n isSortable: true,\n showSelectedOnly: true,\n onChange: this.onDestinationChange,\n };\n }\n\n calculateSrcItems(newItemsMap: Record<string, ColumnSelectorItem<T>>) {\n return map_(this.state.srcItems, (item) => {\n const newItem = newItemsMap[item.name];\n\n if (newItem && newItem.checked !== item.checked) {\n return newItem;\n }\n\n return item;\n });\n }\n\n onSourceChange = ({items: newItems}: Pick<Props<T>, 'items'>) => {\n const {items} = this.state;\n const newItemsMap = reduce_(\n newItems,\n (acc, data) => {\n acc[data.name] = data;\n return acc;\n },\n {} as Record<string, ColumnSelectorItem<T>>,\n );\n\n const unchanged: Props<T>['items'] = [];\n const changed: Props<T>['items'] = [];\n forEach_(items, (item) => {\n const newItem = newItemsMap[item.name];\n if (newItem && newItem.checked !== item.checked) {\n const dst = newItem.keyColumn ? unchanged : changed;\n dst.push(newItem);\n } else {\n unchanged.push(item);\n }\n });\n\n const preparedItems = unchanged.concat(changed);\n // don't update itemsOrder\n this.setState({\n items: this._getOrderedItems(preparedItems),\n srcItems: this.calculateSrcItems(newItemsMap),\n });\n };\n\n onDestinationChange = ({items: newItems}: Pick<Props<T>, 'items'>) => {\n const newItemsMap = reduce_(\n newItems,\n (acc, data) => {\n acc[data.name] = data;\n return acc;\n },\n {} as Record<string, ColumnSelectorItem<T>>,\n );\n\n const order = this._getItemsOrder(newItems);\n\n this.setState({\n items: this._getOrderedItems(newItems, order),\n itemsOrder: order,\n srcItems: this.calculateSrcItems(newItemsMap),\n });\n };\n\n renderColumnSelector({\n props,\n title,\n description,\n className,\n }: {\n props: object;\n title: string;\n description: string;\n className?: string;\n }) {\n return (\n <ColumnSelector {...props} className={className}>\n <div className={b('no-content')}>\n <p>\n <strong>{title}</strong>\n </p>\n <p>{description}</p>\n <NoContentImage />\n </div>\n </ColumnSelector>\n );\n }\n\n renderContent() {\n const {isVisible, entity, ...rest} = this.props; // eslint-disable-line\n const {items, srcItems} = this.state;\n\n const headingCN = block('elements-heading')({size: 's'}, b('header'));\n\n const selectorProps = this._getSelectorProps(rest, srcItems);\n const sortableSelectorProps = this._getSortableSelectorProps(selectorProps, items);\n const selectedItemsCount = reduce_(\n sortableSelectorProps.items,\n (acc, item) => (item.disabled || !item.checked ? acc : ++acc),\n 0,\n );\n\n return (\n isVisible && (\n <div className={b()}>\n <div className={b('panel', {left: 'yes'})}>\n <div className={headingCN}>\n All \n <span className=\"elements-secondary-text\">{srcItems.length}</span>\n </div>\n\n {this.renderColumnSelector({\n props: selectorProps,\n title: `No available ${entity}`,\n description: `No ${entity} matching your filtering criteria`,\n })}\n </div>\n\n <div className={b('panel')}>\n <div className={headingCN}>\n Selected \n <span className=\"elements-secondary-text\">{selectedItemsCount}</span>\n </div>\n\n {this.renderColumnSelector({\n props: sortableSelectorProps,\n title: `No selected ${entity}`,\n description: `Add ${entity} you need from the All section.`,\n })}\n </div>\n </div>\n )\n );\n }\n\n render() {\n const {isVisible, entity} = this.props;\n const title = `${hammer.format['FirstUppercase'](entity)} setup`;\n\n return (\n <Modal\n size=\"l\"\n title={title}\n borderless={true}\n visible={isVisible}\n confirmText=\"Apply\"\n onConfirm={this._handleCONFIRMButtonClick}\n onCancel={this._handleCANCELButtonClick}\n content={this.renderContent()}\n contentClassName=\"column-selector-modal-content\"\n />\n );\n }\n}\n","import React 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 cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted, Subject} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: 'Current', data: currentArr.concat(otherArr)},\n toAdd: {\n title: 'Will be added',\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: 'Will be removed',\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: 'Unrecognized',\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}): {\n added: Subject[];\n removed: Subject[];\n} {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value!} : {group: value!};\n }),\n };\n}\n","import React from 'react';\nimport {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 cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport {YTErrorBlock} from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <YTErrorBlock {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import 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","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 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 {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","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 * 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 3M9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0m5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0\", clipRule: \"evenodd\" })));\nexport default Ellipsis;\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","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 0\", clipRule: \"evenodd\" })));\nexport default ChevronLeft;\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 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 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 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 PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {TextInput} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Pagination.scss';\nimport Button from '../Button/Button';\n\nconst paginationControlComponent = PropTypes.shape({\n handler: PropTypes.func,\n target: PropTypes.func,\n disabled: PropTypes.bool,\n hotkey: PropTypes.string,\n hotkeyScope: PropTypes.string,\n hotkeyHandler: PropTypes.func,\n}).isRequired;\n\nconst supportedSizes = ['s', 'm', 'l'];\nconst block = cn('elements-pagination');\n\nexport default class Pagination extends React.Component {\n static propTypes = {\n className: PropTypes.string,\n size: PropTypes.oneOf(supportedSizes),\n first: paginationControlComponent,\n previous: paginationControlComponent,\n next: paginationControlComponent,\n last: paginationControlComponent,\n tooltip: PropTypes.string,\n showInput: PropTypes.bool,\n inputValue: PropTypes.string,\n onChange: PropTypes.func,\n };\n static defaultProps = {\n size: 'm',\n showInput: false,\n };\n\n renderComponent(name, control) {\n const handler = control.handler;\n\n const disabled = typeof control.disabled === 'boolean' ? control.disabled : false;\n\n const {size, tooltip} = this.props;\n const hotkeySettings = [\n {\n keys: control.hotkey,\n scope: control.hotkeyScope,\n handler: control.hotkeyHandler,\n },\n ];\n\n return (\n <span title={tooltip}>\n <Button\n size={size}\n onClick={handler}\n disabled={disabled}\n className={block('control', {name})}\n title={\n {\n first: 'First page',\n previous: 'Previous page',\n next: 'Next page',\n last: 'Last page',\n }[name]\n }\n pin={\n {\n first: 'round-brick',\n previous: 'clear-brick',\n next: 'brick-clear',\n last: 'brick-round',\n }[name]\n }\n >\n <Icon\n awesome={\n {\n first: 'angle-double-left',\n previous: 'angle-left',\n next: 'angle-right',\n last: 'angle-double-right',\n }[name]\n }\n />\n </Button>\n {typeof control.hotkeyHandler !== 'undefined' && (\n <Hotkey settings={hotkeySettings} />\n )}\n </span>\n );\n }\n renderInput() {\n const {showInput, inputValue, onChange, size} = this.props;\n\n return showInput ? (\n <TextInput\n qa=\"yt-pagination_input\"\n size={size}\n type=\"text\"\n value={inputValue}\n onUpdate={onChange}\n pin={'clear-clear'}\n />\n ) : null;\n }\n render() {\n const {first, previous, next, last, className} = this.props;\n\n return (\n <div className={block(null, className)}>\n {this.renderComponent('first', first)}\n {this.renderComponent('previous', previous)}\n {this.renderInput()}\n {this.renderComponent('next', next)}\n {this.renderComponent('last', last)}\n </div>\n );\n }\n}\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport {YTErrorBlock} 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 <YTErrorBlock error={errorData} />;\n }\n\n return children;\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, name]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\n}\n","import React from 'react';\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 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 { withNaming } from '@bem-react/classname';\nexport const NAMESPACE = 'chartkit-';\nexport const cn = withNaming({ e: '__', m: '_' });\nexport const block = withNaming({ n: NAMESPACE, e: '__', m: '_' });\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\n className={block('edit-btn')}\n onClick={onClick}\n size={size}\n qa=\"qa:navigation:edit-path\"\n >\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\n}\n","import * 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 0\", clipRule: \"evenodd\" })));\nexport default ChevronRight;\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {sortableContainer, sortableElement, sortableHandle} from 'react-sortable-hoc';\nimport ReactList from 'react-list';\n\nimport each_ from 'lodash/each';\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\nimport reduce_ from 'lodash/reduce';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../../components/Icon/Icon';\n\nimport {renderText} from '../../components/templates/utils';\n\nimport './ColumnSelector.scss';\nimport Button from '../Button/Button';\n\nconst b = cn('column-selector');\n\nexport function makeItemsCopy(items) {\n return map_(items, (item) => {\n return {...item};\n });\n}\n\nconst DragHandle = sortableHandle(() => (\n <div className={b('drag-handle')}>\n <Icon face=\"solid\" awesome=\"list\" />\n </div>\n));\n\nconst SortableItem = sortableElement(\n ({item, isSortable, isSelectable, isDisabled, itemRenderer, onCheckBoxChange}) => {\n const active = !isDisabled && !item.disabled;\n const className = b('list-item', {\n selected: item.checked && active && 'yes',\n selectable: isSelectable && active && 'yes',\n disabled: !active && 'yes',\n });\n\n let showAction = true;\n if (item.checked) {\n showAction = 'isDeletable' in item ? item.isDeletable : true;\n }\n\n return (\n <div className={className}>\n {isSortable && item.checked && <DragHandle />}\n <div className={b('list-item-name')}>\n {item.keyColumn && <Icon awesome=\"key\" />}\n {itemRenderer(item)}\n </div>\n {active && showAction && (\n <span\n className={b('list-item-check')}\n onClick={onCheckBoxChange}\n data-item={item.name}\n >\n <Icon awesome=\"check\" />\n </span>\n )}\n {!active && <Icon className={b('list-item-lock')} awesome=\"lock\" />}\n </div>\n );\n },\n);\n\nconst SortableList = sortableContainer(\n ({\n items,\n isSortable,\n isDisabled,\n itemRenderer,\n onCheckBoxChange,\n isSelectable,\n useStaticSize,\n }) => {\n const renderer = (index, key) => {\n const item = items[index];\n return (\n <SortableItem\n key={key}\n index={index}\n item={item}\n disabled={!isSortable}\n isSortable={isSortable}\n isDisabled={isDisabled}\n isSelectable={isSelectable}\n itemRenderer={itemRenderer}\n onCheckBoxChange={onCheckBoxChange}\n />\n );\n };\n // Use 'simple' placement for draggable items because 'uniform' produces bugs when items are dragged outside the viewport\n const type = isSortable ? 'simple' : 'uniform';\n const mods = {'static-size': useStaticSize};\n\n return (\n <div className={b('list', mods)}>\n <ReactList itemRenderer={renderer} length={items.length} type={type} />\n </div>\n );\n },\n);\n\nexport default class ColumnSelector extends Component {\n static itemsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n checked: PropTypes.bool.isRequired,\n keyColumn: PropTypes.bool,\n caption: PropTypes.string,\n disabled: PropTypes.bool,\n }),\n );\n\n static propTypes = {\n className: PropTypes.string,\n items: ColumnSelector.itemsProps.isRequired,\n showDisabledItems: PropTypes.bool,\n isSortable: PropTypes.bool,\n isSelectable: PropTypes.bool,\n isFilterable: PropTypes.bool,\n showSelectedOnly: PropTypes.bool,\n isHeadless: PropTypes.bool,\n onChange: PropTypes.func.isRequired,\n children: PropTypes.node,\n itemRenderer: PropTypes.func,\n };\n\n static defaultProps = {\n itemRenderer: ({name, caption = name}) => renderText(caption, {asHTML: false}),\n isSortable: false,\n isHeadless: false,\n isSelectable: true,\n isFilterable: true,\n showSelectedOnly: false,\n };\n\n constructor(props) {\n const {items, isHeadless, showSelectedOnly} = props;\n super(props);\n\n const state = {\n showSelectedOnly,\n filter: '',\n };\n if (isHeadless) {\n Object.assign(state, {items: makeItemsCopy(items)});\n }\n this.state = state;\n }\n\n get items() {\n return this.props.isHeadless ? this.state.items : this.props.items;\n }\n\n get buttonALLisDisabled() {\n return this.items.every((item) => item.checked);\n }\n\n get buttonNONEisDisabled() {\n return !this.items.some((item) => item.checked);\n }\n\n /*\n Takes items from the proper place (props or state), modifies them and writes them back at the same place.\n */\n withActualItems(func) {\n const {onChange} = this.props;\n // headless widget keeps its state to itself, but calls onChange as a way of notifying caller about changes\n if (this.props.isHeadless) {\n const {items} = func({items: this.state.items || []});\n this.setState({items}, () => {\n onChange({items: [...this.state.items]});\n });\n } else {\n // widget inside modal passes all changes to the modal component where they are put into state\n const {items} = func({items: this.props.items || []});\n onChange({items: [...items]});\n }\n }\n\n toggleItem = (name) => {\n this.withActualItems(({items}) => {\n items = [...items];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, checked: !changedItem.checked};\n\n return {items};\n });\n };\n\n selectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (!item.checked && !item.disabled) {\n items[index] = {...item, checked: true};\n }\n });\n\n return {items};\n });\n };\n\n deselectAllItems = () => {\n this.withActualItems(({items}) => {\n const visibleMap = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleMap[item.name]) {\n return;\n }\n if (item.checked && !item.disabled && (item.isDeletable ?? true)) {\n items[index] = {...item, checked: false};\n }\n });\n\n return {items};\n });\n };\n\n invertItems = () => {\n this.withActualItems(({items}) => {\n const visibleItems = this.getVisibleItemsMap();\n items = [...items];\n each_(items, (item, index) => {\n if (!visibleItems[item.name]) {\n return;\n }\n if (!item.disabled) {\n items[index] = {...item, checked: !item.checked};\n }\n });\n\n return {items};\n });\n };\n\n _handleCheckBoxChange = (event) => {\n this.toggleItem(event.currentTarget.getAttribute('data-item'));\n };\n\n _handleSortEnd = ({oldIndex, newIndex}) => {\n if (oldIndex === newIndex) {\n return;\n }\n\n this.withActualItems(({items}) => {\n items = [...items];\n\n const {items: visibleItems} = this.getVisibleItems();\n const fromIndex = items.findIndex((item) => item.name === visibleItems[oldIndex].name);\n const toIndex = items.findIndex((item) => item.name === visibleItems[newIndex].name);\n\n const [removed] = items.splice(fromIndex, 1);\n items.splice(toIndex, 0, removed);\n\n return {items};\n });\n };\n\n _handleDefaultSort = () => {\n this.withActualItems(({items}) => {\n return {\n items: items.sort((a, b) => {\n const aCaption = a.caption || a.name;\n const bCaption = b.caption || b.name;\n\n return aCaption.localeCompare(bCaption);\n }),\n };\n });\n };\n\n _toggleShownItems = () => {\n this.setState((prevState) => ({\n showSelectedOnly: !prevState.showSelectedOnly,\n }));\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n renderSearchBox() {\n return (\n <TextInput\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n value={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n renderControls() {\n const {isFilterable, isSelectable, isSortable, isHeadless} = this.props;\n const btnProps = {\n size: 'm',\n className: b('controls-item'),\n };\n\n return (\n <div className={b('controls')}>\n {isFilterable && this.renderSearchBox()}\n {isHeadless && (\n <Button {...btnProps} onClick={this._toggleShownItems}>\n Selected \n <span className=\"elements-secondary-text\">\n {filter_(this.items, (item) => item.checked).length}\n </span>\n </Button>\n )}\n {isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonALLisDisabled}\n onClick={this.selectAllItems}\n >\n Add all\n </Button>\n )}\n {isSelectable && (\n <Button {...btnProps} onClick={this.invertItems}>\n Invert list\n </Button>\n )}\n {!isSelectable && (\n <Button\n {...btnProps}\n disabled={this.buttonNONEisDisabled}\n onClick={this.deselectAllItems}\n >\n Remove all\n </Button>\n )}\n {isSortable && (\n <Button {...btnProps} onClick={this._handleDefaultSort}>\n Default sort\n </Button>\n )}\n </div>\n );\n }\n\n filterItemsByName(items) {\n const re = new RegExp(escapeRegExp_(this.state.filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n filterItems(items) {\n const {showDisabledItems} = this.props;\n items = showDisabledItems ? items : filter_(items, (item) => !item.disabled);\n\n const visibleItems = this.filterItemsByName(items);\n return this.state.showSelectedOnly\n ? filter_(visibleItems, (item) => item.checked)\n : visibleItems;\n }\n\n getVisibleItems() {\n const toSplit = this.filterItems(this.items);\n const [keyItems, items] = partition_(toSplit, (item) => item.keyColumn);\n return {items, keyItems};\n }\n\n getVisibleItemsMap() {\n return reduce_(\n this.filterItems(this.items),\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {},\n );\n }\n\n renderList() {\n const {isSortable, isSelectable, itemRenderer, children, isHeadless} = this.props;\n\n const {items, keyItems} = this.getVisibleItems();\n\n const className = b(\n 'content',\n {\n headless: isHeadless ? undefined : 'no',\n empty: items.length ? undefined : 'yes',\n },\n 'pretty-scroll',\n );\n\n return (\n <div className={className}>\n {keyItems.length > 0 && (\n <React.Fragment>\n <SortableList\n lockAxis=\"y\"\n isDisabled={false}\n isSortable={false}\n isSelectable={isSelectable}\n items={keyItems}\n itemRenderer={itemRenderer}\n helperClass={b('list-item', {helper: 'yes'})}\n onCheckBoxChange={this._handleCheckBoxChange}\n />\n {items.length > 0 && <div className={b('separator')} />}\n </React.Fragment>\n )}\n {items.length > 0 && (\n <SortableList\n items={items}\n isSelectable={isSelectable}\n isSortable={isSortable}\n itemRenderer={itemRenderer}\n lockAxis=\"y\"\n helperClass={b('list-item', {helper: 'yes'})}\n onSortEnd={this._handleSortEnd}\n onCheckBoxChange={this._handleCheckBoxChange}\n useDragHandle\n />\n )}\n {!keyItems.length && !items.length && children}\n </div>\n );\n }\n\n render() {\n const {isHeadless, isSortable, className} = this.props;\n const classNames = b(\n {\n headless: isHeadless ? 'yes' : undefined,\n sortable: isSortable ? undefined : 'no',\n },\n className,\n );\n return (\n <div className={classNames}>\n {this.renderControls()}\n {this.renderList()}\n </div>\n );\n }\n}\n","import { block } from '../utils/cn';\nexport const cnDropdownMenu = block('dropdown-menu');\n","import * as 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 { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as 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 (_jsx(DropdownMenuNavigationContext.Provider, { value: contextValue, children: 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 { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as 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 (_jsx(Popup, Object.assign({ open: open, anchorRef: anchorRef, onClose: onClose }, popupProps, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: children || (_jsx(Menu, Object.assign({ className: cnDropdownMenu('menu'), size: size }, menuProps, { children: 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 (_jsx(DropdownMenuItem, Object.assign({ 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 }), index));\n }) }))) })));\n};\n","import * as 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 * as 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 { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as 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 ? (_jsx(Icon, { data: direction === 'rtl' ? ChevronLeft : ChevronRight, size: 10, className: cnDropdownMenu('sub-menu-arrow') })) : (props.iconEnd), [hasSubmenu, direction, props.iconEnd]);\n return (_jsxs(React.Fragment, { children: [_jsx(Menu.Item, Object.assign({ ref: menuItemRef }, props, { extraProps: extraProps, onClick: handleMenuItemClick, iconEnd: iconEnd, children: text || children })), hasSubmenu && subMenuItems && (_jsx(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 { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as 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 = _jsx(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 (_jsxs(DropdownMenuContext.Provider, { value: contextValue, children: [_jsx(\"div\", Object.assign({ ref: anchorRef, className: cnDropdownMenu('switcher-wrapper', switcherWrapperClassName) }, (renderSwitcher ? {} : switcherProps), { children: (renderSwitcher === null || renderSwitcher === void 0 ? void 0 : renderSwitcher(switcherProps)) || switcher || (_jsx(Button, Object.assign({ view: \"flat\", size: size }, defaultSwitcherProps, { className: cnDropdownMenu('switcher-button', defaultSwitcherClassName), disabled: disabled, children: icon }))) })), _jsx(DropdownMenuNavigationContextProvider, { anchorRef: anchorRef, disabled: !isPopupShown, children: _jsx(DropdownMenuPopup, { items: itemsList, open: isPopupShown, size: size, menuProps: menuProps, anchorRef: anchorRef, onClose: closePopup, popupProps: popupProps, children: children }) })] }));\n};\nconst DropdownMenuExport = Object.assign(DropdownMenu, { Item: DropdownMenuItemComponent });\nexport { DropdownMenuExport as DropdownMenu };\n","import * as 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 * as 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 * as 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 {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 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 {YTErrorBlock} 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 <YTErrorBlock 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 {getMetrics} from '../../../../../common/utils/metrics';\nimport ypath from '../../../../../common/thor/ypath';\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 columns = getColumns(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 transaction = getTransaction(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 decodedColumns = decodeNameField(columns);\n const outputFormat =\n requestOutputFormat ||\n getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const isSorted = ypath.getValue(attributes, '/sorted');\n const id = makeTableRumId({cluster, isDynamic});\n\n const isUnmounted = ypath.getValue(attributes, '/tablet_state') === 'unmounted';\n\n if (isUnmounted && !isSorted) {\n // in case of unmounted dynamic table treat it as a static table\n const apiId = type === LOAD_TYPE.PRELOAD ? YTApiId.tableReadPreload : YTApiId.tableRead;\n // example: offset = \"(1, 2)\": string , we need [1, 2]: number[]\n const preparedOffset = offset\n .replace(/[()]/g, '')\n .split(',')\n .map((part) => Number(part.trim()));\n\n return id.fetch(\n apiId,\n readStaticTable({\n setup,\n parameters: {\n path: {\n $value: path,\n $attributes: {\n ranges: [\n {\n lower_limit: {\n tablet_index: preparedOffset[0] || 0,\n row_index: preparedOffset[1] || 0,\n },\n upper_limit: {\n tablet_index: preparedOffset[0] || 0,\n row_index: limit + (preparedOffset[1] || 0),\n },\n },\n ],\n },\n },\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 },\n cancellation: requests.saveCancelToken,\n reverseRows: moveBackward,\n }),\n );\n }\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 getMetrics().countEvent('share_columns', hash);\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 getMetrics().countEvent('navigation_dynamic_table_action', action);\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 {YTErrorBlock} 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 && <YTErrorBlock 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, {useState} from 'react';\nimport b from 'bem-cn-lite';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Alert, Button} from '@gravity-ui/uikit';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {remountTable} from '../../../../../store/actions/navigation/content/table/remount-table';\nimport {getAttributesWithTypes} from '../../../../../store/selectors/navigation';\n\nimport './RemountAlert.scss';\n\nconst block = b('remount-alert');\n\nexport function RemountAlert() {\n const dispatch = useDispatch();\n const attributesWithTypes = useSelector(getAttributesWithTypes);\n const [pending, setPending] = useState(false);\n\n const handleOnRemount = async () => {\n setPending(true);\n await dispatch(remountTable());\n setPending(false);\n };\n\n const [remountNeededTabletCount, tabletCount] = ypath.getValues(attributesWithTypes, [\n '/remount_needed_tablet_count',\n '/tablet_count',\n ]);\n\n const showDiffInfo = remountNeededTabletCount !== tabletCount;\n const diffInfo = ` (${remountNeededTabletCount} of ${tabletCount} tablets pending)`;\n\n const message = `Table should be remounted to apply new settings${showDiffInfo ? diffInfo : ''}. \n This action will not cause any downtime. See Mount config tab for details.`;\n\n return (\n <Alert\n theme=\"warning\"\n layout=\"horizontal\"\n title=\"Some table settings are not applied to tablets\"\n message={message}\n className={block()}\n actions={\n <Button\n onClick={handleOnRemount}\n disabled={pending}\n className={block('button')}\n view=\"normal-contrast\"\n size=\"s\"\n >\n Remount\n </Button>\n }\n ></Alert>\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {UnknownAction} from '@reduxjs/toolkit';\n\nimport {RootState} from '../../../../reducers';\nimport {updateView} from '../..';\n\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {ytApiV4} from '../../../../../rum/rum-wrap-api';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nexport function remountTable(): AsyncAction<Promise<void>> {\n return async (dispatch, getState) => {\n const state = getState();\n const path = state.navigation.navigation.path;\n\n return wrapApiPromiseByToaster(ytApiV4.remountTable({path}), {\n toasterName: 'remount_tabe',\n errorTitle: 'Failed to remount table',\n skipSuccessToast: true,\n }).finally(() => {\n dispatch(updateView());\n });\n };\n}\n","import React, {useMemo} from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect, useSelector} from 'react-redux';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {makeMetaItems} from '../../../../../components/MetaTable/presets/presets';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {RemountAlert} from '../RemountAlert/RemountAlert';\n\nimport {getTableType} from '../../../../../store/selectors/navigation/content/table';\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getAttributes, getAttributesWithTypes} from '../../../../../store/selectors/navigation';\nimport {getTabletErrorsBackgroundCount} from '../../../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../../constants/global';\n\nimport './TableMeta.scss';\n\nconst block = cn('navigation-meta-table');\n\ninterface Props {\n attributes: any;\n mediumList: string[];\n isDynamic: boolean;\n tableType: string;\n remountNeeded: boolean;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}\n\nfunction TableMeta({\n attributes,\n tableType,\n mediumList,\n isDynamic,\n remountNeeded,\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 {remountNeeded && <RemountAlert />}\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 const attributesWithTypes = getAttributesWithTypes(state);\n\n const remountNeeded =\n Boolean(Number(ypath.getValue(attributesWithTypes, '/remount_needed_tablet_count'))) &&\n isDynamic;\n\n return {\n attributes,\n mediumList,\n isDynamic,\n tableType,\n remountNeeded,\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 {YTErrorBlock} 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 <YTErrorBlock 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 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 {useDisableMaxContentWidth} from '../../../../containers/MaxContentWidth';\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';\nimport {StickyContainer} from '../../../../components/StickyContainer/StickyContainer';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\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 {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 {({stickyTopClassName}) => (\n <React.Fragment>\n {hasActions && (\n <Toolbar\n className={stickyTopClassName}\n itemsToWrap={[{node: <TableActions block={block} />}]}\n />\n )}\n <ElementsTable {...this.tableSettings} items={replicas} />\n </React.Fragment>\n )}\n </StickyContainer>\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 useDisableMaxContentWidth();\n\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 {useDisableMaxContentWidth} from '../../../../containers/MaxContentWidth';\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 useDisableMaxContentWidth();\n\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\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\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 {block, error, isPaginationDisabled, isTableEndReached, offsetValue, isDynamic} = 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\n return {\n error,\n isDynamic,\n offsetValue,\n isPaginationDisabled,\n isTableEndReached,\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 UIFactory, {YQLButtonProps} from '../../UIFactory';\n\nexport function YQLKitButton(props: YQLButtonProps) {\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 '../../../shared/constants/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 {getPath} from '../../store/selectors/navigation';\nimport UIFactory from '../../UIFactory';\nimport {useSidePanel} from '../../hooks/use-side-panel';\nimport {getCluster} from '../../store/selectors/global/cluster';\nimport {RootState} from '../../store/reducers';\nimport {NavigationState} from '../../store/reducers/navigation/navigation';\nimport {setNavigationSidePanelMode} from '../../store/actions/navigation';\n\nimport './OpenQueryButtons.scss';\n\nconst b = cn('yt-open-query-buttons');\n\nfunction useNavigationSidePanelMode() {\n const dispatch = useDispatch();\n\n const path: string = useSelector(getPath);\n const cluster = useSelector(getCluster);\n const panelMode = useSelector((state: RootState) => state.navigation.navigation.sidePanelMode);\n\n const setPanelMode = React.useCallback(\n (mode: NavigationState['sidePanelMode']) => {\n dispatch(setNavigationSidePanelMode(mode));\n },\n [dispatch],\n );\n\n return {path, cluster, panelMode, setPanelMode};\n}\n\nexport type OpenQueryButtonProps = {\n className?: string;\n autoOpen?: boolean;\n};\n\nexport function OpenQueryButtonsContent() {\n const dispatch = useDispatch();\n const {panelMode, setPanelMode, path, cluster} = useNavigationSidePanelMode();\n\n const onClose = React.useCallback(() => {\n setPanelMode(undefined);\n }, [setPanelMode]);\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 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 return widgetContent;\n}\n\nexport function OpenQueryButtons({className, autoOpen}: OpenQueryButtonProps) {\n const {path, cluster, panelMode, setPanelMode} = useNavigationSidePanelMode();\n\n const onOpenYqlKit = React.useCallback(() => setPanelMode('yqlkit'), []);\n const onClose = React.useCallback(() => setPanelMode(undefined), []);\n\n const {isQtKitEnabled, isYqlKitEnabled} = useSelector(getNavigationSqlService);\n\n const allowQtAutoOpen = autoOpen && isQtKitEnabled;\n\n React.useEffect(() => {\n if (autoOpen) {\n setPanelMode(allowQtAutoOpen ? 'qt' : 'yqlkit');\n }\n }, [autoOpen, allowQtAutoOpen, setPanelMode]);\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 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 opened={panelMode === 'yqlkit'}\n onOpen={onOpenYqlKit}\n onClose={onClose}\n />\n )}\n </div>\n );\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 return {\n spec: Object.assign({\n input_table_paths: [path],\n output_table_path: path,\n force_transform: true,\n mode: 'ordered',\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 {waitForFontFamilies} from '../../../../store/actions/global/fonts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction getList(path, transaction, cluster) {\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 'sorted',\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 'effective_expiration',\n 'treat_as_queue_consumer',\n 'treat_as_queue_producer',\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 dispatch({type: FETCH_NODES.REQUEST});\n return dispatch(waitForFontFamilies(getList(path, transaction, cluster)))\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 getSortedNodesNames = createSelector([getFilteredNodes], (nodes) => {\n return nodes.map((node) => node.name);\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 {getMetrics} 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 getMetrics().countEvent('navigation_map-node_attributes');\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 getMetrics().countEvent('navigation_map-node_edit_attributes');\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 getMetrics().countEvent('navigation_map-node_delete');\n dispatch(openDeleteModal(item));\n evt.stopPropagation();\n },\n onCopyPathClick(evt: React.MouseEvent) {\n getMetrics().countEvent('navigation_map-node_copy-path');\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 {connect} from 'react-redux';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {getAttributes} from '../../../../../store/selectors/navigation';\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 {OpenQueryButtons} from '../../../../../containers/OpenQueryButtons/OpenQueryButtons';\n\nimport './TableOverview.scss';\nimport EditTableActions from './EditTableActions';\nimport DataLensButton from './DatalensButton';\n\nconst block = cn('navigation-table-overview');\n\nTableOverview.propTypes = {\n // from connect\n isFullScreen: PropTypes.bool.isRequired,\n};\n\nfunction TableOverview({isFullScreen, allowPagination}) {\n // TODO: add sticky for the Overview in the split mode https://github.com/captivationsoftware/react-sticky/issues/282\n return (\n <ErrorBoundary>\n <div className={block()}>\n {allowPagination && <Paginator block={block} />}\n <OffsetInput block={block} />\n {!isFullScreen && <ColumnSelectorButton block={block} />}\n {!isFullScreen && <SettingsButton block={block} />}\n {!isFullScreen && <OpenQueryButtons className={block('query')} />}\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 </ErrorBoundary>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isFullScreen} = state.navigation.content.table;\n const attributes = getAttributes(state);\n\n const isUnmounted = ypath.getValue(attributes, '/tablet_state') === 'unmounted';\n const isSorted = ypath.getValue(attributes, '/sorted');\n\n const allowPagination = !(isUnmounted && !isSorted);\n\n return {\n isFullScreen,\n allowPagination,\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 {YTErrorBlock} 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 <YTErrorBlock\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","import 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 {useDisableMaxContentWidth} from '../../../../containers/MaxContentWidth';\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';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\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, isSplit} = 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\n const toolbar = <TableOverview />;\n return (\n <div className={block()}>\n <TableMeta />\n <TableColumnsPresetNotice />\n <FullScreen\n className={block('fullscreen')}\n enabled={isFullScreen}\n onChange={handleScreenChanged}\n >\n {isSplit && !isFullScreen ? (\n <React.Fragment>\n {toolbar}\n {renderTable(props)}\n </React.Fragment>\n ) : (\n <WithStickyToolbar\n hideToolbarShadow\n toolbarClassName={block('toolbar', {fullscreen: isFullScreen})}\n toolbar={toolbar}\n content={({sticky}) => renderTable({...props, sticky})}\n />\n )}\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 useDisableMaxContentWidth();\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 {ASCENDING, 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\nenum TableType {\n QUEUE = 'queue',\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: TableType;\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 attributes: Record<string, any> = {\n dynamic: tableType === TableType.QUEUE || tableType == TableType.DYNAMIC,\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, tableType: TableType) {\n const {dataType, optional} = columnData || {};\n\n if (dataType === ColumnDataTypes.ANY || dataType === ColumnDataTypes.YSON) {\n if (tableType === TableType.DYNAMIC && 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 (tableType === TableType.QUEUE && this.isSortedColumn(columnData)) {\n return 'Queue must not have any sorted columns';\n }\n\n if (tableType === TableType.DYNAMIC && 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, tableType: TableType) {\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, tableType);\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 isAscendingColumn(columnData: ColumnData) {\n const {id} = columnData;\n return this.props.keyColumns[id] === ASCENDING;\n }\n\n isDescendingColumn(columnData: ColumnData) {\n const {id} = columnData;\n return this.props.keyColumns[id] === DESCENDING;\n }\n\n isSortedColumn(columnData: ColumnData) {\n return this.isAscendingColumn(columnData) || this.isDescendingColumn(columnData);\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 'Dynamic table must have at least one sorted column and one unsorted column';\n }\n\n if (tableType === TableType.QUEUE && hasOrderedColumn) {\n res.tableType = 'Queue must not have any sorted columns';\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(`${COLUMNS}[${index}]`, this.validateColumnData(columnData, tableType));\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 table',\n },\n {\n value: TableType.DYNAMIC,\n label: 'Dynamic table',\n },\n {\n value: TableType.QUEUE,\n label: 'Queue table',\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 {YTErrorBlock} from '../../../../../components/Block/Block';\nimport {YTDFDialog} from '../../../../../components/Dialog';\nimport {Alert, 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';\nimport {getSortedNodesNames} from '../../../../../store/selectors/navigation/content/map-node';\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 nameAlreadyUsed: boolean;\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: false,\n nameAlreadyUsed: false,\n };\n\n private cancelHelper = new CancelHelper();\n\n renderContent() {\n const {hasUpcomingFile, file, error, nameAlreadyUsed} = 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 && <YTErrorBlock error={error} />}\n {nameAlreadyUsed && (\n <Alert\n theme=\"info\"\n message=\"If you want to supplement the table, go to it and use the upload dialog.\"\n />\n )}\n </React.Fragment>\n );\n }\n\n componentDidUpdate(_: Props, prevState: State) {\n if (prevState.name !== this.state.name) {\n const alreadyUsed = this.checkNameAlreadyExist(this.state.name);\n this.setState({nameAlreadyUsed: alreadyUsed});\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 ...(this.state.nameAlreadyUsed && {\n validationState: 'invalid',\n errorMessage: 'Node with this name already exists',\n }),\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={\n Boolean(fileError) ||\n Boolean(this.state.error) ||\n this.inProgress() ||\n this.state.nameAlreadyUsed\n }\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 checkNameAlreadyExist(name: string) {\n const {existingNodes} = this.props;\n return existingNodes.includes(name);\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=\"Create table from 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 existingNodes: getSortedNodesNames(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';\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 {YTErrorBlock} from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport {StickyContainer} from '../../../../components/StickyContainer/StickyContainer';\nimport TTLInfo from '../../../../components/TTLInfo/TTLInfo';\nimport CreateTableModal from '../../modals/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 {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 renderError() {\n const {\n error: {message, details},\n } = this.props;\n return (\n <div className={block('error')}>\n <YTErrorBlock message={message} error={details} />\n </div>\n );\n }\n\n renderView() {\n return (\n <StickyContainer>\n {({stickyTopClassName}) => (\n <React.Fragment>\n <div className={tbBlock({sticky: false}, stickyTopClassName)}>\n <MapNodeToolbarConnected />\n </div>\n <div className={block('content')}>\n <MapNodesTable />\n </div>\n </React.Fragment>\n )}\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 <div className={block('toolbar')}>\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 </div>\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';\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 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 && <OpenQueryButtons className={block('yql')} 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';\nimport {useDisableMaxContentWidth} from '../../../../containers/MaxContentWidth';\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 useDisableMaxContentWidth();\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 {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';\nimport {StickyContainer} from '../../../../components/StickyContainer/StickyContainer';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\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';\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 {({stickyTopClassName}) => (\n <React.Fragment>\n <Toolbar\n className={stickyTopClassName}\n itemsToWrap={[\n {\n node: (\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 ),\n },\n ]}\n />\n <LoadDataHandler {...this.props}>\n <ElementsTable\n {...this.tableSettings}\n items={transactions}\n isLoading={loading}\n />\n </LoadDataHandler>\n </React.Fragment>\n )}\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 chaos_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 '../../../reducers';\nimport type {YtQueueStatus} from '../../../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 {useSelector} from 'react-redux';\nimport moment from 'moment';\n\nimport {YTErrorBlock, YTErrorBlockProps} from '../../../../components/Block/Block';\nimport {Info} from '../../../../components/Info/Info';\nimport {getErrorWithCode} from '../../../../utils/errors';\nimport {YTError} from '../../../../types';\n\nimport {getNavigationPathAttributes} from '../../../../store/selectors/navigation/navigation';\n\n// https://github.com/ytsaurus/ytsaurus/blob/95acd2c25e8996eccada40d178bfef6784fb3278/yt/yt/client/queue_client/public.h#L18\nconst QUEUE_IS_NOT_MAPPED = 3105;\nconst MAPPING_TIMEOUT = 5 * 60 * 1000;\n\nexport function QueueError({error, ...rest}: Omit<YTErrorBlockProps, 'error'> & {error: YTError}) {\n const {modification_time} = useSelector(getNavigationPathAttributes);\n\n const isMappingError = React.useMemo(() => {\n const modificationTime = moment(modification_time).valueOf();\n if (Math.abs(Date.now() - modificationTime) > MAPPING_TIMEOUT) {\n return false;\n }\n return getErrorWithCode([error], QUEUE_IS_NOT_MAPPED);\n }, [error, modification_time]);\n\n if (isMappingError) {\n return (\n <Info>\n The node is mapping to a queue agent at the moment, the process may take up to 5\n minutes.\n </Info>\n );\n }\n\n return <YTErrorBlock error={error} {...rest} />;\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 {YTErrorBlock} 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 && <YTErrorBlock 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, useDispatch} from 'react-redux';\nimport {Button} from '@gravity-ui/uikit';\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 {toggleRegisterDialog} from '../../../../../store/reducers/navigation/tabs/consumer/register';\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 const dispatch = useDispatch();\n const openRegisterDialog = () => dispatch(toggleRegisterDialog());\n\n return (\n <div className={block()}>\n <RadioButton value={consumerMode} onChange={changeConsumerMode} items={tabItems} />\n <Extras />\n <Button view={'outlined'} onClick={openRegisterDialog}>\n Register to queue\n </Button>\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 {BaseQueryApi} from '@reduxjs/toolkit/query';\n\nimport {rootApi} from '../../../../../store/api';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getTargetQueue} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport {ytApiV4} from '../../../../../rum/rum-wrap-api';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\n\ntype RegisterConsumerArgs = {\n queuePath: string;\n queueCluster: string;\n};\n\nasync function register(args: RegisterConsumerArgs, api: BaseQueryApi) {\n try {\n const {queuePath, queueCluster} = args;\n\n const state = api.getState() as RootState;\n const consumerPath = getPath(state);\n const consumerCluster = getCluster(state);\n const {vital} = getTargetQueue(state) ?? {vital: false};\n\n const response = await wrapApiPromiseByToaster(\n ytApiV4.executeBatch({\n parameters: {\n requests: [\n {\n command: 'register_queue_consumer' as const,\n parameters: {\n vital,\n queue_path: {\n $value: queuePath,\n $attributes: {cluster: queueCluster},\n },\n consumer_path: {\n $value: consumerPath,\n $attributes: {cluster: consumerCluster},\n },\n },\n },\n ],\n },\n }),\n {\n toasterName: 'register queue consumer',\n successContent: 'Registration of the consumer has started, this may take some time',\n skipErrorToast: true,\n batchType: 'v4',\n errorTitle: '',\n },\n );\n if (response.results[0]?.error) {\n throw response.results[0]?.error;\n }\n return {data: []};\n } catch (error) {\n return {error};\n }\n}\n\nconst consumerApi = rootApi.injectEndpoints({\n endpoints: (build) => ({\n register: build.mutation({\n queryFn: register,\n }),\n }),\n});\n\nexport const {useRegisterMutation} = consumerApi;\n","import {YT} from '../../../config/yt-config';\n\nexport function makeClusterSelectOptionsSameEnv(cluster: string) {\n const clusters = Object.entries(YT.clusters)\n .filter(([_, value]) => value.environment === YT.clusters[cluster].environment)\n .map(([key]) => key);\n return clusters\n .map((cluster) => ({\n value: cluster,\n content: cluster,\n }))\n ?.sort((a, b) => a.value.localeCompare(b.value));\n}\n","import React, {useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getRegisterDialogVisibility,\n toggleRegisterDialog,\n} from '../../../../../store/reducers/navigation/tabs/consumer/register';\nimport {useRegisterMutation} from '../../../../../store/api/navigation/tabs/consumer/consumer';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../components/Dialog';\n\nimport {makeClusterSelectOptionsSameEnv} from '../../../../../utils/navigation/tabs/make-cluster-select-options-same-env';\n\nimport {YTError} from '../../../../../../@types/types';\n\ntype FormValues = {\n queuePath: string;\n queueCluster: string;\n};\n\nexport function RegisterConsumerDialog() {\n const dispatch = useDispatch();\n const visible = useSelector(getRegisterDialogVisibility);\n const cluster = useSelector(getCluster);\n\n const onClose = () => dispatch(toggleRegisterDialog());\n\n const [update, {isLoading, error}] = useRegisterMutation();\n\n const clusterControlOptions = useMemo(\n () => makeClusterSelectOptionsSameEnv(cluster),\n [cluster],\n );\n\n return (\n <YTDFDialog\n visible={visible}\n headerProps={{title: 'Register consumer to queue'}}\n fields={[\n {\n type: 'select' as const,\n name: 'queueCluster',\n caption: 'Cluster',\n extras: {\n options: clusterControlOptions,\n placeholder: 'Cluster',\n width: 'max',\n filterable: true,\n },\n },\n {\n type: 'text' as const,\n name: 'queuePath',\n caption: 'Path',\n required: true,\n extras: {\n placeholder: 'Path to queue...',\n },\n },\n ...makeErrorFields([error as YTError]),\n ]}\n size={'m'}\n onAdd={async (form: FormApi<FormValues>) => {\n const {values} = form.getState();\n const newValues = {...values, queueCluster: values.queueCluster[0]};\n await update(newValues).unwrap();\n }}\n isApplyDisabled={(state) => {\n return state.hasValidationErrors || isLoading;\n }}\n onClose={onClose}\n />\n );\n}\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 {YTErrorBlock} 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 <YTErrorBlock 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 ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\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 {QueueError} from '../Queue/QueueError';\n\nimport TargetQueue from './TargetQueue/TargetQueue';\nimport Meta from './Meta/Meta';\nimport ConsumerToolbar from './Toolbar/Toolbar';\nimport {RegisterConsumerDialog} from './modals/RegisterDialog';\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 <QueueError 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\n toolbar={\n <Toolbar\n itemsToWrap={[\n {node: <ConsumerToolbar extras={ExtraControls} />, growable: true},\n ]}\n />\n }\n content={<View />}\n />\n <RegisterConsumerDialog />\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 {YTAlertBlock} 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 <YTAlertBlock key={index} error={alert as YTError} />;\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 value: QUEUE_MODE.EXPORTS,\n text: 'Exports',\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 {BaseQueryApi} from '@reduxjs/toolkit/query';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport {ytApiV3, ytApiV4} from '../../../../../rum/rum-wrap-api';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {BatchResultsItem} from '../../../../../../shared/yt-types';\n\ntype CreateConsumersMutationArgs = {\n consumerPath: string;\n} & (\n | {\n register?: false | undefined;\n vital?: boolean;\n }\n | {\n register: true;\n vital: boolean;\n }\n);\n\nexport async function createConsumer(args: CreateConsumersMutationArgs, api: BaseQueryApi) {\n try {\n const {vital, register, consumerPath} = args;\n\n const state = api.getState() as RootState;\n const queuePath = getPath(state);\n\n await ytApiV3.create({\n parameters: {\n type: 'queue_consumer',\n path: consumerPath,\n },\n });\n\n if (register) {\n const response = await wrapApiPromiseByToaster<\n {results: BatchResultsItem<unknown>[]},\n 'v4'\n >(\n ytApiV4.executeBatch({\n parameters: {\n requests: [\n {\n command: 'register_queue_consumer' as const,\n parameters: {\n vital,\n queue_path: queuePath,\n consumer_path: consumerPath,\n },\n },\n ],\n },\n }),\n {\n toasterName: 'register queue consumer',\n successContent:\n 'Registration of the consumer has started, this may take some time',\n skipErrorToast: true,\n batchType: 'v4',\n errorTitle: '',\n },\n );\n if (response.results[0]?.error) {\n throw response.results[0]?.error;\n }\n }\n\n return {data: []};\n } catch (error) {\n return {error};\n }\n}\n\ntype RegisterConsumersMutationArgs = {\n consumerPath: string;\n consumerCluster: string;\n vital: boolean;\n};\n\nexport async function registerConsumer(args: RegisterConsumersMutationArgs, api: BaseQueryApi) {\n try {\n const {vital, consumerPath, consumerCluster} = args;\n\n const state = api.getState() as RootState;\n const queuePath = getPath(state);\n const queueCluster = getCluster(state);\n\n const response = await wrapApiPromiseByToaster<\n {results: BatchResultsItem<unknown>[]},\n 'v4'\n >(\n ytApiV4.executeBatch({\n parameters: {\n requests: [\n {\n command: 'register_queue_consumer' as const,\n parameters: {\n vital,\n queue_path: {\n $value: queuePath,\n $attributes: {\n cluster: queueCluster,\n },\n },\n consumer_path: {\n $value: consumerPath,\n $attributes: {\n cluster: consumerCluster,\n },\n },\n },\n },\n ],\n },\n }),\n {\n toasterName: 'register queue consumer',\n successContent: 'Registration of the consumer has started, this may take some time',\n skipErrorToast: true,\n batchType: 'v4',\n errorTitle: '',\n },\n );\n\n if (response.results[0]?.error) {\n throw response.results[0]?.error;\n }\n return {data: []};\n } catch (error) {\n return {error};\n }\n}\n\nexport async function unregisterConsumer(args: {consumerPath: string}, api: BaseQueryApi) {\n try {\n const {consumerPath} = args;\n\n const state = api.getState() as RootState;\n const queue_path = getPath(state);\n\n const response = await wrapApiPromiseByToaster(\n ytApiV4.executeBatch({\n parameters: {\n requests: [\n {\n command: 'unregister_queue_consumer' as const,\n parameters: {\n queue_path,\n consumer_path: consumerPath,\n },\n },\n ],\n },\n }),\n {\n toasterName: 'unregister queue consumer',\n successContent:\n 'Unregistration of the consumer has started, this may take some time',\n skipErrorToast: true,\n batchType: 'v4',\n errorTitle: '',\n },\n );\n\n if (response.results[0]?.error) {\n throw response.results[0]?.error;\n }\n\n return {data: []};\n } catch (error) {\n return {error};\n }\n}\n","import {BaseQueryApi} from '@reduxjs/toolkit/query';\n//@ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {ytApi} from '../../../../../store/api/yt';\nimport {getAttributes, getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport {YTApiId, ytApiV3} from '../../../../../rum/rum-wrap-api';\nimport {QueueExport, QueueExportConfig} from '../../../../../types/navigation/queue/queue';\n\nconst cancelHelper = new CancelHelper();\n\ntype Config = QueueExportConfig<number> & {export_name: string};\n\ntype ExportsMutationArgs = {\n type: 'delete' | 'edit';\n prevConfig?: Config;\n newConfig?: Config;\n};\n\nexport const makeGetExportsParams = (path: string) => ({\n id: YTApiId.queueExportConfig,\n errorTitle: 'Failed to get export config',\n parameters: {\n requests: [\n {\n command: 'get' as const,\n parameters: prepareRequest('static_export_config', {path: `${path}/@`}),\n },\n ],\n },\n});\n\nasync function deleteExtraAttributes(\n configs: QueueExport<number>,\n prevConfig: Config,\n transactionId: string,\n) {\n await ytApiV3.remove({\n path: `${configs[prevConfig.export_name].export_directory}/@queue_static_export_destination`,\n cancellation: cancelHelper.removeAllAndSave,\n transaction_id: transactionId,\n });\n\n await ytApiV3.remove({\n path: `${configs[prevConfig.export_name].export_directory}/@queue_static_export_progress`,\n cancellation: cancelHelper.removeAllAndSave,\n transaction_id: transactionId,\n });\n}\n\nexport async function exportsMutation(args: ExportsMutationArgs, api: BaseQueryApi) {\n try {\n const state = api.getState() as RootState;\n const path = getPath(state);\n const attributes = getAttributes(state);\n const cluster = getCluster(state);\n\n const {prevConfig, type, newConfig} = args;\n\n const configs: QueueExport<number> = ytApi.endpoints.fetchBatch.select({\n ...makeGetExportsParams(path),\n cluster,\n })(state).data?.[0].output as QueueExport<number>;\n\n const newConfigs = {...configs};\n\n if (prevConfig?.export_name && newConfigs[prevConfig?.export_name]) {\n delete newConfigs[prevConfig?.export_name];\n }\n\n if (type === 'edit' && newConfig?.export_name) {\n newConfigs[newConfig?.export_name] = newConfig;\n }\n\n const transactionId = await yt.v3.startTransaction({});\n try {\n await ytApiV3.set(\n {\n path: `${path}/@static_export_config`,\n cancellation: cancelHelper.removeAllAndSave,\n transaction_id: transactionId,\n },\n newConfigs,\n );\n\n if (type === 'edit' && newConfig) {\n if (prevConfig && prevConfig.export_directory !== newConfig.export_directory) {\n await deleteExtraAttributes(configs, prevConfig, transactionId);\n }\n await ytApiV3.set(\n {\n path: `${newConfig.export_directory}/@queue_static_export_destination`,\n cancellation: cancelHelper.removeAllAndSave,\n transaction_id: transactionId,\n },\n {\n originating_queue_id: `${ypath.getValue(attributes, '/id')}`,\n },\n );\n }\n\n if (type === 'delete' && prevConfig?.export_name) {\n await deleteExtraAttributes(configs, prevConfig, transactionId);\n }\n\n await wrapApiPromiseByToaster(\n yt.v3.commitTransaction({transaction_id: transactionId}),\n {\n toasterName: 'exports_config_update',\n successContent: 'Exports config successfully updated',\n },\n );\n return {data: {}};\n } catch (error) {\n await yt.v3.abortTransaction({transaction_id: transactionId});\n return {error};\n }\n } catch (error) {\n return {error};\n }\n}\n","import {rootApi} from '../../../../../store/api';\n\nimport {YTApiId} from '../../../../../rum/rum-wrap-api';\nimport {createConsumer, registerConsumer, unregisterConsumer} from './consumers';\nimport {exportsMutation} from './exports';\n\nexport const queueApi = rootApi.injectEndpoints({\n endpoints: (build) => ({\n export: build.mutation({\n queryFn: exportsMutation,\n invalidatesTags: [String(YTApiId.queueExportConfig)],\n }),\n createConsumer: build.mutation({\n queryFn: createConsumer,\n }),\n unregisterConsumer: build.mutation({\n queryFn: unregisterConsumer,\n }),\n registerConsumer: build.mutation({\n queryFn: registerConsumer,\n }),\n }),\n});\n\nexport const {\n useExportMutation,\n useCreateConsumerMutation,\n useRegisterConsumerMutation,\n useUnregisterConsumerMutation,\n} = queueApi;\n","import ypath from '../../../../../../common/thor/ypath';\nimport {ytApiV3} from '../../../../../../rum/rum-wrap-api';\n\nexport async function validateCreateConsumerPath(path: string) {\n try {\n const parentPath = path\n .split('/')\n .slice(0, path.split('/').length - 1)\n .join('/');\n\n const res = await ytApiV3.executeBatch({\n parameters: {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n path: `${parentPath}/@`,\n },\n },\n {\n command: 'get' as const,\n parameters: {\n path: `${path}/@`,\n },\n },\n {\n command: 'exists' as const,\n parameters: {\n path,\n },\n },\n ],\n },\n });\n\n if (ypath.getValue(res[0]?.output, '/type') !== 'map_node') {\n return 'Parent path should be a directory';\n }\n\n if (path && path.split('/').at(-1)?.length === 0) {\n return 'Consumer name should not be empty';\n }\n\n if (res[2]?.output) {\n return 'Path should not exist';\n }\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","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getCreateDialogVisibility,\n toggleCreateDialog,\n} from '../../../../../../store/reducers/navigation/tabs/queue/consumers';\nimport {useCreateConsumerMutation} from '../../../../../../store/api/navigation/tabs/queue/queue';\n\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../../components/Dialog';\n\nimport {docsUrl} from '../../../../../../config';\nimport UIFactory from '../../../../../../UIFactory';\nimport {makeLink} from '../../../../../../utils/utils';\n\nimport {YTError} from '../../../../../../../@types/types';\n\nimport {validateCreateConsumerPath} from './utils';\n\nexport type CreateConsumerFormValues = {\n consumerPath: string;\n} & (\n | {\n register?: false | undefined;\n vital?: boolean;\n }\n | {\n register: true;\n vital: boolean;\n }\n);\n\nexport function CreateConsumerDialog() {\n const dispatch = useDispatch();\n const visible = useSelector(getCreateDialogVisibility);\n\n const [update, {isLoading, error}] = useCreateConsumerMutation();\n\n const onClose = () => dispatch(toggleCreateDialog());\n\n return (\n <YTDFDialog<CreateConsumerFormValues>\n visible={visible}\n fields={[\n {\n type: 'path' as const,\n name: 'consumerPath',\n caption: 'Path',\n required: true,\n validator: validateCreateConsumerPath,\n extras: {\n placeholder: 'Path to consumer node...',\n },\n },\n {\n type: 'tumbler' as const,\n name: 'register',\n caption: 'Register consumer',\n },\n {\n type: 'tumbler' as const,\n name: 'vital',\n caption: 'Vital',\n tooltip: (\n <div>\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['dynamic-tables:queues#creating-a-consumer'],\n 'Docs',\n ),\n )}\n </div>\n ),\n visibilityCondition: {\n when: 'register',\n isActive: (v) => Boolean(v),\n },\n },\n ...makeErrorFields([error as YTError]),\n ]}\n headerProps={{title: 'Create consumer'}}\n size={'m'}\n onAdd={async (form: FormApi<CreateConsumerFormValues>) => {\n const {values} = form.getState();\n await update(values).unwrap();\n }}\n isApplyDisabled={(state) => {\n return state.hasValidationErrors || isLoading;\n }}\n onClose={onClose}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Text} from '@gravity-ui/uikit';\n\nimport {\n closeUnregisterDialog,\n getConsumerPath,\n getUnregisterDialogVisibility,\n} from '../../../../../../store/reducers/navigation/tabs/queue/consumers';\nimport {useUnregisterConsumerMutation} from '../../../../../../store/api/navigation/tabs/queue/queue';\n\nimport {YTDFDialog, makeErrorFields} from '../../../../../../components/Dialog';\nimport {YTError} from '../../../../../../../@types/types';\n\nexport function UnregisterConsumerDialog() {\n const dispatch = useDispatch();\n const visible = useSelector(getUnregisterDialogVisibility);\n const consumerPath = useSelector(getConsumerPath);\n\n const onClose = () => dispatch(closeUnregisterDialog());\n\n const [update, {isLoading, error}] = useUnregisterConsumerMutation();\n\n return (\n <YTDFDialog\n visible={visible}\n headerProps={{title: 'Unregister consumer'}}\n fields={[\n {\n name: 'delete',\n type: 'block',\n extras: {\n children: (\n <Text variant={'body-2'}>\n Are you shure you want to unregister consumer?\n </Text>\n ),\n },\n },\n ...makeErrorFields([error as YTError]),\n ]}\n onAdd={async () => {\n if (consumerPath) {\n await update({consumerPath}).unwrap();\n }\n }}\n isApplyDisabled={(state) => {\n return state.hasValidationErrors || isLoading;\n }}\n onClose={onClose}\n />\n );\n}\n","import React, {useMemo} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getRegisterDialogVisibility,\n toggleRegisterDialog,\n} from '../../../../../../store/reducers/navigation/tabs/queue/consumers';\nimport {useRegisterConsumerMutation} from '../../../../../../store/api/navigation/tabs/queue/queue';\nimport {getCluster} from '../../../../../../store/selectors/global';\n\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../../components/Dialog';\n\nimport {docsUrl} from '../../../../../../config';\nimport UIFactory from '../../../../../../UIFactory';\nimport {makeLink} from '../../../../../../utils/utils';\nimport {makeClusterSelectOptionsSameEnv} from '../../../../../../utils/navigation/tabs/make-cluster-select-options-same-env';\n\nimport {YTError} from '../../../../../../../@types/types';\n\ntype FormValues = {\n consumerPath: string;\n consumerCluster: string[];\n vital: boolean;\n};\n\nexport function RegisterConsumerDialog() {\n const dispatch = useDispatch();\n const visible = useSelector(getRegisterDialogVisibility);\n const cluster = useSelector(getCluster);\n\n const onClose = () => dispatch(toggleRegisterDialog());\n\n const [update, {isLoading, error}] = useRegisterConsumerMutation();\n\n const clusterControlOptions = useMemo(\n () => makeClusterSelectOptionsSameEnv(cluster),\n [cluster],\n );\n\n return (\n <YTDFDialog\n visible={visible}\n headerProps={{title: 'Register consumer'}}\n fields={[\n {\n type: 'select' as const,\n name: 'consumerCluster',\n caption: 'Cluster',\n initialValue: [cluster],\n extras: {\n options: clusterControlOptions,\n placeholder: 'Cluster',\n width: 'max',\n filterable: true,\n },\n },\n {\n type: 'text' as const,\n name: 'consumerPath',\n caption: 'Path',\n required: true,\n extras: {\n placeholder: 'Path to consumer node...',\n },\n },\n {\n type: 'tumbler' as const,\n name: 'vital',\n caption: 'Vital',\n tooltip: (\n <div>\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['dynamic-tables:queues#creating-a-consumer'],\n 'Docs',\n ),\n )}\n </div>\n ),\n },\n ...makeErrorFields([error as YTError]),\n ]}\n size={'m'}\n onAdd={async (form: FormApi<FormValues>) => {\n const {values} = form.getState();\n const preparedValues = {...values, consumerCluster: values.consumerCluster[0]};\n await update(preparedValues).unwrap();\n }}\n isApplyDisabled={(state) => {\n return state.hasValidationErrors || isLoading;\n }}\n onClose={onClose}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\nimport {Button} from '@gravity-ui/uikit';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport Icon from '../../../../../../components/Icon/Icon';\n\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 {openUnregisterDialog} from '../../../../../../store/reducers/navigation/tabs/queue/consumers';\nimport {\n SelectedConsumer,\n getConsumers,\n getQueueRateMode,\n getQueueTimeWindow,\n getStatusLoaded,\n getStatusLoading,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport {CreateConsumerDialog} from './CreateConsumerDialog';\nimport {UnregisterConsumerDialog} from './UnregisterConsumerDialog';\nimport {RegisterConsumerDialog} from './RegisterConsumerDialog';\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 name: 'actions',\n render: (value) => {\n return <UnregisterConsumer consumerPath={value.row.consumer} />;\n },\n header: '',\n },\n ],\n);\n\nfunction UnregisterConsumer({consumerPath}: {consumerPath: string}) {\n const dispatch = useDispatch();\n return (\n <Button view={'flat'} onClick={() => dispatch(openUnregisterDialog({consumerPath}))}>\n <Icon awesome={'xmark'} size={'l'} />\n </Button>\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 <>\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 <CreateConsumerDialog />\n <UnregisterConsumerDialog />\n <RegisterConsumerDialog />\n </>\n );\n}\n","import React from 'react';\nimport {Button} from '@gravity-ui/uikit';\nimport {ConnectedProps, connect, useDispatch} 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';\n\nimport {\n toggleCreateDialog,\n toggleRegisterDialog,\n} from '../../../../../../store/reducers/navigation/tabs/queue/consumers';\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 const dispatch = useDispatch();\n const openCreateDialog = () => dispatch(toggleCreateDialog());\n const openRegisterDialog = () => dispatch(toggleRegisterDialog());\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 <Button view={'outlined'} onClick={openCreateDialog}>\n Create consumer\n </Button>\n <Button view={'outlined'} onClick={openRegisterDialog}>\n Register consumer\n </Button>\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 {YTErrorBlock} 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 <YTErrorBlock 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 isEmpty_ from 'lodash/isEmpty';\n\nimport {QueueExportConfig} from '../../../../../../../../types/navigation/queue/queue';\nimport {ExportsFormValues} from '../ExportsEditDialog';\n\nexport function prepareInitialValues(\n configs: {[key: string]: QueueExportConfig<number>} | undefined,\n config?: string,\n): ExportsFormValues {\n if (isEmpty_(configs) || !config) {\n return {\n id: 'new_export',\n export_period: {value: 30000},\n export_directory: '//home/',\n export_name: 'new_export',\n };\n }\n\n const export_ttl = configs[config].export_ttl;\n const export_period = configs[config].export_period;\n\n const preparedConfig: ExportsFormValues = {\n ...configs[config],\n id: config,\n export_name: config,\n export_period: {value: export_period},\n export_ttl: export_ttl ? {value: export_ttl} : undefined,\n };\n\n return preparedConfig;\n}\n\nexport function prepareUpdateValues(config: ExportsFormValues) {\n const {id: _id, export_name: _export_name, ...restConfig} = config;\n const preparedConfig: QueueExportConfig<number> = {\n ...restConfig,\n output_table_name_pattern: restConfig.output_table_name_pattern || undefined,\n use_upper_bound_for_table_names: restConfig.use_upper_bound_for_table_names || undefined,\n export_ttl: restConfig.export_ttl?.value,\n export_period: restConfig.export_period?.value,\n };\n return preparedConfig;\n}\n","import ypath from '../../../../../../../../common/thor/ypath';\nimport {ytApiV3} from '../../../../../../../../rum/rum-wrap-api';\n\nimport {BatchApiResults} from '../../../../../../../../store/api/yt/endpoints/executeBatch';\n\nimport {QueueExport} from '../../../../../../../../types/navigation/queue/queue';\n\nimport {ExportsFormValues} from '../ExportsEditDialog';\n\nexport function validateExportPeriod(period?: {value?: number; error?: string}) {\n return !period?.value || period?.value % 1000 !== 0\n ? 'Export period should be a multiple of 1000ms'\n : undefined;\n}\n\nexport async function validateExportDirectory(path: string) {\n try {\n const res = await ytApiV3.executeBatch({\n parameters: {\n requests: [\n {\n command: 'get' as const,\n parameters: {\n path: `${path}/@`,\n },\n },\n ],\n },\n });\n\n if (res[0].error) {\n return 'Target path should exist';\n }\n\n if (ypath.getValue(res[0].output, '/type') !== 'map_node') {\n return 'Target path should be a directory';\n }\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\nexport function validate(\n values: ExportsFormValues,\n type: 'create' | 'edit',\n configs?: BatchApiResults<QueueExport<number>>,\n) {\n if (!configs) {\n return undefined;\n }\n\n const paths = new Set();\n const configsValues = configs[0].output;\n\n for (const config in configsValues) {\n if (configsValues[config]) {\n paths.add(configsValues[config].export_directory);\n }\n }\n\n if (\n configsValues &&\n Object.keys(configsValues).includes(values.export_name) &&\n type === 'create'\n ) {\n return {\n export_name: 'Export with the same name already exists',\n };\n }\n\n if (paths.has(values.export_directory) && type === 'create') {\n return {\n export_directory: 'Export with the same export_directory already exists',\n };\n }\n\n return undefined;\n}\n","import React, {useEffect, useState} from 'react';\nimport {useSelector} from 'react-redux';\nimport {Text} from '@gravity-ui/uikit';\n\nimport {useFetchBatchQuery} from '../../../../../../../store/api/yt';\nimport {useExportMutation} from '../../../../../../../store/api/navigation/tabs/queue/queue';\nimport {makeGetExportsParams} from '../../../../../../../store/api/navigation/tabs/queue/exports';\nimport {getPath} from '../../../../../../../store/selectors/navigation';\n\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../../../components/Dialog';\n\nimport {QueueExport, QueueExportConfig} from '../../../../../../../types/navigation/queue/queue';\nimport {YTError} from '../../../../../../../types';\n\nimport {ExportConfigUtility} from '../Exports';\n\nimport {\n outputTableNamePatternTooltip,\n prepareInitialValues,\n prepareUpdateValues,\n useUpperBoundForTableNamesTooltip,\n validate,\n validateExportDirectory,\n validateExportPeriod,\n} from './utils';\n\ninterface DialogProps {\n type: 'edit' | 'create';\n visible: boolean;\n prevConfig?: QueueExportConfig<number> & {export_name: string};\n onClose: () => void;\n}\n\nexport type ExportsFormValues = ExportConfigUtility & QueueExportConfig<{value: number}>;\n\nconst fields = [\n {\n type: 'text' as const,\n name: 'export_name',\n caption: 'Export name',\n required: true,\n },\n {\n type: 'path' as const,\n name: 'export_directory',\n caption: 'Export directory',\n required: true,\n validator: validateExportDirectory,\n },\n {\n type: 'time-duration' as const,\n name: 'export_period',\n caption: 'Export period',\n required: true,\n tooltip: 'Export period mask will be converted to milliseconds',\n validator: validateExportPeriod,\n },\n {\n type: 'time-duration' as const,\n name: 'export_ttl',\n caption: 'TTL',\n tooltip: 'TTL mask will be converted to milliseconds',\n },\n {\n type: 'text' as const,\n name: 'output_table_name_pattern',\n caption: 'Output table name pattern',\n tooltip: <Text whiteSpace={'break-spaces'}>{outputTableNamePatternTooltip}</Text>,\n extras: {\n placeholder: '%UNIX_TS-%PERIOD',\n },\n },\n {\n type: 'tumbler' as const,\n name: 'use_upper_bound_for_table_names',\n caption: 'Use upper bound for table names',\n tooltip: <Text whiteSpace={'break-spaces'}>{useUpperBoundForTableNamesTooltip}</Text>,\n },\n];\n\nexport function ExportsEditDialog(props: DialogProps) {\n const {type, prevConfig, visible, onClose} = props;\n const path = useSelector(getPath);\n\n const {data: configs} = useFetchBatchQuery<QueueExport<number>>(makeGetExportsParams(path));\n const [update, {isLoading, error}] = useExportMutation();\n\n const [initialValues, setInitialValues] = useState<ExportsFormValues>();\n\n useEffect(() => {\n const rawValues = configs ? configs[0].output : {};\n setInitialValues(prepareInitialValues(rawValues, prevConfig?.export_name));\n }, [prevConfig?.export_name, configs]);\n\n const onAdd = async (form: FormApi<ExportsFormValues, Partial<ExportsFormValues>>) => {\n const {values} = form.getState();\n const preparedValues = prepareUpdateValues(values);\n await update({\n prevConfig,\n newConfig: {...preparedValues, export_name: values.export_name},\n type: 'edit',\n }).unwrap();\n };\n\n return (\n <YTDFDialog<ExportsFormValues>\n onAdd={onAdd}\n visible={visible}\n onClose={onClose}\n size=\"l\"\n headerProps={{title: type === 'create' ? 'Create export' : 'Edit export'}}\n initialValues={initialValues}\n fields={[...fields, ...makeErrorFields([error as YTError])]}\n isApplyDisabled={(state) => {\n return state.hasValidationErrors || isLoading;\n }}\n validate={(values) => validate(values, type, configs)}\n />\n );\n}\n","export const outputTableNamePatternTooltip = `This pattern extends the export table name. Supported:\n- %UNIX_TS - unix timestamp\n- %PERIOD - the length of the export period in seconds\n- %ISO - unix timestamp as ISO time string\n- all specifiers supported by the \"strftime\" function (e.g. %H, %M, %S, etc.)\n\n Default is \"%UNIX_TS-%PERIOD\".\n NB!: It has to set a unique table name, otherwise error will occur.`;\n\nexport const useUpperBoundForTableNamesTooltip = `\"true\" - output table will gather data to upper bound of frame. E.g. for %H pattern output table will be named 17:00 and has data from 16:00 to 17:00.\n\"false\" - otherwise, formatting will be equal to the upper bound minus one export period. E.g. for %H data will be from 17:00 to 18:00.\nNB: In any case, the table exported with an upper bound timestamp of T is not guaranteed to contain all data with timestamp <= T.\nIn case of delays, some of the data can end up in latter tables. You should be especially careful with commit_ordering=%false queues, since commit timestamp monotonicity within a tablet is not guaranteed for them.\n`;\n","import React, {useCallback, useState} from 'react';\nimport {Button, Flex, Text} from '@gravity-ui/uikit';\nimport b from 'bem-cn-lite';\n\nimport {useExportMutation} from '../../../../../../../store/api/navigation/tabs/queue/queue';\n\nimport Icon from '../../../../../../../components/Icon/Icon';\nimport {YTDFDialog, makeErrorFields} from '../../../../../../../components/Dialog';\nimport {QueueExportConfig} from '../../../../../../../types/navigation/queue/queue';\nimport {YTError} from '../../../../../../../types';\n\nimport {ExportsEditDialog} from '../ExportsEditDialog/ExportsEditDialog';\n\nconst block = b('exports-edit');\n\nexport function ExportsEdit({\n prevConfig,\n}: {\n prevConfig: QueueExportConfig<number> & {export_name: string};\n}) {\n const [update, {isLoading, error}] = useExportMutation();\n\n const [editDialogVisible, setEditDialogVisible] = useState(false);\n const [deleteDialogVisible, setDeleteDialogVisible] = useState(false);\n\n const toggleEditDialogVisibility = useCallback(() => {\n setEditDialogVisible(!editDialogVisible);\n }, [editDialogVisible, setEditDialogVisible]);\n\n const toggleDeleteDialogVisibility = useCallback(() => {\n setDeleteDialogVisible(!deleteDialogVisible);\n }, [deleteDialogVisible, setDeleteDialogVisible]);\n\n return (\n <>\n <Flex direction={'row'} gap={1}>\n <Button view=\"flat\" onClick={toggleDeleteDialogVisibility}>\n <Icon awesome={'trash-bin'} />\n </Button>\n <Button\n className={block('button')}\n view=\"flat\"\n onClick={toggleEditDialogVisibility}\n qa={'edit-export'}\n >\n <Icon awesome={'pencil'} />\n </Button>\n </Flex>\n <YTDFDialog\n visible={deleteDialogVisible}\n pristineSubmittable={true}\n fields={[\n {\n name: 'delete',\n type: 'block',\n extras: {\n children: (\n <Text variant=\"body-2\">\n Are you shure you want to delete {prevConfig.export_name}?\n </Text>\n ),\n },\n },\n ...makeErrorFields([error as YTError]),\n ]}\n onAdd={async () => {\n await update({prevConfig, type: 'delete'}).unwrap();\n }}\n headerProps={{\n title: 'Delete export',\n }}\n onClose={toggleDeleteDialogVisibility}\n isApplyDisabled={() => {\n return isLoading;\n }}\n />\n <ExportsEditDialog\n type={'edit'}\n prevConfig={prevConfig}\n visible={editDialogVisible}\n onClose={toggleEditDialogVisibility}\n />\n </>\n );\n}\n","import React from 'react';\nimport {ClipboardButton, Flex, Text} from '@gravity-ui/uikit';\n\nimport Link from '../../../../../../components/Link/Link';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport DataTableYT, {Column} from '../../../../../../components/DataTableYT/DataTableYT';\nimport {Tooltip} from '../../../../../../components/Tooltip/Tooltip';\nimport {formatTimeDuration} from '../../../../../../components/TimeDuration/TimeDuration';\n\nimport hammer from '../../../../../../common/hammer';\nimport {QueueExportConfig} from '../../../../../../types/navigation/queue/queue';\nimport {makeNavigationLink} from '../../../../../../utils/app-url';\n\nimport {ExportsEdit} from './ExportsEdit/ExportsEdit';\nimport {useExports} from './use-exports';\n\nexport type ExportConfigUtility = {\n id: string;\n export_name: string;\n};\n\nexport type ExportConfigColumns = ExportConfigUtility & QueueExportConfig<number>;\n\nconst columns: Array<Column<ExportConfigColumns>> = [\n {\n name: 'export_name',\n render: Value,\n header: 'Export name',\n },\n {\n name: 'export_directory',\n render: Path,\n header: 'Export directory',\n },\n {\n name: 'export_period',\n render: Time,\n header: 'Export period',\n },\n {\n name: 'export_ttl',\n render: Time,\n header: 'Export TTL',\n },\n {\n name: 'output_table_name_pattern',\n render: Value,\n header: 'Output table name pattern',\n },\n {\n name: 'use_upper_bound_for_table_names',\n render: Value,\n header: 'Use upper bound for table names',\n },\n {\n name: '',\n render({row}) {\n return <ExportsEdit prevConfig={row} />;\n },\n },\n];\n\nexport function Exports() {\n const {data, isLoading, isFetching} = useExports();\n\n return (\n <DataTableYT<ExportConfigColumns>\n columns={columns}\n data={data}\n loaded={!isFetching}\n loading={isLoading}\n useThemeYT\n settings={{displayIndices: false, sortable: false}}\n />\n );\n}\n\nfunction Value({value}: {value?: unknown}) {\n return <>{value ? String(value) : hammer.format.NO_VALUE}</>;\n}\n\nfunction Time({value}: {value?: unknown}) {\n return (\n <Flex alignItems={'center'} gap={1}>\n <Text>{value ? formatTimeDuration(Number(value)) : hammer.format.NO_VALUE}</Text>\n {Boolean(value) && (\n <Tooltip\n content={\n <Flex gap={2} alignItems={'center'}>\n <ClipboardButton text={String(value)} />\n {String(value)}, ms\n </Flex>\n }\n >\n <Icon awesome={'question-circle'} />\n </Tooltip>\n )}\n </Flex>\n );\n}\n\nfunction Path({value}: {value?: unknown}) {\n return (\n <Link url={makeNavigationLink({path: String(value)})} routed>\n {String(value)}\n </Link>\n );\n}\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport {Alerts} from '../../../../components/Alerts/Alerts';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\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 QueueToolbar 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';\nimport {Exports} from './views/Exports/Exports';\nimport {ExportsExtraControls} from './views/Exports/ExportsExtraControls';\nimport {QueueError} from './QueueError';\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 [QUEUE_MODE.EXPORTS]: {ExtraControls: ExportsExtraControls, View: Exports},\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 <QueueError 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\n toolbar={\n <Toolbar\n itemsToWrap={[\n {node: <QueueToolbar extras={ExtraControls} />, growable: true},\n ]}\n />\n }\n content={<View />}\n />\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 React, {useCallback, useState} from 'react';\nimport {Button, Flex} from '@gravity-ui/uikit';\nimport {ExportsEditDialog} from './ExportsEditDialog/ExportsEditDialog';\n\nexport function ExportsExtraControls() {\n const [visible, setVisible] = useState(false);\n\n const toggleVisibility = useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n return (\n <Flex direction={'row'} gap={3}>\n <div style={{borderLeft: '1px solid var(--dark-divider)'}}></div>\n <Button view={'outlined'} onClick={toggleVisibility} qa={'create-export'}>\n Create export\n </Button>\n <ExportsEditDialog type={'create'} visible={visible} onClose={toggleVisibility} />\n </Flex>\n );\n}\n","import {useSelector} from 'react-redux';\n\nimport {useFetchBatchQuery} from '../../../../../../store/api/yt';\nimport {makeGetExportsParams} from '../../../../../../store/api/navigation/tabs/queue/exports';\n\nimport {getPath} from '../../../../../../store/selectors/navigation';\n\nimport {QueueExport} from '../../../../../../types/navigation/queue/queue';\n\nimport {ExportConfigColumns} from './Exports';\n\nexport function useExports() {\n const path = useSelector(getPath);\n\n const {\n data: config,\n isLoading,\n isFetching,\n } = useFetchBatchQuery<QueueExport<number>>(makeGetExportsParams(path));\n\n const data: ExportConfigColumns[] = [];\n\n if (config && config[0].output) {\n for (const obj in config[0].output) {\n if (obj) {\n const newObj: ExportConfigColumns = {\n ...config[0].output[obj],\n export_name: obj,\n id: obj,\n };\n data.push(newObj);\n }\n }\n }\n\n return {data, isLoading, isFetching};\n}\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 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';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\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 {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 <div className={block('overview')}>\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 }\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 <WithStickyToolbar\n toolbar={this.renderOverview()}\n content={\n <ElementsTable\n {...this.tableSettings}\n items={tablets}\n rowClassName={Tablets.rowClassName}\n onItemClick={this.onRowClick}\n />\n }\n />\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 {YTErrorBlock} 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 && <YTErrorBlock 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","const SvgArrowRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M1.25 8A.75.75 0 0 1 2 7.25h10.19L9.47 4.53a.75.75 0 0 1 1.06-1.06l4 4a.75.75 0 0 1 0 1.06l-4 4a.75.75 0 1 1-1.06-1.06l2.72-2.72H2A.75.75 0 0 1 1.25 8\" clipRule=\"evenodd\" /></svg>;\nexport default SvgArrowRight;","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, {FC} from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {Flex, Icon} from '@gravity-ui/uikit';\nimport ArrowRightIcon from '@gravity-ui/icons/svgs/arrow-right.svg';\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\nconst PathItem: FC<{\n cluster: string;\n path: string;\n}> = ({cluster, path}) => {\n return (\n <span className={block('path-link')}>\n <Link url={genNavigationUrl({cluster, path})} className={block('path-link-link')}>\n {path}\n {''}\n </Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n </span>\n );\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, destination_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 <Flex gap={2} direction=\"column\">\n <PathItem cluster={cluster} path={path} />\n {destination_path && (\n <>\n <Icon data={ArrowRightIcon} size={16} />\n <PathItem cluster={cluster} path={destination_path} />\n </>\n )}\n </Flex>\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 {YTErrorBlock} 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 : <YTErrorBlock 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.132Q8.753 12 8.375 12C6.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.468-.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 0 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.821-.434-.329-.962-.49-1.306-.596l-.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 0 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 wait 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 {useDisableMaxContentWidth} from '../../../../containers/MaxContentWidth';\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 useDisableMaxContentWidth();\n\n return (\n <React.Fragment>\n <WithStickyToolbar\n hideToolbarShadow\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 {YTErrorBlock} 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 <YTErrorBlock\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 {YTErrorBlock} 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) && <YTErrorBlock 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/Timeline';\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 hideToolbarShadow\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 {YTErrorBlock} 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 <YTErrorBlock 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","const SvgQueueConsumer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#queue-consumer_svg__a)\"><path d=\"M12.154 2.004A3 3 0 0 1 15 5v2H6.25v2h2.5v1.5h-2.5v2h2.5V14H4l-.154-.004a3 3 0 0 1-2.842-2.842L1 11V5a3 3 0 0 1 2.846-2.996L4 2h8zM2.5 11A1.5 1.5 0 0 0 4 12.5h.75v-2H2.5zm0-2h2.25V7H2.5zM4 3.5A1.5 1.5 0 0 0 2.5 5v.5h2.25v-2zm2.25 2h7.25V5A1.5 1.5 0 0 0 12 3.5H6.25z\" /><path stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"M15.125 11.283a.25.25 0 0 1 .055.39l-.055.044-3 1.731a.25.25 0 0 1-.375-.216V9.768a.25.25 0 0 1 .312-.243l.063.027z\" /></g><defs><clipPath id=\"queue-consumer_svg__a\"><path d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgQueueConsumer;","const SvgQueueProducer = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" viewBox=\"0 0 16 16\" {...props}><path d=\"M12.154 2.004A3 3 0 0 1 15 5v2H6.25v2h2.5v1.5h-2.5v2h2.5V14H4l-.154-.004a3 3 0 0 1-2.842-2.842L1 11V5a3 3 0 0 1 2.846-2.996L4 2h8zM2.5 11A1.5 1.5 0 0 0 4 12.5h.75v-2H2.5zm0-2h2.25V7H2.5zM4 3.5A1.5 1.5 0 0 0 2.5 5v.5h2.25v-2zm2.25 2h7.25V5A1.5 1.5 0 0 0 12 3.5H6.25z\" /><path stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={1.5} d=\"m11 12 1.6 2 2.4-4\" /></svg>;\nexport default SvgQueueProducer;","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 ypath from '../../../../common/thor/ypath';\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 QueueConsumerIcon from '../../../../assets/img/svg/icons/queue-consumer.svg';\nimport QueueProducerIcon from '../../../../assets/img/svg/icons/queue-producer.svg';\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 let title = hammer.format['ReadableField'](item.type);\n if (item.iconType === 'table') {\n title = 'Static table';\n }\n\n if (item.iconType === 'table_dynamic') {\n const {sorted} = ypath.getAttributes(item);\n if (sorted) {\n title = 'Dynamic table';\n } else {\n title = 'Queue table';\n icon = <Icon awesome=\"queue-table\" />;\n }\n }\n\n if (ypath.getAttributes(item)?.treat_as_queue_consumer) {\n title = 'Queue consumer';\n icon = <QueueConsumerIcon />;\n }\n\n if (ypath.getAttributes(item)?.treat_as_queue_producer) {\n title = 'Queue producer';\n icon = <QueueProducerIcon />;\n }\n\n return (\n <span className={'icon-wrapper'} title={title}>\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, 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 {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 {YTErrorBlock} 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 <YTErrorBlock 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 React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Tab} from '../../../../constants/navigation';\nimport NavigationDescription from '../../NavigationDescription/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 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 {YTErrorBlock} 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 <YTErrorBlock error={checkPermissionsError} message={'Check permissions error'} />;\n }\n\n const accountAclLink = genAccountsAclLink(cluster, account);\n\n return isWriteable && !isAccountUsable ? (\n <YTErrorBlock\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';\nimport {Button, Flex, Link} from '@gravity-ui/uikit';\nimport {ArrowUpRightFromSquare} from '@gravity-ui/icons';\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';\n\nimport {\n invalidateYTAnnotation,\n useExternalDescriptionQuery,\n} from '../../../store/api/navigation/tabs/description';\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';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {getPath} from '../../../store/selectors/navigation';\n\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 './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 const [currentTab, setCurrentTab] = React.useState<string | 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 dispatch(invalidateYTAnnotation());\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 onActiveTabChange={(tab) => setCurrentTab(tab)}\n footerProps={{\n content: currentTab === 'description' && <CreateExternalDescriptionButton />,\n }}\n />\n );\n}\n\nfunction CreateExternalDescriptionButton() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n\n const {data: externalDescription} = useExternalDescriptionQuery({cluster, path});\n\n return (\n <>\n {externalDescription?.externalAnnotationLink && (\n <Link href={externalDescription?.externalAnnotationLink} target={'_blank'}>\n <Button view={'outlined'} size={'l'}>\n <Flex alignItems={'center'} gap={1}>\n {UIFactory?.externalAnnotationSetup?.externalServiceName ||\n 'Create external description'}{' '}\n (Recomended)\n <ArrowUpRightFromSquare />\n </Flex>\n </Button>\n </Link>\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 './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 './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 '../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 '../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 extras: {\n autoFocus: true,\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 {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';\nimport {OpenQueryButtonsContent} from '../../../containers/OpenQueryButtons/OpenQueryButtons';\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 <OpenQueryButtonsContent />\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 if (value !== Tab.ORIGINATING_QUEUE) {\n setMode(value);\n }\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 <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 {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 {useHistory} from 'react-router';\nimport cn from 'bem-cn-lite';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Flex} from '@gravity-ui/uikit';\n\nimport {getMetrics} from '../../../common/utils/metrics';\n\nimport {\n getMode,\n getNavigationBreadcrumbs,\n getNavigationPathAttributes,\n getNavigationRestorePath,\n} from '../../../store/selectors/navigation/navigation';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeRoutedURL} from '../../../store/location';\nimport {restoreObject} from '../../../store/actions/navigation/modals/restore-object';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {getFavouritePaths, isCurrentPathInFavourites} from '../../../store/selectors/favourites';\nimport {\n getActualPath,\n getPath,\n getTransaction,\n isNavigationFinalLoadState,\n} from '../../../store/selectors/navigation';\nimport {navigationToggleFavourite} from '../../../store/actions/favourites';\nimport {\n clearTransaction,\n setTransaction,\n updatePath,\n updateView,\n} from '../../../store/actions/navigation';\n\nimport Favourites from '../../../components/Favourites/Favourites';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport Link from '../../../components/Link/Link';\nimport Editor from '../../../components/Editor/Editor';\nimport {EditButton} from '../../../components/EditableAsText/EditableAsText';\nimport Button from '../../../components/Button/Button';\nimport Icon from '../../../components/Icon/Icon';\nimport MetaTable from '../../../components/MetaTable/MetaTable';\nimport {Escaped} from '../../../components/Text/Text';\nimport {Tooltip} from '../../../components/Tooltip/Tooltip';\n\nimport PathEditor from '../../../containers/PathEditor/PathEditor';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\n\nimport {Page} from '../../../constants';\nimport {Tab} from '../../../constants/navigation';\n\nimport {inTrash} from '../../../utils/navigation/restore-object';\nimport {makeNavigationLink} from '../../../utils/app-url';\nimport {decodeEscapedAbsPath} from '../../../utils/navigation';\n\nimport './NavigationTopRowContent.scss';\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 NavigationTargetPathButton() {\n const path = useSelector(getPath);\n const {path: target_path} = useSelector(getNavigationPathAttributes);\n const loading = !useSelector(isNavigationFinalLoadState);\n\n const decodedTargetPath = target_path ? decodeEscapedAbsPath(target_path) : undefined;\n\n if (loading || !decodedTargetPath || path === decodedTargetPath || path === '/') {\n return null;\n }\n\n return (\n <Link url={makeNavigationLink({path: decodedTargetPath})} routed>\n <Tooltip\n content={\n <Flex gap={1}>\n <MetaTable items={[{key: 'target_path', value: decodedTargetPath}]} />\n <ClipboardButton text={target_path} inlineMargins view=\"flat\" />\n </Flex>\n }\n placement={'bottom'}\n >\n <Button view=\"flat-info\" selected qa=\"qa:navitation:target-path\">\n <Icon awesome=\"link\" />\n </Button>\n </Tooltip>\n </Link>\n );\n}\n\nfunction onCopyToClipboard() {\n getMetrics().countEvent('navigation_copy-path');\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 <NavigationTargetPathButton />\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 getMetrics().countEvent('navigation_refresh');\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 { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as 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 (_jsx(\"li\", { ref: ref, className: b('list-group-item'), children: _jsxs(\"div\", { style: style, className: b('group', className), \"data-qa\": qa, children: [label && (_jsx(\"div\", { id: labelId, className: b('group-label'), children: label })), _jsx(\"ul\", { role: \"group\", \"aria-labelledby\": labelId, className: b('group-list'), children: children })] }) }));\n});\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as 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 && (_jsx(\"div\", { className: b('item-icon'), children: iconStart }, \"icon-start\")),\n _jsx(\"div\", { className: b('item-content'), children: children }, \"content\"),\n iconEnd && (_jsx(\"div\", { className: b('item-icon-end'), children: iconEnd }, 'icon-end')),\n ];\n let item;\n if (href) {\n item = (_jsx(\"a\", Object.assign({}, defaultProps, extraProps, commonProps, { href: href, target: target, rel: rel, children: content })));\n }\n else {\n item = (_jsx(\"div\", Object.assign({}, defaultProps, extraProps, commonProps, { children: content })));\n }\n return (_jsx(\"li\", { ref: ref, className: b('list-item'), children: item }));\n});\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as 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 (_jsx(\"ul\", { ref: ref, role: \"menu\", \n // tabIndex={0}\n style: style, className: b({ size }, className), \"data-qa\": qa, children: children }));\n});\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\n","'use client';\nimport { __rest } from \"tslib\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useActionHandlers } from '../../hooks';\nimport { Box } from '../layout';\nimport { block } from '../utils/cn';\nimport './Card.css';\nconst b = block('card');\nexport const Card = React.forwardRef(function Card(props, ref) {\n const { type = 'container', theme, view, size = 'm', children, className, onClick, disabled, selected } = props, restProps = __rest(props, [\"type\", \"theme\", \"view\", \"size\", \"children\", \"className\", \"onClick\", \"disabled\", \"selected\"]);\n const isTypeAction = type === 'action';\n const isTypeSelection = type === 'selection';\n const isTypeContainer = type === 'container';\n /* Clickable card — only with type 'action' or 'selection' and not selected or disabled */\n const hasAction = isTypeAction || isTypeSelection;\n const isClickable = hasAction && Boolean(onClick) && !disabled;\n /* Theme only with type 'container' */\n const defaultTheme = isTypeContainer ? 'normal' : undefined;\n /* View only with type 'container' and 'selection' */\n const defaultView = isTypeContainer || isTypeSelection ? 'outlined' : undefined;\n const handleClick = isClickable ? onClick : undefined;\n const { onKeyDown } = useActionHandlers(onClick);\n return (_jsx(Box, Object.assign({ ref: ref, role: isClickable ? 'button' : undefined, className: b({\n theme: theme || defaultTheme,\n view: view || defaultView,\n type,\n selected,\n size,\n disabled,\n clickable: isClickable,\n }, className), onClick: handleClick, onKeyDown: isClickable ? onKeyDown : undefined, tabIndex: isClickable ? 0 : undefined }, restProps, { children: children })));\n});\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {Button, ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\n\nimport Icon from '../Icon/Icon';\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nimport './Favourites.scss';\n\nconst b = block('favourites');\n\ninterface Props {\n className?: string;\n isActive: boolean;\n items: Array<FavouritesItem>;\n onItemClick: (item: FavouritesItem) => void;\n toggleDisabled?: boolean;\n onToggle: () => void;\n theme?: 'clear';\n}\n\nexport interface FavouritesItem {\n path: string;\n}\n\ninterface State {\n isActive: boolean;\n}\n\nexport default class Favourites extends Component<Props, State> {\n static itemType = PropTypes.shape({\n path: PropTypes.string,\n });\n\n static propTypes = {\n isActive: PropTypes.bool.isRequired,\n items: PropTypes.arrayOf(Favourites.itemType),\n onItemClick: PropTypes.func,\n toggleDisabled: PropTypes.bool,\n onToggle: PropTypes.func,\n className: PropTypes.string,\n theme: PropTypes.string,\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (props.isActive !== state.isActive) {\n return {isActive: props.isActive};\n }\n return null;\n }\n\n state = {\n isActive: this.props.isActive,\n };\n\n toggleActive = () => {\n const {onToggle} = this.props;\n\n this.setState((prevState) => ({isActive: !prevState.isActive}));\n onToggle();\n };\n\n onItemClick = (item: FavouritesItem) => {\n const {onItemClick} = this.props;\n onItemClick(item);\n };\n\n renderDropDownMenu() {\n const {items} = this.props;\n\n const dropItems = map_(items, (item) => {\n return {\n text: item.path,\n action: () => this.onItemClick(item),\n };\n });\n if (items.length === 0) {\n dropItems.push({\n action: () => {},\n text: 'No favourites',\n });\n }\n\n const switcher = this.renderButton({\n view: 'normal',\n size: 'm',\n pin: 'brick-round',\n title: 'View favourites',\n children: <Icon awesome=\"angle-down\" />,\n });\n\n return (\n <DropdownMenu\n popupProps={{\n className: b('popup', {empty: items.length === 0}),\n }}\n items={dropItems}\n switcher={switcher}\n />\n );\n }\n\n renderHotkey() {\n return <Hotkey settings={[{keys: 'f', handler: this.toggleActive, scope: 'all'}]} />;\n }\n\n renderButton(buttonProps: ButtonProps & {disabled?: boolean}) {\n const {theme} = this.props;\n const themeProps = !theme ? {} : {view: 'outlined' as const};\n return <Button {...buttonProps} {...themeProps} />;\n }\n\n render() {\n const {toggleDisabled, className, theme} = this.props;\n const {isActive} = this.state;\n\n return (\n <div className={b(null, className)}>\n <div className={b('star-btn', {clear: theme === 'clear'})}>\n {this.renderButton({\n view: 'outlined-info',\n selected: isActive,\n size: 'm',\n pin: theme === 'clear' ? 'round-brick' : 'round-clear',\n title: 'Add to favourites [F]',\n onClick: this.toggleActive,\n disabled: toggleDisabled,\n children: <Icon awesome={isActive ? 'star-alt' : 'star'} />,\n })}\n </div>\n {this.renderDropDownMenu()}\n {this.renderHotkey()}\n </div>\n );\n }\n}\n","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","export const pathToFileName = (path: string) => {\n return path.replace(/\\/+/g, '_');\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 {YTErrorBlock} 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 <YTErrorBlock 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';\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 * as React from 'react';\nconst ArrowUpRightFromSquare = (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 1.5A.75.75 0 0 0 10 3h1.94L6.97 7.97a.75.75 0 0 0 1.06 1.06L13 4.06V6a.75.75 0 0 0 1.5 0V2.25a.75.75 0 0 0-.75-.75zM7.5 3.25a.75.75 0 0 0-.75-.75H4.5a3 3 0 0 0-3 3v6a3 3 0 0 0 3 3h6a3 3 0 0 0 3-3V9.25a.75.75 0 0 0-1.5 0v2.25a1.5 1.5 0 0 1-1.5 1.5h-6A1.5 1.5 0 0 1 3 11.5v-6A1.5 1.5 0 0 1 4.5 4h2.25a.75.75 0 0 0 .75-.75\", clipRule: \"evenodd\" })));\nexport default ArrowUpRightFromSquare;\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, {Component} from 'react';\nimport block from 'bem-cn-lite';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\n\nimport './CollapsibleSection.scss';\nimport Icon from '../../components/Icon/Icon';\n\nconst b = block('collapsible-section');\nconst headingCN = block('elements-heading');\n\ntype PropsStateLess = CollapsibleSectionProps & {\n onToggle: Required<CollapsibleSectionProps>['onToggle'];\n};\n\nexport class CollapsibleSectionStateLess extends Component<PropsStateLess> {\n static defaultProps = {\n size: 'm',\n collapsed: false,\n marginDirection: 'top',\n };\n\n toggle = () => {\n const {onToggle} = this.props;\n\n onToggle(!this.props.collapsed);\n };\n\n render() {\n const {\n name,\n children,\n size,\n overview,\n className,\n headingClassName,\n collapsed,\n marginDirection,\n togglerRightPadding,\n } = this.props;\n\n return (\n <ErrorBoundary>\n <div className={b({margin: marginDirection}, className)}>\n <div className={headingCN({size, overview: 'yes'}, headingClassName)}>\n <span\n className={headingCN(\n 'heading',\n {\n clickable: 'yes',\n },\n b('title'),\n )}\n onClick={this.toggle}\n >\n {name}\n <a>\n <Icon\n className={b('toggler', {'right-padding': togglerRightPadding})}\n awesome={collapsed ? 'angle-down' : 'angle-up'}\n />\n </a>\n </span>\n {overview}\n </div>\n\n {!collapsed && <ErrorBoundary>{children}</ErrorBoundary>}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nexport interface CollapsibleSectionProps {\n className?: string;\n headingClassName?: string;\n name: React.ReactNode;\n collapsed?: boolean;\n onToggle?: (value: boolean) => void;\n\n size?: 'unset' | 'xs' | 's' | 'ss' | 'ns' | 'n' | 'm' | 'l';\n children?: React.ReactNode;\n overview?: React.ReactNode;\n\n marginDirection?: 'top' | 'bottom';\n\n togglerRightPadding?: 'small';\n}\n\nexport default function CollapsibleSection(props: CollapsibleSectionProps) {\n const {onToggle} = props;\n const [collapsed, setCollapsed] = React.useState(props.collapsed);\n\n const onChange = React.useCallback(\n (value: boolean) => {\n setCollapsed(value);\n if (onToggle) {\n onToggle(value);\n }\n },\n [setCollapsed, onToggle],\n );\n\n return <CollapsibleSectionStateLess {...props} onToggle={onChange} collapsed={collapsed} />;\n}\n"],"names":["ROWS_PER_PAGE","props","_jsx","_objectSpread","xmlns","fill","viewBox","children","fillRule","d","clipRule","AlertContext","useAlertContext","context","Error","AlertAction","view","Button","Object","assign","undefined","bAlert","AlertContextProvider","layout","Provider","value","typeToIcon","danger","filled","width","height","outlined","info","CircleInfo","success","CircleCheck","warning","TriangleExclamation","utility","Thunderbolt","normal","addComponentKeysets","en","Alert","theme","message","className","corners","style","onClose","align","qa","Card","spacing","py","px","Flex","gap","alignItems","icon","Icon","direction","grow","justifyContent","title","Title","text","Array","isArray","actions","Actions","items","onClick","extraProps","i18n","I","data","Xmark","size","colorText","color","iconByTheme","Text","variant","minContent","wrap","map","handler","i","Action","fetchFromTabletErrorsApi","action","cluster","params","cancelToken","axios","post","concat","Set","_jsxs","stroke","opacity","strokeWidth","cx","cy","rx","ry","strokeLinecap","strokeDasharray","b","block","ColumnSelectorModal","_React$Component","_this","_classCallCheck","_len","arguments","length","args","_key","_callSuper","state","srcItems","makeItemsCopy","itemsOrder","_getItemsOrder","_handleCONFIRMButtonClick","onConfirm","_handleCANCELButtonClick","order","setState","_getOrderedItems","onCancel","onSourceChange","_ref","newItems","newItemsMap","reduce_","acc","name","unchanged","changed","forEach_","item","newItem","checked","keyColumn","push","preparedItems","calculateSrcItems","onDestinationChange","_ref2","_inherits","_createClass","key","prevProps","_this$props","this","map_","sort","a","indexOf","showDisabledItems","isHeadless","isFilterable","onChange","isSelectable","isSortable","showSelectedOnly","_ref3","description","ColumnSelector","NoContentImage","_this$props2","isVisible","entity","rest","_objectWithoutProperties","_excluded","_this$state","headingCN","selectorProps","_getSelectorProps","sortableSelectorProps","_getSortableSelectorProps","selectedItemsCount","disabled","left","renderColumnSelector","_this$props3","hammer","format","Modal","borderless","visible","confirmText","content","renderContent","contentClassName","React","defaultProps","connect","openAttributesModal","_ref$getPathProps","getPathProps","path","exactPath","attribute","attributes","_ref$withTooltip","withTooltip","_ref$tooltipProps","tooltipProps","placement","AttributesButton","pathProps","cn","Dropdown","_Component","popupVisible","anchor","toggle","prevState","open","close","button","trigger","actionProps","onMouseEnter","onMouseLeave","template","_this$props$template","renderer","templates","get","__default__","call","popup","directions","Popup","anchorRef","hasArrow","renderTemplate","ref","renderButton","renderPopup","Component","zIndexGroupLevel","prepareRoleListValue","roles","otherMembers","current","toAdd","toRemove","unrecognized","isUnrecognized","isRequested","isApproved","isDepriving","currentArr","prepareItemOfCurrent","otherArr","frozen","itemClassName","role","roleListValueToSubjectList","_toConsumableArray","manyListDataItemToSubjectList","manyListDataItem","filter_","removed","_ref4","type","extractChangedSubjects","added","filter","_ref5","_ref6","user","group","_ref7","_ref8","reShortName","makeRegexpFromSettings","uiSettings","reShortNameFromAddress","reTabletNodeShortName","reShortNameFromTabletNodeAddress","Host","_ref$address","address","prefix","copyBtnClassName","useText","asTabletNode","inlineMargins","host","re","_res$groups","res","exec","groups","shortname","suffix","Boolean","join","calcShortNameByRegExp","useSelector","getCluster","hidden","Tooltip","Link","url","routed","ClipboardButton","DialogError","YTErrorBlock","makeErrorFields","errors","compact_","error","index","extras","FORM_ERROR","makeFormSubmitError","validationErrors","_defineProperty","importYTDFDialog","YTDFDialog","withLazyLoading","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_context","prev","next","t0","sent","YTDialog","abrupt","stop","_React$useState","_React$useState2","_slicedToArray","mounted","setMounted","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","getHistogram","histogram","createGetQuartiles","createSelector","stat","quartiles","createGetPDF","pdf","createGetECDF","ecdf","steps","unshift","x","min","y","bucketNumber","bucketSize","HistogramChart","dataName","lineOnly","yagrData","xFormat","formatLib","Bytes","Number","_step","buckets","timeline","NaN","_iterator","_createForOfIteratorHelper","s","n","done","getX","getY","err","e","f","graphs","getSerieColor","step","getLineOnlyData","lineData","j","_buckets$i","bestX","itemX","calcBestY","Math","scale","renderOptions","getColumnData","libraryConfig","axes","values","_d","side","grid","show","y1","scales","max","tooltip","render","tooltipData","_first$rows","_first$rows2","_second$rows","_renderDefaultTooltip","_tooltipData$scales","first","second","columnValue","rows","originalValue","lineValue","colValue","colX0","colX1","lineX","lp","renderDefaultTooltip","digits","sources","YagrChartKit","v","right","ly","lx","Histogram","activeHistogram","handleHistogramChange","histogramItems","isDataGood","isDatailedLine","setDetailed","Select","onUpdate","options","keys_","Checkbox","q25","q50","q75","quartilesProps","PropTypes","pdfProps","valueMax","valueMin","ecdfProps","getQuartiles","getPDF","getECDF","getIsDataGood","pdfData","ecdfData","CHARTKIT_ERROR_CODE","NO_DATA","INVALID_DATA","UNKNOWN","UNKNOWN_PLUGIN","TOO_MANY_LINES","ChartKitError","constructor","originalError","code","super","isCustomError","stack","QueryWidgetLazy","Loader","centered","useQueryWidgetSidePanel","useSidePanel","useAppRumMeasureStart","useRumMeasureStart","subPage","isMediaTag","test","isImageTag","isVideoTag","i18nFactory","registerKeysets","bind","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","input","setInput","handleChangeExt","throttle_","handleChange","cancel","handleKeyDown","handleBlur","TextInput","mergeSettingStrategy","objValue","srcValue","currentPlugins","newPlugins","newSettingsPlugins","currentPlugin","newPluginIndex","findIndex","newPlugin","splice","settingsEventEmitter","events","on","event","off","eventId","id","dispatch","forEach","updateLang","lang","configure","setLang","settings","plugins","set","updates","filteredUpdates","entries","reduce","withSplit","_WithSplit","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","ICON_BY_TYPE","SortIcon","allowUnordered","withUndefined","nextSortOrderValue","label","ReadableField","awesome","face","Pagination","control","hotkeySettings","keys","hotkey","scope","hotkeyScope","hotkeyHandler","previous","last","pin","Hotkey","showInput","inputValue","renderComponent","renderInput","toaster","Toaster","LoadDataHandler","loaded","errorData","add","autoHiding","NO_VALUE","showErrorPopup","_this$props2$alwaysSh","alwaysShowError","SidePanelPortal","widgetOpened","setWidgetOpened","useDispatch","openWidget","splitScreen","mergeScreen","closeWidget","widgetContent","Secondary","Bold","SecondaryBold","Warning","WarningLight","NoWrap","Escaped","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","withRouter","_props$theme","match","computeStateQuery","FormattedText","FormattedTextOrLink","_ref$asLink","asLink","FormattedLink","FormattedId","_useState","useState","_useState2","hovered","setHovered","printColumnAsBytes","columnName","column","columns","printColumnAsNumber","withNaming","m","EditableAsText","withControls","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","editMode","setEditMode","_React$useState3","_React$useState4","useEffect","handleChangeMode","useCallback","isEdit","closeEditMode","startTextEdit","val","applyValue","closeAndResetValue","onApply","evt","controlSize","_Fragment","autoFocus","onMouseDown","EditButton","_ref$size","WarningIcon","hoverContent","DragHandle","sortableHandle","SortableItem","sortableElement","isDisabled","itemRenderer","onCheckBoxChange","active","selected","selectable","showAction","isDeletable","SortableList","sortableContainer","useStaticSize","mods","ReactList","toggleItem","withActualItems","changedItem","selectAllItems","visibleMap","getVisibleItemsMap","each_","deselectAllItems","_item$isDeletable","invertItems","visibleItems","_handleCheckBoxChange","currentTarget","getAttribute","_handleSortEnd","oldIndex","newIndex","getVisibleItems","fromIndex","toIndex","_items$splice","_handleDefaultSort","_ref9","aCaption","caption","bCaption","localeCompare","_toggleShownItems","_changeFilter","every","some","func","_this2","placeholder","hasClear","btnProps","renderSearchBox","buttonALLisDisabled","buttonNONEisDisabled","RegExp","escapeRegExp_","filterItemsByName","toSplit","filterItems","_partition_","partition_","_partition_2","keyItems","_this$getVisibleItems2","headless","empty","lockAxis","helperClass","helper","onSortEnd","useDragHandle","classNames","sortable","renderControls","renderList","itemsProps","isRequired","_ref0","_ref0$caption","renderText","cnDropdownMenu","DropdownMenuContext","moveBack","activeItemIndex","skip","newActiveItemIndex","moveForward","rootMenuPath","DropdownMenuNavigationContext","activeMenuPath","setActiveMenuPath","DropdownMenuNavigationContextProvider","contextValue","dropdownMenuSeparator","isSeparator","shouldSkipItemNavigation","stringifyNavigationPath","_a","DropdownMenuPopup","menuProps","popupProps","navigationAnchorRef","isSubmenu","activateParent","slice","handleMouseEnter","handleMouseLeave","handleSelect","activeItem","handleKeydown","stopPropagation","isSubmenuToggleActive","preventDefault","isNavigationActive","setActiveItemIndex","reset","resetNavigation","pageSize","processHomeKey","processEndKey","initialValue","onAnchorKeyDown","previousActiveItemIndex","addEventListener","removeEventListener","useListNavigation","Menu","isActive","isActiveParent","DropdownMenuItem","separator","closeMenu","isSubmenuOpen","useSubmenu","hasSubmenu","closeSubmenu","openSubmenu","subMenuItems","menuItemRef","useDirection","handleCloseMenu","requestAnimationFrame","handleMenuItemClick","_b","subMenuPlacement","iconEnd","ChevronLeft","ChevronRight","Item","toItemList","startIndex","updatedItems","addedGroup","groupItems","updatedItem","DropdownMenuExport","Ellipsis","onOpenToggle","hideOnScroll","switcher","renderSwitcher","switcherWrapperClassName","defaultSwitcherProps","defaultSwitcherClassName","onSwitcherClick","isPopupShown","togglePopup","closePopup","onChangeVisibility","setPopupShown","property","setProperty","initialState","isControlled","callback","nextValue","previousState","newState","useStateWithCallback","useConditionallyControlledState","isShown","usePopupVisibility","onScroll","handleScroll","target","contains","useScrollHandler","itemsList","handleSwitcherClick","handleSwitcherKeyDown","useActionHandlers","switcherProps","getOnlyFolders","suggestions","child","showErrorInModal","_getCorrectInnerError","ErrorMessage","innerErrors","correctErrorCodes","values_","NetworkCode","find_","some_","getCorrectInnerError","inner_errors","prepareErrorMessage","SHOW_ERROR","hideError","HIDE_ERROR","openEditingPopup","objectPath","multipleMode","closeEditingPopup","withScope","ResComponent","useHotkeysScope","PathEditorModal","_handleBlur","handleFocus","onFocus","_handleFocus","newPath","_handleChange","handleApply","_handleApply","setPath","editingPath","inProcess","showError","errorMessage","PathEditor","customFilter","defaultPath","showErrors","modalTitle","onConfirmButtonClick","onCancelButtonClick","isConfirmDisabled","loading","compose","SET_PATH","requests","CancelHelper","copyObjectIntoDirectory","from","to","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","copyObject","updateView","_this$props4","mapDispatchToProps","copyingPath","onSuccess","COPY_OBJECT","REQUEST","Promise","resolve","startTransaction","timeout","copyRequests","node","command","transaction_id","titleUnquoted","wrapBatchPromise","executeBatchWithRetries","YTApiId","navigationCopy","errorTitle","saveCancelSourceCb","commitTransaction","abortTransaction","reject","copyObjects","SUCCESS","CANCELLED","FAILURE","removeAllRequests","_navigation$modals$co","navigation","modals","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","$value","$attributes","encode_utf8","rumLogError","resolveEntityPath","JSON","parse","result","_items$","getPath","_navigation$modals$mo","getNextObjectName","initialPath","INITIAL_STEP","checkPathExists","isExists","findCorrectObjectName","inTrash","startsWith","restoreObject","restorePath","getState","RESTORE_OBJECT","EXIST","correctRestorePath","OPEN_RESTORE_POPUP","INCORRECT_PATH","openAction","errorAction","RestoreObjectModal","restoredPath","CLOSE_RESTORE_POPUP","restoring","_navigation$modals$re","AclTabParams","IdmObjectType","PATH","rumType","RumMeasureTypes","NAVIGATION_TAB_ACL","NavigationAcl","ACCESS_CONTROL_OBJECT","NAVIGATION_TAB_ACL_ACCESS","AccessContentAcl","createACLTabComponent","idmKind","mapStateToProps","getAttributes","getRawPath","isPrincipalACLtab","mode","loadState","getAclLoadState","makeMapStateToProps","_AclTabParams$idmKind","startDeps","allowStart","isFinalLoadingStatus","useRumMeasureStop","stopDeps","allowStop","makeComponentWithRum","AccessAclTab","makeTableRumId","measureId","isDynamic","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","apply","loadTableRows","transformResponse","parsedData","rawResponse","headers","getIsStrict","loadPromise","keyColumns","getKeyColumns","_getNextOffset","offset","descending","orderBySupported","offsetColumns","limit","isEmpty_","isSorted","ypath","getValue","preparedOffset","replace","part","trim","ranges","lower_limit","tablet_index","row_index","upper_limit","allColumns","Columns","getSchemaColumns","dynTableCheckPerm","ytApiV3Id","checkPermission","permission","permissions","keyColumnsNames","keyBy_","_reduce_","availableColumns","omittedColumns","has_","deniedKeyColumns","decode","query","Query","prepareQuery","dynTableSelectRowsPreload","selectRows","parseErrorFromResponse","getParsedError","_prepareRows","prepareRows","yqlTypes","getVisibleColumns","getOmittedColumns","getDeniedKeyColumns","key_columns","dynTableSelectRows","readDynamicTable","loadDynamicTable","_x","_x2","_x3","_x4","_x5","loadStaticTable","schemaColumns","getTableColumnNamesFromSchema","injectColumnsFromSchema","updateTableData","_getNextOffset2","GET_TABLE_DATA","UPDATE","storedColumns","preparedColumns","prepareColumns","preparedOmittedColumns","prepareOmittedColumns","setColumns","newOffsetValue","previousRows","getRows","addRowCount","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","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","onDrop","dataTransfer","lastDotIndex","lastIndexOf","extStr","substr","find","fileError","checkFile","onDragEnter","onDragLeave","renderConfirm","renderClose","handleClose","onUploadProgress","onConfirmImpl","setOverwriteConfirmationVisible","proxy","externalProxy","uploadConfig","onStartUpload","txId","writeTable","uploadTableUseLocalmode","location","input_format","getWriteAttributes","removeAllAndSave","onStopUpload","onXlsxUpload","_this$state2","dropable","renderFileContent","renderSettings","renderProgress","_this$typeSpecificFie","typeSpecificFields","fields","initials","onAdd","modal","initialValues","hideFilter","_this3","_this$state3","UIFactory","docsUrls","helpLink","docsUrl","HelpLink","total","totalStr","loadedStr","Progress","uploadTableMaxSize","schema","withColumns","isCancel","_error$response","response","_this4","_this$state4","readyUrl","uploadUrl","_this4$state","start_row","URLSearchParams","String","header","types","formData","FormData","withCredentials","withXSRFToken","xsrfCookieName","getXsrfCookieName","xsrfHeaderName","generateNextToken","_this5","handleShow","footerContent","renderFooterContent","renderCustomConfirm","renderCustomCancel","renderOverwriteConfirmationDialog","connector","getSchema","_getCurrentClusterCon","getCurrentClusterConfig","withVisible","DYN_TABLES_ALLOWED_STATES_OF_ACTION","mount","unmounted","unmount","freeze","unfreeze","DYN_TABLES_ALLOWED_ACTIONS_BY_STATE","mixed","showDynTablesStateModalByPaths","paths","DYN_TABLES_STATE_MODAL_PARTIAL","showModal","showDynTablesStateModalByNodes","selectedNodes","allowedFrom","tabletState","dynTablesChangeState","wrapApiPromiseByToaster","navigationDynTableState","toasterName","successContent","batchType","skipSuccessToast","waitWhileThereIsTransient","capitalize_","delayed","navigationGetTabletState","results","toRecheck","output","DynamicActions","Fragment","StaticActions","DownloadManager","table","mountUnmountTable","getMetrics","countEvent","ytApiV3","console","RemountAlert","attributesWithTypes","getAttributesWithTypes","pending","setPending","handleOnRemount","ytApiV4","remountTable","_ypath$getValues","getValues","_ypath$getValues2","remountNeededTabletCount","tabletCount","showDiffInfo","diffInfo","mediumList","tableType","getTableType","remountNeeded","onEditEnableReplicatedTableTracker","tabletErrorCount","getTabletErrorsBackgroundCount","useMemo","makeMetaItems","CollapsibleSection","UI_COLLAPSIBLE_SIZE","MetaTable","ReplicatedTableSettingsButton","setVisible","toggleVisibility","ReplicatedTableSettingsDialog","setError","form","_form$getState$values","auto_replica_tracker","headerProps","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","replicatedTableTracker","ClickableAttributesButton","modeState","updateEnableReplicatedTableTracker","loadReplicas","abortAndReset","tableMode","enable_replicated_table_tracker","css","striped","itemHeight","isLoading","tableItems","sets","renderName","renderField","renderErrors","renderAsReadableField","renderState","automatic_mode_switch","renderAutomaticModeSwitch","renderAsTimeDuration","computeKey","hasActions","CypressNodeTypes","CHAOS_REPLICATED_TABLE","TableMeta","StickyContainer","stickyTopClassName","Toolbar","itemsToWrap","TableActions","ElementsTable","tableSettings","replicaLink","Page","NAVIGATION","StatusBulb","enableTableTracker","flag","ReplicatedTableConnected","_getReplicatedTableDa","getReplicatedTableData","allowEnableReplicatedTracker","_ypath$getValues3","_ypath$getValues4","ReplicatedTableWithRum","useDisableMaxContentWidth","NAVIGATION_CONTENT_REPLICATED_TABLE","LinkConnected","targetPath","broken","main","getDownloadPath","cypressPath","makeDirectDownloadPath","encodeURIComponent","getIsEmpty","getIsTooBig","MAX_FILE_SIZE","getNavigationFileLoadingStatus","NavigationExtraActions","getType","getNavigationPathAttributes","renderNavigationExtraActions","messageBlock","codeBlock","renderMeta","compression","erasureReplication","downloadPath","href","renderTooBigInfo","isTooBig","loadFile","LOAD_FILE","readFile","FileConnected","_state$navigation$con","isEmpty","getEffectiveMode","initialLoading","rowKey","row","DataTableWrapper","useRawStrings","getSettingTableDisplayRawStrings","schemaByName","getSchemaByName","ysonSettings","isFullScreen","onShowPreview","rowIndex","tag","showCellPreviewModal","dtColumns","updating","setTimeout","window","dispatchEvent","Event","fullscreen","DataTable","SharePresetButton","handleClick","visibleColumns","columnsEncoded","request","method","errorContent","saveColumnPreset","hash","openInNewTab","SavePresetButton","getAllColumns","ColumnsPresetButton","getColumnsPresetHash","actionStyle","marginRight","openColumnSelectorModal","OPEN_COLUMN_SELECTOR_MODAL","isStrict","getSchemaStrict","allowPickColumns","showAllColumns","allowUserColumnPresets","getConfigData","methodMap","nativeAPI","unprefixedMethods","returnValue","methodList","exitFullscreenMethod","eventNameMap","change","fullscreenchange","fullscreenerror","screenfull","element","documentElement","onFullScreenEntered","returnPromise","requestFullscreen","catch","exit","isFullscreen","onFullScreenExit","exitFullscreen","onchange","onerror","eventName","raw","defineProperties","fullscreenElement","enumerable","isEnabled","fullscreenEnabled","FullScreen","_ref$enabled","enabled","_ref$onChange","container","useRef","isFullScreenAllowed","changePageSize","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","moveOffset","prevOffsetValue","getOffsetValue","MOVE_OFFSET","openOffsetSelectorModal","OPEN_OFFSET_SELECTOR_MODAL","onEndEditing","rowCount","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","YQLKitButton","_UIFactory$yqlWidgetS","yqlWidgetSetup","getNavigationSqlService","getSettingsData","isDeveloper","isAdmin","isQtKitEnabled","isYqlKitEnabled","hasYqlWidget","useNavigationSidePanelMode","panelMode","sidePanelMode","setPanelMode","setNavigationSidePanelMode","OpenQueryButtonsContent","_useNavigationSidePan","_useSidePanel","renderWidget","createQueryFromTablePath","QueryEngine","YQL","OpenQueryButtons","autoOpen","_useNavigationSidePan2","onOpenYqlKit","_useSelector","allowQtAutoOpen","createNewQueryUrl","opened","onOpen","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","attrs","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","account","moment","unix","showTableEraseModal","TABLE_ERASE_MODAL_PARTIAL","runTableErase","combine_chunks","range","isNaN","erase","table_path","Node","iconType","parsedPath","parsedPathError","pathState","recursiveResourceUsage","dataWeight","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","floor","getNodesData","nodeData","nodeValue","newData","GENERIC_ERROR_MESSAGE","details","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","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","getSortedNodesNames","getNodesInfo","sumNodesType","aggregation","countValues","keyValue","_keyValue","count","getMapNodeResourcesLoading","resourcesLoading","DATE_REGEXP","shouldApplyCustomSort","USE_SMART_SORT","field","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","has","showTooltip","toUpperCase","btn","linkUrl","isUnmounted","allowPagination","ErrorBoundary","Paginator","OffsetInput","ColumnSelectorButton","SettingsButton","JupyterButton","FullScreenButton","OffsetSelectorModal","isTableSorted","closeOffsetSelectorModal","minKeyValue","offsetValues","initialItems","updateItemValue","prevItems","_handleInputChange","renderItems","isOffsetSelectorOpen","itemProps","CLOSE_OFFSET_SELECTOR_MODAL","getCurrentOffsetValues","getIsTableSorted","TableColumnsPresetNotice","getColumnsPresetColumns","getColumnsPresetError","log","collapsed","Yson","Table","columnsProps","accessor","renderColumnSelectorModal","srcColumns","isColumnSelectorOpen","renderTable","visibleRows","stickyTop","isSplit","HEADER_HEIGHT","OVERVIEW_HEIGHT","stickyHead","syncHeadOnResize","stripedRows","displayIndices","emptyDataMessage","getTableData","isYqlV3Types","handleScreenChanged","toolbar","TableOverview","WithStickyToolbar","hideToolbarShadow","toolbarClassName","sticky","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","makeTTLItems","forceLinksAppearance","TTLLabel","getNoSuggestionsMsg","makeLink","inline","link","TableType","AGGREGATE_CHOICES","SELECT_EMPTY_VALUE","AggrTypes","TABLE_SETTINGS","COLUMNS","CreateTableModalContentImpl","nextId","STATIC","tableName","replicasCount","getNewTableReplicasCount","uniqueKeys","activeTabId","createNewColumn","selectedColumnTab","_primitiveTypes$","duplicate","userOptions","primitiveTypes","newTab","names","tmp","genNewName","_values$TABLE_SETTING","compCodec","compressionCodec","storageOption","erasureCodec","optimize_for","columnsRaw","reorderColumns","QUEUE","DYNAMIC","isEqual_","compression_codec","StorageOptions","REPLICATION","replication_factor","erasure_codec","schemaAttributes","unique_keys","aggregate","dataType","optional","lock","ascending","type_v3","sort_order","type_name","createTable","validateTableName","parentDirectory","closeCreateTableModal","lastValidationResult","validateForm","set_","nameCounters","columnData","nameIndexes","validateColumnData","indices","validateTableSettings","formValidator","indexById","sortBy_","ColumnDataTypes","ANY","YSON","isOrderedColumn","isSortedColumn","isDescendingColumn","aggr","SUM","MIN","MAX","INT64","UINT64","DOUBLE","ordered","validateAggregate","validateColumnDataType","validateColumnLock","str","round","ASCENDING","DESCENDING","isAscendingColumn","hasOrderedColumn","colData","hasUnorderedColumn","nameError","replicasCountError","validateReplicasCount","_primitiveTypes$2","_field$visibilityCond","when","compressionCodecs","erasureCodecs","groupSuggestions","virtualized","pristineSubmittable","isApplyDisabled","validate","getFormValidator","onActiveTabChange","tab","ERASURE","visibilityCondition","onCreateTab","getTitle","isRemovable","_item","_onCreate","onRemove","required","hideClear","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","nameAlreadyUsed","parentDir","EXCEL_BASE_URL","_","alreadyUsed","checkNameAlreadyExist","validationState","UPLOAD_CONFIG","existingNodes","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","_this$props$error","MapNodeToolbarConnected","MapNodesTable","ERROR","renderError","renderView","CreateTableModal","showACOCreateButton","filterState","getMediumList","showCreateTableModal","isCreateTableModalVisible","TYPE","CONTENT_MODE_OPTIONS","RESOURCES","setFilter","SET_TEXT_FILTER","setContentMode","SET_CONTENT_MODE","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","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","DocumentExtraTools","queryAutoOpen","isYqlView","_ref3$document","folding","extraTools","onSave","handleSaveDocument","jsonEditor","fullWidth","initialSplitSize","initialShowPreview","unipikaSettings","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","owner","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","access_control_object","tablet_cell","chaos_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$tab0","write_row_count_rate","getStatusError","statusError","getStatusLoading","statusLoading","getStatusLoaded","statusLoaded","getQueueStatusDataAlerts","_state$navigation$tab1","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","toString","getPartitionsError","partitionsError","getPartitionsLoading","partitionsLoading","getPartitionsLoaded","partitionsLoaded","getConsumers","_state$navigation$tab10","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","QueueError","modificationTime","valueOf","abs","Date","now","getErrorWithCode","Info","TargetQueue","clusterQueueUrl","firstColon","genNavigationUrl","ConsumerQueueSelector","topMargin","_useSelector2","_registrations$0$queu","_registrations$","pref","findCommonPathParent","Prefix","marginBottom","backgroundColor","_counters$show","counters","formatter","hummerFormat","counterNames","_counters$key","BarChart","_counters$key2","Meta","partitionCount","readDataWeightRate","readRowCountRate","vital","SubjectCard","isNull","Label","Multimeter","BytesPerSecond","RowsPerSecond","tabItems","CONSUMER_MODE","METRICS","PARTITIONS","changeConsumerMode","Extras","toggleRegisterDialog","register","_register","api","_response$results$","queuePath","queueCluster","consumerPath","consumerCluster","_response$results$2","queue_path","consumer_path","skipErrorToast","useRegisterMutation","rootApi","injectEndpoints","endpoints","build","mutation","queryFn","makeClusterSelectOptionsSameEnv","_clusters$map","YT","clusters","environment","RegisterConsumerDialog","getRegisterDialogVisibility","_useRegisterMutation","_useRegisterMutation2","update","_useRegisterMutation3","clusterControlOptions","filterable","_form$getState","newValues","unwrap","hasValidationErrors","bool","getter","sortAccessor","datetime","HoverContent","_error$message","multimeter","valueFormat","number","readRateName","CONSUMER_RATE_MODE","ROWS","DATA_WEIGHT","readRateGetter","rateMode","timeWindow","loadConsumerPartitions","CONSUMER_PARTITIONS_LOAD_REQUEST","queueConsumerPartitions","CONSUMER_PARTITIONS_LOAD_SUCCESS","CONSUMER_PARTITIONS_LOAD_FAILURE","DataTableYT","useThemeYT","NoContent","hint","rateItems","timeItems","CompactColumnSelector","changeConsumerPartitionIndex","changeConsumerRateMode","changeConsumerTimeWindow","changeConsumerPartitionsColumns","views","ExtraControls","View","MetricsComponent","getComponentForConsumerMetrics","PartitionsExtraControls","Partitions","emptyView","loadConsumerStatus","CONSUMER_STATUS_LOAD_REQUEST","queueConsumerStatus","CONSUMER_STATUS_LOAD_SUCCESS","state2","CONSUMER_STATUS_LOAD_FAILURE","_useViewByMode","ConsumerToolbar","growable","Alerts","_ref$marginDirection","marginDirection","alert","YTAlertBlock","writeDataWeightRate","writeRowCountRate","changeQueueRateMode","QUEUE_CHANGE_PERSISTED_STATE","changeQueueTimeWindow","QUEUE_MODE","CONSUMERS","EXPORTS","changeQueueMode","QueueMetrics","getComonentForQueueMetrics","createConsumer","_createConsumer","registerConsumer","_registerConsumer","_response$results$3","_response$results$4","unregisterConsumer","_x6","_unregisterConsumer","_response$results$5","_response$results$6","makeGetExportsParams","queueExportConfig","deleteExtraAttributes","_deleteExtraAttributes","configs","prevConfig","transactionId","remove","export_name","export_directory","exportsMutation","_exportsMutation","_ytApi$endpoints$fetc","newConfig","newConfigs","ytApi","fetchBatch","select","originating_queue_id","t1","queueApi","export","invalidatesTags","useExportMutation","useCreateConsumerMutation","useRegisterConsumerMutation","useUnregisterConsumerMutation","validateCreateConsumerPath","_validateCreateConsumerPath","_res$","_path$split$at","_res$2","parentPath","at","_typeof","CreateConsumerDialog","getCreateDialogVisibility","_useCreateConsumerMut","_useCreateConsumerMut2","_useCreateConsumerMut3","validator","toggleCreateDialog","UnregisterConsumerDialog","getUnregisterDialogVisibility","getConsumerPath","_useUnregisterConsume","_useUnregisterConsume2","_useUnregisterConsume3","closeUnregisterDialog","_useRegisterConsumerM","_useRegisterConsumerM2","_useRegisterConsumerM3","preparedValues","QUEUE_RATE_MODE","_consumer$split","_consumer$split2","UnregisterConsumer","openUnregisterDialog","changeQueueConsumerName","changeQueueOwner","writeRateName","writeRateGetter","_x$meta","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","prepareUpdateValues","config","_restConfig$export_tt","_restConfig$export_pe","restConfig","output_table_name_pattern","use_upper_bound_for_table_names","export_ttl","export_period","_validateExportDirectory","period","whiteSpace","ExportsEditDialog","useFetchBatchQuery","_useExportMutation","_useExportMutation2","_useExportMutation2$","setInitialValues","rawValues","prepareInitialValues","configsValues","ExportsEdit","editDialogVisible","setEditDialogVisible","_useState3","_useState4","deleteDialogVisible","setDeleteDialogVisible","toggleEditDialogVisibility","toggleDeleteDialogVisibility","Value","makeNavigationLink","Time","formatTimeDuration","ConsumersExtraControls","consumersLoading","consumersLoaded","borderLeft","_useExports","_useFetchBatchQuery","isFetching","obj","newObj","useExports","loadQueueStatus","QUEUE_STATUS_LOAD_REQUEST","queueStatus","QUEUE_STATUS_LOAD_SUCCESS","QUEUE_STATUS_LOAD_FAILURE","QueueToolbar","getLocksModeFilter","modeFilter","getLocksLoadStatus","getLocksFiltered","Locks","renderTransaction","operationId","operation_id","cellTag","parseInt","clusterConfig","_clusterConfig$primar","primaryMaster","additional","findClusterConfigByOperationId","clusterId","operationIdUrl","page","Linkify","TemplateTime","time","onModeFilter","setLocksModeFilter","getLocks","renderIndex","renderLock","MAX_TRANSACTIONS_REQUESTS","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","ellipsis","footer","ExternalDescription","_data$glossaryEntity","hasWarning","markdown","glossaryEntity","typeMismatchElement","Popover","elementsBlock","COLUMNS_TO_HIDE","Schema","externalSchemaUrl","externalSchema","externalSchemaError","loadExternalSchemaData","SchemaDataType","renderExternalColumn","_this$props$computedC","computedColumns","preparedSet","col","omit_","_columns$column","externalSchemaDescriptionSetup","virtualType","_loadExternalSchemaData","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","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","k","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","asNumber","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","$type","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","pathToFileName","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","ceil","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","PathItem","AccessLogTable","fieldSelector","instant","_ref4$row","original_path","ArrowRightIcon","PathTag","transaction_info","headerTitle","AccountsLogTransactionInfo","pageCount","ColumnHeader","pageIndex","_ref1","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","AccessLogOpenQtButton","setLoading","newParams","_yield$wrapApiPromise","query_id","finish","AbbrSqlIcon","AccessLogFilters","AccessLogPagination","AccessLogTimeline","AccessLogFieldselector","AccessLogMetadata","AccessLogDistictBy","AccessLogPathRegexp","shrinkable","wrapperClassName","AccessLogUserRegexp","AccessLogUserTypeFilter","AccessLogScopeFilter","AccessLogMethod","AccessLogApplyFilters","hasChanges","SimplePagination","METADATA_ITEMS","valueStr","vals","DISTINCT_BY_ITEMS","handleUpdate","EMPTY_OBJECT","maxVisibleValues","TIMELINE_SHOURCUTS","updateTime","updateShortcut","shortcutValue","_ref$from","_ref$to","TimelinePicker","onShortcut","topShortcuts","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","timestamp","useTableColumnsAndData","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT","TabletErrorsRequest","TabletErrorsRequestToolbar","_useTabletErrorFromAp","timeRange","_calcFromTo","calcFromTo","tabletErrorsByPathActions","table_id","start_timestamp","end_timestamp","methods","prevDataParams","prevData","fixed_end_timestamp","count_limit","onError","useTabletErrorFromApiLoad","_useTabletErrorFromAp2","allMethods","YTTimeline","hasRuler","maxVisibleValuesTextLength","TabletErrors","viewMode","getTabletErrorsViewMode","backgroundErrorCount","allowTabletErrorsAPI","TabletErrorsBackground","updateTabletErrorsViewMode","_dispatch","getUserAttributes","userAttributes","getUserAttributesLoadInfo","UserAttributes","userAttributesActions","navigationUserAttributes","UserAttributesWithRum","NAVIGATION_TAB_USER_ATTRIBUTES","TableMountConfig","getNavigationTableMountConfig","getNavigationMountConfigYsonSettings","Flow","supportedAttributeTypes","acl","ACL","user_attributes","Tab","ACCESS_LOG","AUTO","CONSUMER","Consumer","MOUNT_CONFIG","Queue","FLOW","getNavigationExtraTabs","component","getSupportedAttributeTypes","checkContentIsSupported","CONTENT","getComponentByContentType","getComponentByMode","noAccess","strokeLinejoin","_WithKeyboardNavigation","ElementsTableBase","WithKeyboardNavigation","_args","hoverSelectedIndex","selectedIndex","wrapHotkeyHandler","_len2","_key2","selectIndex","maxIndex","selectNext","selectPrev","handleMouseMove","handleItemHover","handleItemSelect","elem","querySelector","windowHeight","clientHeight","bounding","getBoundingClientRect","bottomCoordinate","topCoordinate","scrollIntoView","scrollBy","handleItemKeyboardClick","hotkeys","onItemHover","onMouseMove","onItemSelect","renderMapNodesTableIcon","_ypath$getAttributes2","_ypath$getAttributes3","renderNodeIcon","isTrashNode","isLinkToTrashNode","sorted","treat_as_queue_consumer","QueueConsumerIcon","treat_as_queue_producer","QueueProducerIcon","_index","_evt$target","_evt$target$contains","classList","onChooserClick","hideOopsMsg","batch","setMode","onSpaceHotkey","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","AccountLink","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","diskSpace","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","deleteCurrentObject","currentPath","realPathDecoded","decodeEscapedAbsPath","_getState3","_navigation$modals$de3","navigationDelete","permanentlyDeleteObjects","setAttributesRequests","navigationMoveToTrashRestorePath","navigationMoveToTrash","moveObjectsIntoTrash","responses","reverse","TOGGLE_PERMANENTLY_DELETE","isContentTab","NavigationDescription","NavigationPermissionsNotice","isWriteable","getNavigationIsWritable","isAccountUsable","getNavigationIsAccountUsable","checkPermissionsError","getNavigationCheckPermissionsError","getNavigationPathAccount","accountAclLink","ACCOUNTS","AccountsTab","genAccountsAclLink","AttributesEditorLoaded","singleMode","getMediumListNoCache","storeError","stateError","setErr","currentTab","setCurrentTab","hasMapNodes","hasStaticTables","hasDynamicTables","hasTables","hasDynTableOrMapNode","pathsValues","annotationInitial","general","primary_medium","expiration_time","expiration_timeout","storage","compressionCodecValueFromString","normalizeErasureCodec","_storageOption","storageOptionFromErasureCodec","annotation","annotationPath","handleAdd","dataDiff","generalAttributes","storageAttributes","compressionCodecValueToString","erasureCodecFromStorageOption","invalidateYTAnnotation","forEachStaticTable","mergeNoticeAndError","annotationTab","valuePath","inMemoryModeField","InMemoryMode","NONE","COMPRESSED","UNCOMPRESSED","optimizeForField","footerProps","CreateExternalDescriptionButton","_UIFactory$externalAn","externalDescription","useExternalDescriptionQuery","externalAnnotationLink","externalAnnotationSetup","externalServiceName","ArrowUpRightFromSquare","AttributesEditor","validateStorage","validateReplicationFactor","getRemoteCopyModalVisible","remoteCopyModal","getRemoteCopyModalPaths","makeCompressionCodecFinder","findCompressionCodec","RemoteCopyModal","_pathsValues$","_response","calculateValueOnPoolsLoaded","loadedPoolNames","schema_inference_mode","override","excludeClusters","allowEphemeral","getNavigationTableEraseModalVisible","tableEraseModal","getNavigationTableEraseModalPath","TableEraseModal","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","getCreateACOModalState","createACOModal","CreateACOModal","Navigation","onTabChange","ORIGINATING_QUEUE","onEditButtonClick","trackVisit","updateTitleWithPath","onTransactionChange","updateTitle","tabSize","Tabs","underline","_this$props6$type","ContentViewer","_this$props8$error","NavigationError","_this$props9","hasError","renderEditButton","renderTabs","CellPreviewModal","NavigationConnected","isFinalState","isNavigationFinalLoadState","isIdmSupported","getIdmSupport","UI_TAB_SIZE","getTabs","NavigationWithRumMemo","NavigationWithMesure","NAVIGATION_PRELOAD","NavigationWithRum","Editor","setScope","cancelOnBlur","NavigationTopRowContent","getNavigationDefaultPath","RowWithName","urlParams","NavigationFavourites","EditableNavigationBreadcrumbs","NavigationTools","favourites","getFavouritePaths","isInFavourites","isCurrentPathInFavourites","handleToggle","navigationToggleFavourite","handleItemClick","Favourites","NavigationPathToClipboard","onCopyToClipboard","NavigationTargetPathButton","decodedTargetPath","toggleEditMode","NavigationPathEditor","hideEditor","NavigationBreadcrumbs","onEdit","actualPath","getActualPath","_event$target","bcItems","getNavigationBreadcrumbs","getMode","history","useHistory","isLastItem","makeRoutedURL","pathname","navmode","BreadcrumbsItem","Breadcrumbs","navigate","showRoot","RefreshButton","RestoreButton","handleClearTransaction","clearTransaction","handleEdit","setTransaction","getNavigationRestorePath","handleRestore","MenuGroup","labelId","useUniqId","u","MenuItem","iconStart","rel","handleClickCapture","publish","componentId","domEvent","onClickCapture","tabIndex","interactive","Group","restProps","isTypeSelection","isTypeContainer","isClickable","defaultTheme","defaultView","Box","clickable","toggleActive","dropItems","buttonProps","themeProps","toggleDisabled","clear","renderDropDownMenu","renderHotkey","itemType","getRandomCKId","chars","random","randomString","selectCellPreviewVisible","cellPreviewModal","selectCellPreviewLoading","selectCellPreviewData","selectCellPreviewYtCliDownloadCommand","ytCliDownloadCommand","selectCellPreviewNoticeText","noticeText","selectErrorPreviewCellPath","getPreviewCellYsonSettings","SimpleModal","closeCellPreviewAndCancelRequest","PreviewContent","$tag","src","alt","dynamicRenderScrollParentGetter","customLayout","typedMemo","resetError","getDerivedStateFromError","componentDidCatch","componentDidUpdate","getErrorMessage","renderPluginLoader","pluginLoader","ChartKitComponent","widgetRef","instanceRef","propsId","isMobile","ckId","plugin","iteratedPlugin","ChartComponent","reflow","fallback","mobile","YagrPlugin","COLORS","serieIndex","_ref$view","CollapsibleSectionStateLess","overview","headingClassName","togglerRightPadding","margin","setCollapsed"],"sourceRoot":""}
|