@ytsaurus/ui 1.64.0 → 1.65.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.
Files changed (64) hide show
  1. package/README.md +7 -0
  2. package/dist/public/build/assets-manifest.json +37 -37
  3. package/dist/public/build/css/{577.b41224cd.chunk.css → 577.f8556dcc.chunk.css} +2 -2
  4. package/dist/public/build/css/577.f8556dcc.chunk.css.map +1 -0
  5. package/dist/public/build/css/{cluster-menu.1242e46d.chunk.css → cluster-menu.d8cafef3.chunk.css} +2 -2
  6. package/dist/public/build/css/cluster-menu.d8cafef3.chunk.css.map +1 -0
  7. package/dist/public/build/css/cluster-page-wrapper.4610796b.chunk.css +2 -0
  8. package/dist/public/build/css/cluster-page-wrapper.4610796b.chunk.css.map +1 -0
  9. package/dist/public/build/css/main.fb5dcfa3.css +10 -0
  10. package/dist/public/build/css/{main.b2af1626.css.map → main.fb5dcfa3.css.map} +1 -1
  11. package/dist/public/build/js/2081.b642c3c2.chunk.js +2 -0
  12. package/dist/public/build/js/{2081.56ca6548.chunk.js.map → 2081.b642c3c2.chunk.js.map} +1 -1
  13. package/dist/public/build/js/4016.37d0a2f0.chunk.js +3 -0
  14. package/dist/public/build/js/4016.37d0a2f0.chunk.js.map +1 -0
  15. package/dist/public/build/js/{6729.91ef11dc.chunk.js → 6729.6403cc56.chunk.js} +2 -2
  16. package/dist/public/build/js/6729.6403cc56.chunk.js.map +1 -0
  17. package/dist/public/build/js/{7077.7dab612c.chunk.js → 7077.fb18710a.chunk.js} +2 -2
  18. package/dist/public/build/js/7077.fb18710a.chunk.js.map +1 -0
  19. package/dist/public/build/js/acl.19d28cd7.chunk.js +2 -0
  20. package/dist/public/build/js/acl.19d28cd7.chunk.js.map +1 -0
  21. package/dist/public/build/js/{cluster-page-wrapper.eddde18f.chunk.js → cluster-page-wrapper.697b0741.chunk.js} +2 -2
  22. package/dist/public/build/js/cluster-page-wrapper.697b0741.chunk.js.map +1 -0
  23. package/dist/public/build/js/job.bddddc9e.chunk.js +2 -0
  24. package/dist/public/build/js/job.bddddc9e.chunk.js.map +1 -0
  25. package/dist/public/build/js/main.5d8871a8.js +3 -0
  26. package/dist/public/build/js/main.5d8871a8.js.map +1 -0
  27. package/dist/public/build/js/navigation-flow.c43f2927.chunk.js +2 -0
  28. package/dist/public/build/js/navigation-flow.c43f2927.chunk.js.map +1 -0
  29. package/dist/public/build/js/navigation.e4272357.chunk.js +2 -0
  30. package/dist/public/build/js/navigation.e4272357.chunk.js.map +1 -0
  31. package/dist/public/build/js/{runtime.7752c183.js → runtime.8fed68b1.js} +2 -2
  32. package/dist/public/build/js/{runtime.7752c183.js.map → runtime.8fed68b1.js.map} +1 -1
  33. package/dist/public/build/js/system.92b7afc7.chunk.js +2 -0
  34. package/dist/public/build/js/system.92b7afc7.chunk.js.map +1 -0
  35. package/dist/public/build/manifest.json +32 -32
  36. package/dist/public/favicon-dorn-yellow.png +0 -0
  37. package/dist/public/favicon-rubber.png +0 -0
  38. package/dist/server/configs/e2e/local.js +4 -0
  39. package/package.json +2 -2
  40. package/dist/public/build/css/577.b41224cd.chunk.css.map +0 -1
  41. package/dist/public/build/css/cluster-menu.1242e46d.chunk.css.map +0 -1
  42. package/dist/public/build/css/cluster-page-wrapper.0b6a786f.chunk.css +0 -2
  43. package/dist/public/build/css/cluster-page-wrapper.0b6a786f.chunk.css.map +0 -1
  44. package/dist/public/build/css/main.b2af1626.css +0 -10
  45. package/dist/public/build/js/2081.56ca6548.chunk.js +0 -2
  46. package/dist/public/build/js/4016.03291f63.chunk.js +0 -3
  47. package/dist/public/build/js/4016.03291f63.chunk.js.map +0 -1
  48. package/dist/public/build/js/6729.91ef11dc.chunk.js.map +0 -1
  49. package/dist/public/build/js/7077.7dab612c.chunk.js.map +0 -1
  50. package/dist/public/build/js/acl.cd1fe761.chunk.js +0 -2
  51. package/dist/public/build/js/acl.cd1fe761.chunk.js.map +0 -1
  52. package/dist/public/build/js/cluster-page-wrapper.eddde18f.chunk.js.map +0 -1
  53. package/dist/public/build/js/job.31c91355.chunk.js +0 -2
  54. package/dist/public/build/js/job.31c91355.chunk.js.map +0 -1
  55. package/dist/public/build/js/main.693c4cb1.js +0 -3
  56. package/dist/public/build/js/main.693c4cb1.js.map +0 -1
  57. package/dist/public/build/js/navigation-flow.f7bcba21.chunk.js +0 -2
  58. package/dist/public/build/js/navigation-flow.f7bcba21.chunk.js.map +0 -1
  59. package/dist/public/build/js/navigation.c8c7b9cc.chunk.js +0 -2
  60. package/dist/public/build/js/navigation.c8c7b9cc.chunk.js.map +0 -1
  61. package/dist/public/build/js/system.57ed0f9d.chunk.js +0 -2
  62. package/dist/public/build/js/system.57ed0f9d.chunk.js.map +0 -1
  63. /package/dist/public/build/js/{4016.03291f63.chunk.js.LICENSE.txt → 4016.37d0a2f0.chunk.js.LICENSE.txt} +0 -0
  64. /package/dist/public/build/js/{main.693c4cb1.js.LICENSE.txt → main.5d8871a8.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/navigation.e4272357.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/Alerts/Alerts.tsx","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/ClickableAttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/histogram.js","webpack://@ytsaurus/ui/./src/ui/components/Histogram/HistogramChart.tsx","webpack://@ytsaurus/ui/./src/ui/components/Histogram/Histogram.js","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/info-icon2.svg","webpack://@ytsaurus/ui/./src/ui/components/Info/Info.tsx","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/compression.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/erasure-replication.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/main.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/RowsCount/RowsCount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/AutomaticModeSwitch.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/presets.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/commonFields.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/size.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/ttl.tsx","webpack://@ytsaurus/ui/./src/ui/components/SchemaDataType/SchemaDataType.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/react.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/ErrorBoundary/ErrorBoundary.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/getErrorMessage.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/Loader/Loader.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/ChartKit.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/plugins/yagr/index.js","webpack://@ytsaurus/ui/./src/ui/components/YagrChartKit/YagrChartKit.tsx","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedTextOrLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedId/FormattedId.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/index.js","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/containers/ACL/RequestPermissions/RequestPermissions.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/modals/cell-preview.ts","webpack://@ytsaurus/ui/./src/ui/containers/CellPreviewModal/CellPreviewModal.tsx","webpack://@ytsaurus/ui/./src/ui/containers/Host/Host.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountLink.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editing-popup.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/path-editing-popup.js","webpack://@ytsaurus/ui/./src/ui/hocs/components/Modal/withScope.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-hotkeysjs-scope.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/PathEditorModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/copy-object.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/CopyObjectModal/CopyObjectModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-directory.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/CreateDirectoryModal/CreateDirectoryModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/move-object.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/MoveObjectModal/MoveObjectModal.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/restore-object.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/restore-object.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/RestoreObjectModal/RestoreObjectModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/ACL/ACL.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table-rum-id.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/columns-preset.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table.js","webpack://@ytsaurus/ui/./src/ui/components/FilePicker/FilePicker.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/UploadManager/UploadManager.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/map-node-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/dyn-tables-state-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableActions.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/TableMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTableSettings.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/replicated-table.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTable.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTableMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Link/Link.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/file.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/file.js","webpack://@ytsaurus/ui/./src/ui/containers/NavigationExtraActions/NavigationExtraActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/File/File.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/DataTableWrapper/DataTableWrapper.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/ColumnsPresetButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/ColumnSelectorButton.tsx","webpack://@ytsaurus/ui/./node_modules/screenfull/index.js","webpack://@ytsaurus/ui/./src/ui/components/FullScreen/FullScreen.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/FullScreenButton.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/SettingsButton.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/jupyter-logo.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/JupyterButton.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/pagination.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/OffsetSelectorButton.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/OffsetInput.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/Paginator.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.tsx","webpack://@ytsaurus/ui/./src/ui/constants/navigation/modals/attributes-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/attributes-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/attributes-editor.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/delete-object.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/table-erase-modal.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/map-nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/map-node.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/Chooser.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/remote-copy-modal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MultipleActions.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/map-node.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/link-to-modal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/PathActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/EditTableActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/DatalensButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableOverview.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/OffsetSelectorModal/OffsetSelectorModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableColumnsPresetNotice.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/Table.js","webpack://@ytsaurus/ui/./src/ui/components/TTLInfo/TTLInfo.tsx","webpack://@ytsaurus/ui/./src/ui/navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/UploadManager/UploadManagerCreate.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/NodesTypes/NodesTypes.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-aco.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNode.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/document.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/document.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentBody.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentEditModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/Document.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentWithRum.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/transaction.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Transaction/Transaction.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/transaction-map/transaction.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/transaction-map.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/transaction-map/table.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/transaction-map.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/TransactionMap/TransactionMap.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/getComponentByContentType.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/queue.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/consumer.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/filters.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/TargetQueue/TargetQueue.tsx","webpack://@ytsaurus/ui/./src/ui/components/Multimeter/BarChart.tsx","webpack://@ytsaurus/ui/./src/ui/components/Multimeter/Multimeter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Meta/Meta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Toolbar/Toolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/utils/column-builder.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/Partitions/Partitions.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/partitions.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/Partitions/PartitionsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Consumer.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/ConsumerMetrics/ConsumerMetrics.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/status.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Meta/Meta.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/filters.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Toolbar/Toolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/QueueMetrics/QueueMetrics.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/Consumers.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/ConsumersExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Partitions/Partitions.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/partitions.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Partitions/PartitionsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Queue.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/status.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/locks.js","webpack://@ytsaurus/ui/./src/ui/utils/clusters.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/locks.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Locks/Locks.js","webpack://@ytsaurus/ui/./src/ui/components/ErrorIcon/ErrorIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/MarkdownLinePreview/MarkdownLinePreview.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Schema/Schema.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/schema.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/tables.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablets-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Tablets/Tablets.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Attributes/Attributes.js","webpack://@ytsaurus/ui/./src/ui/components/common/Timeline/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/access-log.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/access-log/access-log.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccountsLogTransactionInfo.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogError.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/access-log.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/abbr-sql.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogOpenQtButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogFilters.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrors.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/user-attributes.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/user-attributes.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/UserAttributes/UserAttributes.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TableMountConfig/TableMountConfig.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Flow/index.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/getComponentByMode.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/checkContentIsSupported.ts","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withKeyboardNavigation.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNodesTable.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/DeleteObjectModal/DeleteObjectModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/ACL/RequestPermissions/RequestPermissions.js","webpack://@ytsaurus/ui/./src/shared/constants/settings-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/AnnotationWithPartial.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/ActionButtons.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/NavigationDescription.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/ContentViewer.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationPermissionsNotice.tsx","webpack://@ytsaurus/ui/./src/ui/utils/accounts/accounts.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/AttributesEditor.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/remote-copy-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/RemoteCopyModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/table-erase-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableEraseModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableMergeSortModal/TableSortModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableMergeSortModal/TableMergeModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/dyn-tables-state-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/DynTablesStateModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/link-to-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/LinkToModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/create-aco-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/CreateACOModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/Navigation.js","webpack://@ytsaurus/ui/./src/ui/components/Editor/Editor.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/acl.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/readDynamicTable.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/readStaticTable.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl-filters.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/attributes-to-filter.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/expanded-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool-child.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overview.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/table/table-ts.ts","webpack://@ytsaurus/ui/./src/ui/components/YqlValue/YqlValue.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/ColumnCell.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/prepareColumns.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/detailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overviewTable.js","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/chartkit-error/chartkit-error.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/mergeSettingStrategy.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/settings.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/eventEmitter.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/cn.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/common.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronLeft.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronRight.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Ellipsis.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/useAlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertAction.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContextProvider.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertIcon.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmarkFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmark.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleInfoFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleCheckFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/TriangleExclamationFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ThunderboltFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/Alert.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertTitle.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertActions.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenu.classname.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/moveBack.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/moveForward.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuNavigationContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/isSeparator.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/shouldSkipItemNavigation.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/stringifyNavigationPath.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuPopup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/useListNavigation.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/isSubmenuOpen.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/useSubmenu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/toItemList.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/usePopupVisibility.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useConditionallyControlledState/useConditionallyControlledState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useStateWithCallback/useStateWithCallback.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/utils/typeCheckers.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/useScrollHandler.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/MenuGroup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/MenuItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/Menu.js"],"sourcesContent":["import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection, {\n CollapsibleSectionProps,\n} from '../../components/CollapsibleSection/CollapsibleSection';\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Alert from '../../components/Alert/Alert';\nimport {UI_COLLAPSIBLE_SIZE} from '../../constants/global/index';\nimport {YTError} from '../../types/index';\n\nconst block = cn('yt-alerts');\n\nexport type AlertsProps = {\n className?: string;\n items?: Array<YTError> | Record<string, YTError>;\n marginDirection?: CollapsibleSectionProps['marginDirection'];\n};\n\nexport function Alerts({className, items, marginDirection = 'bottom'}: AlertsProps) {\n if (isEmpty_(items)) {\n return null;\n }\n\n return (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <CollapsibleSection\n name=\"Alerts\"\n size={UI_COLLAPSIBLE_SIZE}\n marginDirection={marginDirection}\n >\n {map_(items, (alert, index) => {\n return <Alert key={index} error={alert} />;\n })}\n </CollapsibleSection>\n </div>\n </ErrorBoundary>\n );\n}\n","import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nexport interface AttributesButtonProps extends ButtonProps {}\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport AttributesButton, {AttributesButtonProps} from './AttributesButton';\n\nimport {openAttributesModal} from '../../store/actions/modals/attributes-modal';\nimport {ButtonProps} from '../Button/Button';\n\ninterface Props extends Omit<AttributesButtonProps, 'onClick' | 'title'> {\n title: React.ReactNode;\n\n // The function is called inside click handler, and overrides path and exactPath\n getPathProps?: () => Pick<Partial<Props>, 'path' | 'exactPath'>;\n path?: string;\n exactPath?: string;\n\n attribute?: string;\n attributes?: object;\n\n size?: ButtonProps['size'];\n view?: ButtonProps['view'];\n}\n\nfunction ClickableAttributesButton({\n title,\n getPathProps = () => {\n return {};\n },\n path,\n exactPath,\n attribute,\n attributes,\n openAttributesModal,\n withTooltip = true,\n tooltipProps = {placement: 'bottom-end', content: 'Show attributes'},\n ...rest\n}: Props & ConnectedProps<typeof connector>) {\n return (\n <AttributesButton\n {...rest}\n tooltipProps={tooltipProps}\n withTooltip={withTooltip}\n onClick={() => {\n const pathProps = {\n path,\n exactPath,\n ...getPathProps(),\n };\n\n openAttributesModal({\n title,\n ...pathProps,\n attribute,\n attributes,\n });\n }}\n />\n );\n}\n\nconst connector = connect(null, {openAttributesModal});\n\nexport default connector(ClickableAttributesButton);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport templates from '../templates/templates';\n\nimport {Popup} from '@gravity-ui/uikit';\n\nconst block = cn('elements-dropdown');\n\nclass Dropdown extends Component {\n static propTypes = {\n button: PropTypes.oneOfType([PropTypes.element, PropTypes.object]).isRequired,\n className: PropTypes.string,\n popup: PropTypes.object,\n directions: PropTypes.array,\n trigger: PropTypes.oneOf(['click', 'hover']).isRequired,\n template: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n data: PropTypes.object,\n }),\n ]).isRequired,\n zIndexGroupLevel: PropTypes.number,\n };\n\n static defaultProps = {\n zIndexGroupLevel: 1,\n directions: ['bottom-end', 'top-end'],\n };\n\n state = {\n popupVisible: false,\n };\n\n anchor = React.createRef();\n\n toggle = () =>\n this.setState((prevState) => ({\n popupVisible: !prevState.popupVisible,\n }));\n\n open = () => this.setState({popupVisible: true});\n\n close = () => this.setState({popupVisible: false});\n\n renderButton() {\n const {button, trigger} = this.props;\n\n const actionProps = {\n onClick: trigger === 'click' ? this.toggle : undefined,\n onMouseEnter: trigger === 'hover' ? this.open : undefined,\n onMouseLeave: trigger === 'hover' ? this.close : undefined,\n };\n\n return React.cloneElement(button, actionProps);\n }\n\n renderTemplate() {\n const {template} = this.props;\n const {key, data} = this.props.template;\n const renderer = templates.get(key).__default__;\n\n return React.isValidElement(template)\n ? React.cloneElement(template)\n : renderer.call(this, data);\n }\n\n renderPopup() {\n const {popup, directions} = this.props;\n\n return (\n <Popup\n placement={directions}\n onClose={this.close}\n open={true}\n anchorRef={this.anchor}\n hasArrow\n {...popup}\n >\n {this.renderTemplate()}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n\n return (\n <span className={block(null, className)} ref={this.anchor}>\n {this.renderButton()}\n {this.state.popupVisible && this.renderPopup()}\n </span>\n );\n }\n}\n\nexport default Dropdown;\n","import hammer from '../../common/hammer';\nimport {createSelector} from 'reselect';\n\nconst getHistogram = (state, props) => props.histogram;\n\nexport const createGetQuartiles = () =>\n createSelector(getHistogram, (histogram) => hammer.stat.quartiles(histogram.data));\n\nexport const createGetPDF = () =>\n createSelector(getHistogram, (histogram) => hammer.stat.pdf(histogram.data));\n\nexport const createGetECDF = () =>\n createSelector([getHistogram, createGetPDF()], (histogram, pdf) => {\n const ecdf = hammer.stat.ecdf(histogram.data);\n\n // Create fake points\n ecdf.steps.unshift({\n x: pdf.min,\n y: 0,\n });\n ecdf.steps.push({\n x: pdf.min + pdf.bucketNumber * pdf.bucketSize,\n y: 100,\n });\n\n return ecdf;\n });\n\nexport const createGetIsDataGood = () =>\n createSelector(\n [createGetPDF(), createGetECDF(), createGetQuartiles()],\n (pdfData, ecdfData, quartiles) => {\n if (pdfData.min === pdfData.max) {\n // All points are the same\n return false;\n } else if (ecdfData.steps.length < 5) {\n // We have got too few different points in data (including fake points)\n return false;\n } else if (quartiles.q75 - quartiles.q25 === 0) {\n // All points are almost the same\n return false;\n } else {\n return true;\n }\n },\n );\n","import compact_ from 'lodash/compact';\nimport React from 'react';\nimport YagrChartKit, {\n RawSerieData,\n YagrWidgetData,\n getSerieColor,\n} from '../YagrChartKit/YagrChartKit';\n\nimport formatLib from '../../common/hammer/format';\n\nexport interface HistogramChartProps {\n className: string;\n format: 'Number' | 'Bytes';\n ecdf: ECDFData;\n pdf: PDFData;\n dataName: string;\n lineOnly?: boolean;\n}\n\ninterface ECDFData {\n min: number;\n max: number;\n steps: Array<XY>;\n}\n\ntype XY = [X, Y] | {x: X; y: Y};\n\ninterface PDFData {\n bucketNumber: number;\n bucketSize: number;\n buckets: Array<[X, Y]>;\n min: X;\n max: X;\n}\n\ntype X = number;\ntype Y = number;\n\nfunction HistogramChart({className, pdf, ecdf, format, dataName, lineOnly}: HistogramChartProps) {\n const yagrData = React.useMemo(() => {\n const xFormat = format === 'Bytes' ? formatLib.Bytes : formatLib.Number;\n const {timeline, graphs, step} = lineOnly\n ? getLineOnlyData(pdf, ecdf)\n : getColumnData(pdf, ecdf);\n const res: YagrWidgetData = {\n data: {\n timeline,\n graphs,\n },\n libraryConfig: {\n axes: {\n x: {\n values: (_d, x) => x.map(xFormat),\n side: 'bottom',\n grid: {\n show: false,\n },\n },\n y1: {\n side: 'right',\n show: false,\n },\n y: {\n side: 'left',\n show: false,\n },\n },\n scales: {\n y1: {\n min: 0,\n max: 100,\n },\n y: {\n min: 0,\n },\n },\n tooltip: {\n render: (tooltipData) => {\n const {\n x,\n scales: [first, second],\n } = tooltipData;\n const columnValue = lineOnly ? undefined : first?.rows?.[0]?.originalValue;\n const lineValue = lineOnly\n ? first?.rows?.[0]?.originalValue\n : second?.rows?.[0]?.originalValue;\n\n return (\n renderDefaultTooltip({\n colValue:\n columnValue !== undefined\n ? formatLib.Number(columnValue)\n : undefined,\n colX0: xFormat(x - step / 2),\n colX1: xFormat(x + step / 2),\n lineValue:\n lineValue !== undefined\n ? formatLib.Number(lineValue, {digits: 2}) + '%'\n : undefined,\n lineX: xFormat(x),\n dataName,\n lineOnly,\n }) ?? '-'\n );\n },\n },\n },\n sources: {},\n };\n return res;\n }, [pdf, ecdf, format, lineOnly]);\n\n return (\n <div className={className}>\n <YagrChartKit type={'yagr'} data={yagrData} />\n </div>\n );\n}\n\nexport default React.memo(HistogramChart);\n\nfunction getColumnData(\n {buckets, min, bucketSize}: PDFData,\n {steps}: ECDFData,\n): YagrWidgetData['data'] & {step: number} {\n const timeline = [min - 0.1 * bucketSize];\n const data: Array<number> = [undefined!];\n const lineData: Array<number> = [undefined!];\n let j = 0;\n for (let i = 0; i < buckets.length; ++i) {\n const [x, y] = buckets[i];\n const bestX = x + bucketSize / 2;\n data.push(y);\n timeline.push(bestX);\n while (j < steps.length) {\n const item = steps[j];\n const itemX = getX(item);\n if (itemX === bestX) {\n lineData[i + 1] = Array.isArray(item) ? item[1] : item.y;\n break;\n } else if (itemX === undefined || itemX < bestX) {\n ++j;\n continue;\n } else {\n lineData[i + 1] = calcBestY(\n bestX,\n steps[Math.min(steps.length - 1, j - 1)],\n steps[j],\n )!;\n break;\n }\n }\n }\n timeline.push(min + (0.1 + bucketSize) * buckets.length);\n data.push(undefined!);\n lineData.push(undefined!);\n\n const graphs: RawSerieData[] = [\n {\n type: 'line' as const,\n data: lineData,\n scale: 'y1',\n color: getSerieColor(1),\n },\n {\n type: 'column' as const,\n data,\n color: getSerieColor(0),\n ...{\n renderOptions: {\n size: [1],\n gap: 1,\n },\n },\n },\n ];\n return {\n graphs,\n timeline,\n step: bucketSize,\n };\n}\n\nfunction getLineOnlyData(\n {min, buckets, bucketSize}: PDFData,\n {steps}: ECDFData,\n): ReturnType<typeof getColumnData> {\n const timeline: Array<number> = [min - 0.1 * bucketSize];\n const data: Array<number> = [NaN];\n\n for (const item of steps) {\n timeline.push(getX(item)!);\n data.push(getY(item)!);\n }\n\n timeline.push(min + (0.1 + bucketSize) * buckets.length);\n data.push(NaN);\n\n const graphs: Array<RawSerieData> = [\n {\n type: 'line' as const,\n data,\n color: getSerieColor(1),\n },\n ];\n\n return {\n timeline,\n graphs,\n step: NaN,\n };\n}\n\nfunction renderDefaultTooltip({\n colValue,\n colX0,\n colX1,\n lineValue,\n lineX,\n dataName,\n lineOnly,\n}: {\n colValue?: string;\n colX0: string;\n colX1: string;\n lineValue?: string;\n lineX: string;\n dataName: string;\n lineOnly?: boolean;\n}) {\n const lp = lineOnly ? '' : '~';\n return compact_([\n colValue !== undefined\n ? `<b>${colValue}</b> partitions contain in range from <b>${colX0}</b> to <b>${colX1}</b> - ${dataName}`\n : undefined,\n lineValue !== undefined\n ? `<b>${lp}${lineValue}</b> of tablets conains <b>${lp}${lineX}</b> or less`\n : undefined,\n ]).join('<br/>');\n}\n\nfunction getX(v?: XY) {\n return Array.isArray(v) ? v[0] : v?.x;\n}\n\nfunction getY(v?: XY) {\n return Array.isArray(v) ? v[1] : v?.y;\n}\n\nfunction calcBestY(bestX: number, left?: XY, right?: XY) {\n const ly = getY(left);\n const ry = getY(right);\n if (ly === undefined) {\n return ry;\n }\n\n if (ry === undefined) {\n return ly;\n }\n\n const lx = getX(left);\n const rx = getX(right);\n const k = (bestX - lx!) / (rx! - lx!);\n\n return ly + k * (ry - ly);\n}\n","import {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../common/hammer';\nimport cn from 'bem-cn-lite';\nimport React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {\n createGetECDF,\n createGetIsDataGood,\n createGetPDF,\n createGetQuartiles,\n} from '../../store/selectors/histogram';\nimport HistogramChart from './HistogramChart';\n\nimport './Histogram.scss';\nimport {Checkbox, Select} from '@gravity-ui/uikit';\n\nconst block = cn('histogram');\n\nHistogram.quartilesProps = PropTypes.shape({\n min: PropTypes.number,\n q25: PropTypes.number,\n q50: PropTypes.number,\n q75: PropTypes.number,\n max: PropTypes.number,\n});\n\nHistogram.pdfProps = PropTypes.shape({\n bucketNumber: PropTypes.number,\n bucketSize: PropTypes.number,\n max: PropTypes.number,\n min: PropTypes.number,\n valueMax: PropTypes.number,\n valueMin: PropTypes.number,\n quartiles: Histogram.quartilesProps,\n buckets: PropTypes.array,\n});\n\nHistogram.ecdfProps = PropTypes.shape({\n min: PropTypes.number,\n max: PropTypes.number,\n steps: PropTypes.array,\n});\n\nHistogram.propTypes = {\n // from parent\n activeHistogram: PropTypes.string.isRequired,\n handleHistogramChange: PropTypes.func.isRequired,\n histogramItems: PropTypes.object.isRequired,\n\n histogram: PropTypes.shape({\n data: PropTypes.array.isRequired,\n format: PropTypes.string.isRequired,\n dataName: PropTypes.string.isRequired,\n dataFormat: PropTypes.string.isRequired,\n }).isRequired,\n\n // from connect\n quartiles: Histogram.quartilesProps.isRequired,\n pdf: Histogram.pdfProps.isRequired,\n ecdf: Histogram.ecdfProps.isRequired,\n isDataGood: PropTypes.bool.isRequired,\n};\n\nfunction Histogram(props) {\n const {activeHistogram, handleHistogramChange, histogramItems} = props;\n const {histogram, quartiles, pdf, ecdf, isDataGood} = props;\n\n const params = {...histogram, pdf, ecdf};\n\n const [isDatailedLine, setDetailed] = React.useState(false);\n\n return (\n <div className={block()}>\n <div className={block('toolbar')}>\n <Select\n value={[activeHistogram]}\n onUpdate={(values) => handleHistogramChange(values[0])}\n options={map_(keys_(histogramItems), (value) => {\n return {value, content: value};\n })}\n width=\"max\"\n />\n <Checkbox\n className={block('detailed')}\n checked={isDatailedLine}\n onUpdate={setDetailed}\n >\n Detailed line\n </Checkbox>\n </div>\n\n {isDataGood ? (\n <HistogramChart className={block('chart')} {...params} lineOnly={isDatailedLine} />\n ) : (\n <div className={block('bad-data')}>\n <p className={block('bad-data-message')}>\n Could not draw a descriptive chart with given data.\n </p>\n </div>\n )}\n\n <ul className={block('quartiles')}>\n <li className={block('quartiles-item')}>\n Min –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.min)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q25% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q25)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q50% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q50)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q75% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q75)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Max –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.max)}\n </span>\n </li>\n </ul>\n </div>\n );\n}\n\n// https://github.com/reduxjs/reselect#sharing-selectors-with-props-across-multiple-component-instances\nconst makeMapStateToProps = () => {\n const getQuartiles = createGetQuartiles();\n const getPDF = createGetPDF();\n const getECDF = createGetECDF();\n const getIsDataGood = createGetIsDataGood();\n\n return (state, props) => {\n const quartiles = getQuartiles(state, props);\n const pdf = getPDF(state, props);\n const ecdf = getECDF(state, props);\n const isDataGood = getIsDataGood(state, props);\n\n return {quartiles, pdf, ecdf, isDataGood};\n };\n};\n\nexport default connect(makeMapStateToProps)(Histogram);\n","const SvgInfoIcon2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\" {...props}><path fill=\"#027BF3\" d=\"M7 .828C3.521.828.703 3.672.703 7.125A6.296 6.296 0 0 0 7 13.422c3.453 0 6.297-2.818 6.297-6.297C13.297 3.672 10.453.828 7 .828m0 11.375a5.06 5.06 0 0 1-5.078-5.078A5.077 5.077 0 0 1 7 2.047c2.793 0 5.078 2.285 5.078 5.078A5.077 5.077 0 0 1 7 12.203m0-8.582c-.61 0-1.066.483-1.066 1.067 0 .609.457 1.066 1.066 1.066.584 0 1.066-.457 1.066-1.066 0-.584-.482-1.067-1.066-1.067m1.422 6.45v-.61a.33.33 0 0 0-.305-.305h-.305V6.617a.33.33 0 0 0-.304-.304H5.883a.31.31 0 0 0-.305.304v.61c0 .177.127.304.305.304h.305v1.625h-.305a.31.31 0 0 0-.305.305v.61c0 .177.127.304.305.304h2.234a.31.31 0 0 0 .305-.305\" /></svg>;\nexport default SvgInfoIcon2;","import React, {ReactNode} from 'react';\nimport block from 'bem-cn-lite';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport infoIcon from '../../assets/img/svg/info-icon2.svg';\n\nimport './Info.scss';\n\nconst b = block('info-block');\n\ninterface InfoProps {\n children: ReactNode;\n className?: string;\n}\nexport function Info({children, className}: InfoProps) {\n return (\n <div className={b(null, className)}>\n <div className={b('icon')}>\n <Icon data={infoIcon} />\n </div>\n <div className={b('body')}>{children}</div>\n </div>\n );\n}\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Error from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\n\nconst toaster = new Toaster();\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded: boolean;\n error: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <Error error={errorData} />;\n }\n\n return children;\n }\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nexport default (attributes) => {\n const [compressionRatio, compressionCodec] = ypath.getValues(attributes, [\n '/compression_ratio',\n '/compression_codec',\n ]);\n\n return [\n {\n key: 'compression_ratio',\n value: hammer.format['Number'](compressionRatio, {digits: 5}),\n },\n {\n key: 'compression_codec',\n value: compressionCodec,\n },\n ];\n};\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\nexport default (attributes) => {\n const [erasureCodec, replicationFactor] = ypath.getValues(attributes, [\n '/erasure_codec',\n '/replication_factor',\n ]);\n\n const hideReplicationFactor = erasureCodec && erasureCodec !== 'none';\n return [\n {\n key: 'erasure codec',\n value: erasureCodec,\n helpUrl: docsUrl(UIFactory.docsUrls['storage:replication#erasure']),\n visible: erasureCodec !== 'none',\n },\n {\n key: 'replication factor',\n value: replicationFactor,\n visible: !hideReplicationFactor && replicationFactor !== 'none',\n },\n ];\n};\n","import React from 'react';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {Template} from '../../../components/MetaTable/templates/Template';\nimport {SubjectCard} from '../../SubjectLink/SubjectLink';\nimport AccountLink from '../../../pages/accounts/AccountLink';\nimport UIFactory from '../../../UIFactory';\nimport {makeTTLItems} from './ttl';\n\nexport default function metaTablePresetMain(attributes) {\n const [id, owner, account, creationTime, modificationTime, accessTime, yql_op_id] =\n ypath.getValues(attributes, [\n '/id',\n '/owner',\n '/account',\n '/creation_time',\n '/modification_time',\n '/access_time',\n '/_yql_op_id',\n ]);\n\n const yqlLink = yql_op_id ? UIFactory.yqlWidgetSetup?.renderYqlOperationLink(yql_op_id) : null;\n\n return [\n {\n key: 'id',\n value: <Template.Id id={id} />,\n },\n {\n key: 'owner',\n value: <SubjectCard name={owner} />,\n },\n {\n key: 'account',\n value: <AccountLink account={account} />,\n visible: Boolean(account),\n },\n {\n key: 'creation_time',\n value: <Template.Time time={creationTime} valueFormat=\"DateTime\" />,\n visible: Boolean(creationTime),\n },\n ...makeTTLItems(attributes, {showTTLLabel: true}),\n {\n key: 'modification_time',\n value: <Template.Time time={modificationTime} valueFormat=\"DateTime\" />,\n visible: Boolean(modificationTime),\n },\n {\n key: 'access_time',\n value: <Template.Time time={accessTime} valueFormat=\"DateTime\" />,\n visible: Boolean(accessTime),\n },\n {\n key: 'YQL operation',\n value: yqlLink,\n visible: Boolean(yqlLink),\n },\n ];\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Popover} from '@gravity-ui/uikit';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport hammer from '../../../../../../common/hammer';\n\nimport './RowsCount.scss';\n\nconst block = cn('rows-count');\n\nexport function RowsCount(props: {count: number; isDynamic: boolean}) {\n const {count, isDynamic} = props;\n return (\n <React.Fragment>\n {isDynamic ? '≈ ' : ''}\n {hammer.format['Number'](count)}\n {!isDynamic ? null : (\n <Popover\n content={\n <span>\n This value corresponds to the number of rows stored in the on-disk\n chunks. The actual value may be different: it may be either larger due\n to new rows residing only in memory or smaller due to unsynced deleted\n rows and multiple versions stored on disks. It is not possible to\n calculate the real value without reading all the rows.\n </span>\n }\n >\n <span className={block('question')}>\n <Icon awesome={'question-circle'} />\n </span>\n </Popover>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\n\nimport {Switch} from '@gravity-ui/uikit';\n\nimport StatusBulb from '../../../../../components/StatusBulb/StatusBulb';\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../components/Dialog';\nimport {YTError} from '../../../../../types';\n\nexport interface Props {\n value?: boolean;\n onEdit?: (currentValue?: Props['value']) => Promise<void>;\n}\n\ninterface FormValues {\n value?: string;\n}\n\nfunction AutomaticModeSwitchEditor({value, onEdit, onClose}: Props & {onClose: () => void}) {\n const [error, setError] = React.useState<YTError | undefined>(undefined);\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n const {values} = form.getState();\n try {\n await onEdit?.(values.value === 'enabled');\n } catch (e: any) {\n setError(e);\n throw e;\n }\n },\n [setError],\n );\n\n return (\n <YTDFDialog<FormValues>\n pristineSubmittable={true}\n headerProps={{\n title: 'Edit',\n }}\n onAdd={handleAdd}\n onClose={onClose}\n visible={true}\n initialValues={{\n value: value ? 'enabled' : 'disabled',\n }}\n fields={[\n {\n name: 'value',\n type: 'radio',\n caption: 'Automatic mode switch',\n extras: {\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n\nfunction AutomaticModeSwitch({value, onEdit}: Props) {\n const [showEditor, setShowEditor] = React.useState(false);\n\n const handleShow = React.useCallback(() => {\n setShowEditor(true);\n }, []);\n\n const handleClose = React.useCallback(() => {\n setShowEditor(false);\n }, []);\n\n if (onEdit) {\n return (\n <React.Fragment>\n <Switch\n checked={value}\n onUpdate={handleShow}\n title={value ? 'Enabled' : 'Disabled'}\n />\n {showEditor && (\n <AutomaticModeSwitchEditor\n value={!value}\n onEdit={onEdit}\n onClose={handleClose}\n />\n )}\n </React.Fragment>\n );\n }\n\n return (\n <React.Fragment>\n <StatusBulb theme={value ? 'enabled' : 'unknown'} />{' '}\n </React.Fragment>\n );\n}\n\nexport default React.memo(AutomaticModeSwitch);\n","import React from 'react';\nimport hammer from '../../../common/hammer';\nimport ypath from '../../../common/thor/ypath';\nimport {RowsCount} from '../../../pages/navigation/content/Table/TableMeta/RowsCount/RowsCount';\nimport {tabletActiveBundleLink} from '../../../utils/components/tablet-cells';\nimport Label, {LabelOnOff} from '../../Label/Label';\nimport Link from '../../Link/Link';\nimport {Template} from '../templates/Template';\nimport compression from './compression';\nimport erasureReplication from './erasure-replication';\nimport size from './size';\nimport {CypressNodeTypes} from '../../../utils/cypress-attributes';\nimport {main} from './index';\nimport {getCommonFields} from '../../../pages/navigation/content/Table/TableMeta/commonFields';\nimport {Props as AutomaticModeSwitchProps} from '../../../pages/navigation/content/Table/TableMeta/AutomaticModeSwitch';\n\nexport function replicatedTableTracker(attributes: any) {\n const value = ypath.getValue(\n attributes,\n '/replicated_table_options/replicated_table_tracker_enabled',\n );\n return {\n key: 'replicated_table_tracker',\n value: <LabelOnOff value={value} />,\n visible: value !== undefined,\n };\n}\n\nexport function tableSize(attributes: any, isDynamic: boolean, mediumList: string[]) {\n const [rowCount, chunkCount, dataWeight] = ypath.getValues(attributes, [\n '/chunk_row_count',\n '/chunk_count',\n '/data_weight',\n ]);\n return [\n {\n key: 'rowCount',\n label: 'Rows',\n value: <RowsCount isDynamic={isDynamic} count={rowCount} />,\n visible: Boolean(rowCount),\n },\n {\n key: 'chunkCount',\n label: 'Chunks',\n value: hammer.format['Number'](chunkCount),\n visible: Boolean(dataWeight),\n },\n ...size(attributes, mediumList),\n {\n key: 'dataWeight',\n label: 'Data weight',\n value: <Template.FormattedValue value={dataWeight} format=\"Bytes\" />,\n visible: Boolean(chunkCount),\n },\n ];\n}\n\nexport function tableStorage(attributes: any, tableType: string) {\n const optimizeFor = ypath.getValue(attributes, '/optimize_for');\n return [\n {\n key: 'tableType',\n label: 'Table type',\n value: tableType,\n },\n {\n key: 'optimizeFor',\n label: 'Optimize for',\n value: <Label text={hammer.format['ReadableField'](optimizeFor)} theme=\"info\" />,\n visible: optimizeFor !== 'undefined',\n },\n ...compression(attributes),\n ...erasureReplication(attributes),\n replicatedTableTracker(attributes),\n ];\n}\n\nexport function dynTableInfo(attributes: any, cluster: string, tabletErrorCount: number) {\n const [tabletCellBundle, tabletState, inMemoryMode] = ypath.getValues(attributes, [\n '/tablet_cell_bundle',\n '/tablet_state',\n '/in_memory_mode',\n ]);\n\n const tabletUrl = tabletActiveBundleLink(cluster, tabletCellBundle);\n return [\n {\n key: 'tabletCellBundle',\n label: 'Tablet cell bundle',\n value: (\n <Link theme={'primary'} routed url={tabletUrl}>\n {tabletCellBundle}\n </Link>\n ),\n },\n {\n key: 'tabletState',\n label: 'Tablet state',\n value: (\n <Label\n theme={tabletState === 'mounted' ? 'info' : 'default'}\n text={hammer.format['ReadableField'](tabletState)}\n />\n ),\n },\n {\n key: 'inMemoryMode',\n label: 'In memory mode',\n value: (\n <Label\n theme={inMemoryMode && inMemoryMode !== 'none' ? 'info' : 'default'}\n text={hammer.format['ReadableField'](inMemoryMode || 'none')}\n />\n ),\n },\n {\n key: 'tabletErrorCount',\n label: 'Tablet error count',\n value: hammer.format['Number'](tabletErrorCount),\n },\n ];\n}\n\nexport const makeMetaItems = ({\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList = [],\n tabletErrorCount = 0,\n onEditEnableReplicatedTableTracker,\n}: {\n cluster: string;\n attributes: any;\n mediumList?: string[];\n isDynamic: boolean;\n tableType: string;\n tabletErrorCount?: number;\n onEditEnableReplicatedTableTracker?: AutomaticModeSwitchProps['onEdit'];\n}) => {\n const cf = getCommonFields({\n cluster,\n attributes,\n isDynamic,\n tableType: attributes.type,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n });\n\n switch (attributes.type) {\n case CypressNodeTypes.REPLICATED_TABLE:\n case CypressNodeTypes.REPLICATION_LOG_TABLE:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n tableStorage(attributes, attributes.type),\n [\n cf.sorted,\n ...dynTableInfo(attributes, cluster, tabletErrorCount),\n cf.automaticModeSwitch,\n ],\n ];\n\n case CypressNodeTypes.CHAOS_REPLICATED_TABLE:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n [\n cf.tableType,\n replicatedTableTracker(attributes),\n cf.sorted,\n cf.chaosCellBundle,\n cf.automaticModeSwitch,\n ],\n ];\n\n default:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n tableStorage(attributes, tableType),\n [\n cf.sorted,\n ...(isDynamic ? dynTableInfo(attributes, cluster, tabletErrorCount) : []),\n ],\n ];\n }\n};\n","import React from 'react';\nimport ypath from '../../../../../common/thor/ypath';\nimport Link from '../../../../../components/Link/Link';\nimport AutomaticModeSwitch, {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\nimport reduce_ from 'lodash/reduce';\nimport {MetaTableItem} from '../../../../../components/MetaTable/MetaTable';\nimport {tabletActiveChaosBundleLink} from '../../../../../utils/components/tablet-cells';\n\nexport const getCommonFields = ({\n cluster,\n attributes,\n tableType,\n onEditEnableReplicatedTableTracker,\n}: {\n cluster: string;\n attributes: any;\n isDynamic: boolean;\n tableType: string;\n tabletErrorCount: number;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}) => {\n const [sorted, chaosCellBundle, enable_replicated_table_tracker] = ypath.getValues(attributes, [\n '/sorted',\n '/chaos_cell_bundle',\n '/replicated_table_options/enable_replicated_table_tracker',\n ]);\n\n const chaosUrl = tabletActiveChaosBundleLink(cluster, chaosCellBundle);\n\n const fields = [\n {\n key: 'tableType',\n label: 'Table type',\n value: tableType,\n },\n {\n key: 'sorted',\n value: sorted,\n visible: sorted !== undefined,\n },\n {\n key: 'chaosCellBundle',\n label: 'Chaos cell bundle',\n value: (\n <Link theme={'primary'} routed url={chaosUrl}>\n {chaosCellBundle}\n </Link>\n ),\n },\n {\n key: 'automaticModeSwitch',\n label: 'Table automatic mode switch',\n value: (\n <AutomaticModeSwitch\n value={enable_replicated_table_tracker}\n onEdit={onEditEnableReplicatedTableTracker}\n />\n ),\n },\n ] as const;\n\n type Fields = typeof fields;\n\n const commonFields = reduce_(\n fields,\n (acc, item) => {\n acc[item.key] = item;\n return acc;\n },\n {} as Record<Fields[number]['key'], MetaTableItem>,\n );\n\n return commonFields;\n};\n","import map_ from 'lodash/map';\n\nimport React from 'react';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {Template} from '../../../components/MetaTable/templates/Template';\n\nexport default function metaTablePresetSize(attributes, mediumList) {\n const [uncompressedDataSize, compressedDataSize, primaryMedium] = ypath.getValues(attributes, [\n '/uncompressed_data_size',\n '/compressed_data_size',\n '/primary_medium',\n ]);\n const [usageDiskSpace, diskSpace] = ypath.getValues(attributes, [\n '/resource_usage/disk_space',\n '/disk_space',\n ]);\n\n const mediumsTemplates = map_(mediumList, (medium) => {\n const usageMediumDiskSpace = ypath.getValue(\n attributes,\n `/resource_usage/disk_space_per_medium/${medium}`,\n );\n const mediumDiskSpace = ypath.getValue(attributes, `/disk_space_per_medium/${medium}`);\n\n return {\n key: medium + '_disk_space',\n value: (\n <Template.FormattedValue\n value={usageMediumDiskSpace || mediumDiskSpace}\n format=\"Bytes\"\n />\n ),\n visible: Boolean(usageMediumDiskSpace || mediumDiskSpace),\n };\n });\n\n return [\n {\n key: 'uncompressed_data_size',\n value: <Template.FormattedValue value={uncompressedDataSize} format=\"Bytes\" />,\n visible: Boolean(uncompressedDataSize),\n },\n {\n key: 'compressed_data_size',\n value: <Template.FormattedValue value={compressedDataSize} format=\"Bytes\" />,\n visible: Boolean(compressedDataSize),\n },\n {\n key: 'primary_medium',\n value: <Template.Readable value={primaryMedium} />,\n visible: Boolean(primaryMedium),\n },\n {\n key: 'disk_space',\n value: <Template.FormattedValue value={usageDiskSpace || diskSpace} format=\"Bytes\" />,\n visible: Boolean(usageDiskSpace || diskSpace),\n },\n ...mediumsTemplates,\n ];\n}\n","import React from 'react';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Label, LabelProps} from '@gravity-ui/uikit';\n\nimport ypath from '../../../common/thor/ypath';\n\nimport {formatTimeDuration} from '../../../components/TimeDuration/TimeDuration';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\nimport UIFactory from '../../../UIFactory';\n\nimport {MetaTableItem} from '../MetaTable';\nimport {Template} from '../templates/Template';\nimport {makeNavigationLink} from '../../../utils/app-url';\n\nconst block = cn('meta-table-ttl');\n\nexport function makeTTLItems(attrs: unknown, {showTTLLabel}: {showTTLLabel?: false} = {}) {\n const expiration_time = ypath.getValue(attrs, '/expiration_time');\n const expiration_timeout = ypath.getValue(attrs, '/expiration_timeout');\n const {time, timeout} = ypath.getValue(attrs, '/effective_expiration') ?? {};\n\n const res: Array<MetaTableItem> = [];\n\n const className = block('ttl');\n\n if (time && time.value !== expiration_time) {\n res.push({\n key: 'effective_expiration_time',\n value: withTTL(moment(time.value).format('DD MMM YYYY HH:mm:ss'), showTTLLabel),\n className,\n });\n res.push({\n key: 'effective_expiration_time_path',\n qa: 'expiration_timeout_path',\n value: <Template.Link url={makeNavigationLink(time.path)} text={time.path} />,\n });\n }\n if (expiration_time) {\n res.push({\n key: 'expiration_time',\n value: withTTL(moment(expiration_time).format('DD MMM YYYY HH:mm:ss'), showTTLLabel),\n className,\n });\n }\n\n if (timeout && timeout.value !== expiration_timeout) {\n res.push({\n key: 'effective_expiration_timeout',\n value: withTTL(formatTimeDuration(timeout.value), showTTLLabel),\n className,\n });\n res.push({\n key: 'effective_expiration_timeout_path',\n qa: 'expiration_timeout_path',\n value: <Template.Link url={makeNavigationLink(timeout.path)} text={timeout.path} />,\n });\n }\n if (expiration_timeout) {\n res.push({\n key: 'expiration_timeout',\n value: withTTL(formatTimeDuration(expiration_timeout), showTTLLabel),\n className,\n });\n }\n\n return res;\n}\n\nfunction withTTL(children: React.ReactNode, showTTLLabel = false) {\n return (\n <React.Fragment>\n {children}{' '}\n <Link\n className={block('ttl-info')}\n url={UIFactory.docsUrls['cypress:ttl']}\n theme=\"secondary\"\n >\n <Icon awesome={'question-circle'} />\n </Link>{' '}\n {showTTLLabel && <TTLLabel />}\n </React.Fragment>\n );\n}\n\nexport function TTLLabel({size}: {size?: LabelProps['size']}) {\n return (\n <Label theme={'warning'} size={size}>\n TTL\n </Label>\n );\n}\n","import React from 'react';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from 'react-redux';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\nimport {parseV3Type} from './dateTypesV3';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseV3Type(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n","import React from 'react';\nimport 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(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\n}\n","import React from 'react';\n// For some reason React.memo drops the generic prop type and creates a regular union type\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087#issuecomment-542793243\nexport const typedMemo = React.memo;\n","import React from 'react';\nimport { CHARTKIT_ERROR_CODE } from '../../libs';\nimport { getErrorMessage } from '../../utils/getErrorMessage';\nexport class ErrorBoundary extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n error: undefined,\n };\n this.resetError = () => {\n if (this.state.error) {\n this.setState({ error: undefined });\n }\n };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n componentDidCatch() {\n var _a, _b;\n const { error } = this.state;\n if (error) {\n (_b = (_a = this.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, { error });\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.data !== this.props.data) {\n const { error } = this.state;\n if (error && 'code' in error && error.code === CHARTKIT_ERROR_CODE.NO_DATA) {\n this.resetError();\n }\n }\n }\n render() {\n const { error } = this.state;\n if (error) {\n const message = getErrorMessage(error);\n if (this.props.renderError) {\n return this.props.renderError({\n error,\n message,\n resetError: this.resetError,\n });\n }\n return React.createElement(\"div\", null, message);\n }\n return this.props.children;\n }\n}\n","import { i18n } from '../i18n';\nexport function getErrorMessage(error) {\n const code = 'code' in error && error.code;\n return (error.message || code || i18n('error', 'label_unknown-error')).toString();\n}\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { Loader as BaseLoader } from '@gravity-ui/uikit';\nimport { block } from '../../utils/cn';\nimport './Loader.css';\nconst b = block('loader');\nexport const Loader = (_a) => {\n var { renderPluginLoader } = _a, props = __rest(_a, [\"renderPluginLoader\"]);\n const pluginLoader = renderPluginLoader === null || renderPluginLoader === void 0 ? void 0 : renderPluginLoader();\n // React.Suspense complains about possible undefined in \"fallback\" property\n if (typeof pluginLoader !== 'undefined') {\n return pluginLoader;\n }\n return (React.createElement(\"div\", { className: b() },\n React.createElement(BaseLoader, Object.assign({}, props))));\n};\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { i18n } from '../i18n';\nimport { CHARTKIT_ERROR_CODE, ChartKitError, settings } from '../libs';\nimport { getRandomCKId, typedMemo } from '../utils';\nimport { cn } from '../utils/cn';\nimport { ErrorBoundary } from './ErrorBoundary/ErrorBoundary';\nimport { Loader } from './Loader/Loader';\nimport './ChartKit.css';\nconst b = cn('chartkit');\nconst ChartKitComponent = (props) => {\n const widgetRef = React.useRef();\n const { instanceRef, id: propsId, type, isMobile, renderPluginLoader } = props, restProps = __rest(props, [\"instanceRef\", \"id\", \"type\", \"isMobile\", \"renderPluginLoader\"]);\n const ckId = React.useMemo(() => getRandomCKId(), []);\n const id = propsId || ckId;\n const lang = settings.get('lang');\n const plugins = settings.get('plugins');\n const plugin = plugins.find((iteratedPlugin) => iteratedPlugin.type === type);\n if (!plugin) {\n throw new ChartKitError({\n code: CHARTKIT_ERROR_CODE.UNKNOWN_PLUGIN,\n message: i18n('error', 'label_unknown-plugin', { type }),\n });\n }\n const ChartComponent = plugin.renderer;\n React.useImperativeHandle(instanceRef, () => ({\n reflow(details) {\n var _a;\n if ((_a = widgetRef.current) === null || _a === void 0 ? void 0 : _a.reflow) {\n widgetRef.current.reflow(details);\n }\n },\n }), []);\n return (React.createElement(React.Suspense, { fallback: React.createElement(Loader, { renderPluginLoader: renderPluginLoader }) },\n React.createElement(\"div\", { className: b({ mobile: isMobile }, 'chartkit-theme_common') },\n React.createElement(ChartComponent, Object.assign({ ref: widgetRef, id: id, lang: lang }, restProps)))));\n};\nconst ChartKitComponentWithErrorBoundary = React.forwardRef(function ChartKitComponentWithErrorBoundary(props, ref) {\n return (React.createElement(ErrorBoundary, { onError: props.onError, data: props.data, renderError: props.renderError },\n React.createElement(ChartKitComponent, Object.assign({ instanceRef: ref }, props))));\n}) /* https://stackoverflow.com/a/58473012 */;\nexport const ChartKit = typedMemo(ChartKitComponentWithErrorBoundary);\n","import { ChartKit } from './components/ChartKit';\nimport { settings } from './libs';\nexport * from './types/widget-data';\nexport * from './libs/chartkit-error/chartkit-error';\nexport { settings };\nexport default ChartKit;\n","import React from 'react';\nexport * from './types';\nexport const YagrPlugin = {\n type: 'yagr',\n renderer: React.lazy(() => import('./renderer/YagrWidget')),\n};\n","import ChartKit, {settings} from '@gravity-ui/chartkit';\nimport {YagrPlugin} from '@gravity-ui/chartkit/yagr';\nexport type {RawSerieData, YagrWidgetData} from '@gravity-ui/chartkit/yagr';\n\nimport '@gravity-ui/yagr/dist/index.css';\n\nsettings.set({plugins: [YagrPlugin]});\n\nconst COLORS = ['rgb(77, 162, 241)', 'rgb(255, 61, 100)'];\n\nexport function getSerieColor(serieIndex: number) {\n return COLORS[serieIndex % COLORS.length];\n}\n\nexport default ChartKit;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {withRouter} from 'react-router';\n\nimport {computeStateQuery} from '../../utils/index';\nimport Link from '../../components/Link/Link';\nimport FormattedText from './FormattedText';\n\nfunction FormattedLink(props) {\n const {state, theme = 'ghost', className, text, match, onClick, ...rest} = props;\n const url = computeStateQuery({cluster: match.params.cluster, ...state});\n return (\n <Link routed url={url} theme={theme} onClick={onClick} className={className}>\n {React.isValidElement(text) ? text : <FormattedText text={text} {...rest} />}\n </Link>\n );\n}\nFormattedLink.propTypes = {\n state: PropTypes.shape({\n page: PropTypes.string.isRequired,\n cluster: PropTypes.string,\n tab: PropTypes.string,\n }).isRequired,\n text: PropTypes.oneOfType([PropTypes.node, PropTypes.string]).isRequired,\n className: PropTypes.string,\n theme: PropTypes.string,\n onClick: PropTypes.func,\n // from react-router\n match: PropTypes.shape({\n params: PropTypes.shape({\n cluster: PropTypes.string,\n }),\n }),\n};\nexport default withRouter(FormattedLink);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FormattedText from './FormattedText';\nimport FormattedLink from './FormattedLink';\n\nexport default function FormattedTextOrLink({asLink = false, ...props}) {\n return asLink ? <FormattedLink {...props} /> : <FormattedText {...props} />;\n}\nFormattedTextOrLink.propTypes = {\n asLink: PropTypes.bool,\n};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n\nimport './FormattedId.scss';\n\nconst block = cn('table-formatters-id');\n\nFormattedId.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n};\n\nexport default function FormattedId({id}) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n return (\n <div\n className={block({hovered: hovered ? 'yes' : 'no'})}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <span className=\"elements-ellipsis\">{id}</span>\n {hovered && (\n <div className={block('clipboard-button-wrapper')}>\n <ClipboardButton view=\"flat-secondary\" size=\"m\" text={id} />\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../common/hammer';\n\n// TODO: here are defiend reworked components from /templates/utils, drop original functions once we switch to\n// new components everywhere\nexport {default as FormattedText} from './FormattedText';\nexport {default as FormattedLink} from './FormattedLink';\nexport {default as FormattedTextOrLink} from './FormattedTextOrLink';\nexport {default as FormattedId} from './FormattedId/FormattedId';\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsFloatNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item), {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n}\n\nexport function printColumnAsProgress(item, columnName) {\n const column = this.props.columns[columnName];\n return <Progress {...column.get(item)} />;\n}\n\nexport function printColumnAsTimeDuration(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.props.columns[columnName];\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport React, {useCallback, useMemo} from 'react';\nimport {DialogField, FormApi, YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport {Button, ButtonProps} from '@gravity-ui/uikit';\nimport PermissionsControl from '../RequestPermissions/PermissionsControl/PermissionsControl';\n\nimport withVisible, {WithVisibleProps} from '../../../hocs/withVisible';\n\nimport './RequestPermissions.scss';\nimport {YTError} from '../../../types';\nimport {AclMode, INHERITANCE_MODE_TYPES, IdmObjectType} from '../../../constants/acl';\n\nimport UIFactory from '../../../UIFactory';\nimport hammer from '../../../common/hammer';\nimport map_ from 'lodash/map';\n\nimport {docsUrl} from '../../../config';\nimport {makeLink} from '../../../utils/utils';\nimport {AclColumnGroup, IdmKindType} from '../../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../../utils/acl/acl-api';\nimport {PermissionToRequest} from '../../../store/actions/acl';\n\nconst block = cn('acl-request-permissions');\n\nconst FLAG_NAME_PREFIX = '##_flag_';\n\nexport type RequestPermissionsFieldsNames =\n | 'cluster'\n | 'path'\n | 'permissions'\n | 'subjects'\n | 'duration'\n | 'commentHeader'\n | 'comment'\n | 'inheritance_mode'\n | 'permissionFlags'\n | 'readColumns'\n | 'readColumnGroup';\n\nexport interface Props extends WithVisibleProps {\n className?: string;\n buttonClassName?: string;\n buttonProps?: ButtonProps;\n cluster?: string;\n normalizedPoolTree?: string;\n path: string;\n idmKind: IdmKindType;\n requestPermissions: (params: {\n values: PermissionToRequest;\n idmKind: IdmKindType;\n }) => Promise<void>;\n cancelRequestPermissions: (params: {idmKind: IdmKindType}) => unknown;\n error?: YTError;\n onSuccess?: () => void;\n columnGroups?: Array<AclColumnGroup>;\n aclMode?: AclMode;\n}\n\ntype FormValues = {\n path: string;\n cluster: string;\n permissions: {[x: string]: Array<YTPermissionTypeUI>} | null;\n subjects: Array<{\n value: string;\n type: 'users' | 'groups' | 'app';\n text?: string;\n }>;\n inheritance_mode?: string;\n duration?: Date;\n comment?: string;\n readColumnGroup?: string;\n} & Record<`${typeof FLAG_NAME_PREFIX}${string}`, boolean>;\n\nconst SHORT_TITLE: Partial<Record<IdmKindType, string>> = {\n access_control_object: 'ACO',\n};\n\nconst COLUMNS_FELDS = new Set<RequestPermissionsFieldsNames>(['readColumns', 'readColumnGroup']);\n\nfunction RequestPermissions(props: Props) {\n const {\n aclMode,\n visible,\n handleShow,\n handleClose,\n className,\n buttonClassName,\n path,\n idmKind,\n requestPermissions,\n cancelRequestPermissions,\n error,\n cluster,\n columnGroups,\n buttonProps,\n /*denyColumns,*/\n } = props;\n\n const onClose = useCallback(() => {\n handleClose();\n cancelRequestPermissions({idmKind});\n }, [handleClose, cancelRequestPermissions, idmKind]);\n\n const {requestPermissionsFields, requestPermissionsFlags = {}} = UIFactory.getAclApi();\n\n const onAdd = useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n const values = {...form.getState().values};\n const permissionFlags: Record<string, boolean> = {};\n Object.keys(requestPermissionsFlags).forEach((k) => {\n const key = `${FLAG_NAME_PREFIX}${k}` as keyof typeof values;\n permissionFlags[k] = Boolean(values[key]);\n\n delete values[key];\n });\n return requestPermissions({\n values: {...values, permissionFlags},\n idmKind,\n });\n },\n [requestPermissions, idmKind],\n );\n\n const currentCaption = `Current ${SHORT_TITLE[idmKind] ?? idmKind}`;\n const {permissionsToRequest, getAvailablePermissions} =\n UIFactory.getAclPermissionsSettings()[idmKind];\n\n const [availablePermissions, setAvailablePermissions] = React.useState<\n typeof permissionsToRequest | undefined\n >(undefined);\n\n const onShow = useCallback(async () => {\n try {\n const value = await getAvailablePermissions?.({path});\n setAvailablePermissions(value);\n } catch {\n setAvailablePermissions(undefined);\n } finally {\n handleShow();\n }\n }, [path, handleShow, getAvailablePermissions]);\n\n const firstItemDisabled = idmKind === IdmObjectType.ACCOUNT;\n\n const choices = availablePermissions ?? permissionsToRequest;\n const permissions = firstItemDisabled ? valueWithCheckedFirstChoice(choices) : null;\n\n const availableFields: Record<\n RequestPermissionsFieldsNames,\n Omit<DialogField, 'name'>\n > = useMemo(() => {\n const disabledChoices = idmKind === IdmObjectType.ACCOUNT ? [0] : undefined;\n return {\n cluster: {\n type: 'plain',\n caption: 'Cluster',\n extras: {\n className: block('cluster'),\n },\n },\n path: {\n type: 'text',\n caption: currentCaption,\n extras: {\n disabled: !error,\n },\n },\n permissions: {\n type: 'permissions',\n caption: 'Permissions',\n required: true,\n tooltip: (\n <>\n {docsUrl(\n makeLink(UIFactory.docsUrls['acl:permissions'], 'Permissions types'),\n 'Permissions types',\n )}\n </>\n ),\n extras: {\n choices: choices,\n disabledChoices,\n },\n },\n readColumns: {\n type: 'acl-columns',\n caption: 'Read columns',\n required: true,\n },\n readColumnGroup: {\n type: 'acl-column-group',\n caption: 'Read column group',\n required: true,\n extras: {\n columnGroups,\n },\n },\n subjects: {\n type: 'acl-subjects',\n caption: 'Subjects',\n required: false,\n extras: {\n placeholder: 'Enter group name, user name or login...',\n allowedTypes: ['users', 'groups', 'app'],\n },\n },\n duration: {\n type: 'before-date',\n caption: 'Duration',\n },\n commentHeader: {\n type: 'block',\n className: block('modal-comments-header'),\n extras: {\n children: (\n <React.Fragment>\n <div className={'is-dialog__label'}>Comment</div>\n <div className={block('comment-notice')}>\n Teams and people can be requested through the IDM after the access\n group is created. If you have a more complex case please describe it\n in the comments.\n </div>\n </React.Fragment>\n ),\n },\n },\n comment: {\n type: 'textarea',\n className: block('modal-comments'),\n },\n inheritance_mode: {\n type: 'yt-select-single',\n caption: 'Inheritance mode',\n extras: {\n items: map_(INHERITANCE_MODE_TYPES, (value) => ({\n value: value,\n text: hammer.format['ReadableField'](value),\n })),\n hideClear: true,\n hideFilter: true,\n with: 'max',\n },\n },\n permissionFlags: {\n type: 'block',\n caption: 'Permission flags',\n extras: {children: 'Not implemented'},\n },\n };\n }, [choices, currentCaption, error, idmKind]);\n\n const useColumns = aclMode === AclMode.COLUMN_GROUPS_PERMISSISONS;\n\n const dialogFields = useMemo(() => {\n let flagsIndex = -1;\n const res = requestPermissionsFields.reduce(\n (acc, field) => {\n const allowField = useColumns ? field !== 'permissions' : !COLUMNS_FELDS.has(field);\n if (!allowField) {\n return acc;\n }\n\n if (field === 'permissionFlags') {\n flagsIndex = acc.length;\n }\n\n acc.push({\n ...availableFields[field],\n name: field,\n } as DialogField<FormValues>);\n\n return acc;\n },\n [] as Array<DialogField<FormValues>>,\n );\n\n if (flagsIndex !== -1) {\n const flags: typeof res = Object.keys(requestPermissionsFlags ?? []).map((key) => {\n const flagInfo = requestPermissionsFlags[key];\n return {\n type: 'tumbler',\n caption: hammer.format.ReadableField(flagInfo?.title),\n name: `${FLAG_NAME_PREFIX}${key}`,\n tooltip: flagInfo.help,\n initialValue: flagInfo.initialValue,\n };\n });\n res.splice(flagsIndex, 1, ...flags);\n }\n return res;\n }, [availableFields, requestPermissionsFields, useColumns]);\n\n const title = useColumns ? 'Request column permissions' : 'Request permissions';\n\n return !choices?.length ? null : (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <Button className={buttonClassName} view=\"action\" {...buttonProps} onClick={onShow}>\n {title}\n </Button>\n\n <YTDFDialog<FormValues>\n pristineSubmittable\n onClose={onClose}\n className={block('modal')}\n visible={Boolean(visible)}\n onAdd={onAdd}\n headerProps={{\n title,\n }}\n initialValues={{\n path,\n permissions,\n cluster,\n inheritance_mode: INHERITANCE_MODE_TYPES.OBJECT_AND_DESCENDANTS,\n }}\n validate={(values) => {\n const subjects = values.subjects;\n const validationError: Record<\n keyof Pick<FormValues, 'subjects'>,\n string | undefined\n > = {\n subjects: undefined,\n };\n\n if (!subjects.length) {\n const errorMessage = 'At least one subject should be selected.';\n validationError.subjects = errorMessage;\n }\n\n return validationError;\n }}\n fields={[...dialogFields, ...makeErrorFields([error])]}\n />\n </div>\n </ErrorBoundary>\n );\n}\n\nexport default compose(withVisible)(RequestPermissions) as unknown as React.ComponentType<\n Omit<Props, keyof WithVisibleProps>\n>;\n\nfunction valueWithCheckedFirstChoice(choices: string | any[]) {\n if (!choices || choices.length < 1) {\n return {};\n }\n\n return {\n [PermissionsControl.getChoiceName(choices[0])]: choices[0],\n };\n}\n","import type {RootState} from '../../reducers';\n\nexport const selectCellPreviewVisible = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.visible;\nexport const selectCellPreviewLoading = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.loading;\nexport const selectCellPreviewData = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.data;\nexport const selectCellPreviewYtCliDownloadCommand = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.ytCliDownloadCommand;\nexport const selectCellPreviewNoticeText = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.noticeText;\nexport const selectErrorPreviewCellPath = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.error;\n","import React from 'react';\n\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Flex, Text} from '@gravity-ui/uikit';\n\nimport SimpleModal from '../../components/Modal/SimpleModal';\nimport {\n selectCellPreviewData,\n selectCellPreviewLoading,\n selectCellPreviewNoticeText,\n selectCellPreviewVisible,\n selectCellPreviewYtCliDownloadCommand,\n selectErrorPreviewCellPath,\n} from '../../store/selectors/modals/cell-preview';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport block from 'bem-cn-lite';\n\nimport Yson from '../../components/Yson/Yson';\nimport Error from '../../components/Error/Error';\nimport {type YsonSettings, getPreviewCellYsonSettings} from '../../store/selectors/thor/unipika';\nimport {closeCellPreviewAndCancelRequest} from '../../store/actions/modals/cell-preview';\n\nimport './CellPreviewModal.scss';\n\nconst b = block('cell-preview-modal');\n\nexport const CellPreviewModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const loading = useSelector(selectCellPreviewLoading);\n const data = useSelector(selectCellPreviewData);\n const visible = useSelector(selectCellPreviewVisible);\n const ytCliDownloadCommand = useSelector(selectCellPreviewYtCliDownloadCommand);\n const noticeText = useSelector(selectCellPreviewNoticeText);\n const error = useSelector(selectErrorPreviewCellPath);\n\n const unipikaSettings = useSelector(getPreviewCellYsonSettings);\n\n return (\n <SimpleModal\n title=\"Preview\"\n visible={visible}\n loading={loading}\n onCancel={() => dispatch(closeCellPreviewAndCancelRequest())}\n wrapperClassName={b('wrapper')}\n >\n <Flex\n qa=\"cell-preview-modal-content\"\n className={b('content')}\n gap={2}\n direction=\"column\"\n >\n <Flex gap={2} direction=\"column\">\n <Text variant=\"subheader-3\" color=\"secondary\">\n {noticeText}\n </Text>\n {ytCliDownloadCommand ? (\n <code className={b('command-wrapper')}>\n <div className={b('command')}>\n <div\n data-qa=\"cell-preview-command\"\n className={b('command-content')}\n title={ytCliDownloadCommand}\n >\n {ytCliDownloadCommand}\n </div>\n <ClipboardButton\n view={'flat-secondary'}\n text={ytCliDownloadCommand}\n size={'s'}\n />\n </div>\n </code>\n ) : null}\n </Flex>\n {error ? (\n <Error error={error} />\n ) : (\n <PreviewContent data={data} unipikaSettings={unipikaSettings} />\n )}\n </Flex>\n </SimpleModal>\n );\n};\n\ntype PreviewContentProps = {\n data: {$type: string; $value: any} | undefined;\n unipikaSettings: YsonSettings;\n};\n\nfunction PreviewContent(props: PreviewContentProps) {\n const {data, unipikaSettings} = props;\n\n switch (data?.$type) {\n case 'yql.string':\n case 'yql.json':\n return <pre className=\"elements-code\">{data.$value}</pre>;\n default:\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}\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}\n\nexport function Host({\n address = '',\n prefix,\n className,\n copyBtnClassName,\n onClick,\n useText,\n asTabletNode,\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},\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 Link from '../../components/Link/Link';\nimport {AccountsTab} from '../../constants/accounts/accounts';\nimport {Page} from '../../constants';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../../store/selectors/global';\nimport hammer from '../../common/hammer';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\ninterface Props {\n className?: string;\n account?: string;\n cluster?: string;\n\n inline?: boolean;\n}\n\nexport function genAccountsUrl(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}?account=${account}`;\n}\n\nexport default function AccountLink(props: Props) {\n const {cluster: propsCluster, account, className, inline} = props;\n const currentCluster = useSelector(getCluster);\n const cluster = propsCluster || currentCluster;\n\n return (\n <Tooltip\n ellipsis={inline}\n className={className}\n content={\n !account ? null : (\n <>\n <ClipboardButton text={account} view=\"flat-secondary\" /> {account}\n </>\n )\n }\n >\n {account ? (\n <Link theme={'primary'} routed url={genAccountsUrl(cluster, account)}>\n {account}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n )}\n </Tooltip>\n );\n}\n","import {ErrorMessage, NetworkCode} from '../../constants/navigation/modals/path-editing-popup';\n\nimport filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\n\nexport function getOnlyFolders(suggestions) {\n return filter_(suggestions, (child) => child.type === 'map_node');\n}\n\nfunction getCorrectInnerError(innerErrors = []) {\n const correctErrorCodes = values_(NetworkCode);\n\n return find_(innerErrors, (error) => {\n return some_(correctErrorCodes, (code) => code === error.code);\n });\n}\n\nexport function prepareErrorMessage(error) {\n return (\n ErrorMessage[error.code] ||\n ErrorMessage[getCorrectInnerError(error.inner_errors)?.code] ||\n ErrorMessage['DEFAULT']\n );\n}\n","import {prepareErrorMessage} from '../../../../utils/navigation/path-editing-popup';\nimport {\n HIDE_ERROR,\n SET_PATH,\n SHOW_ERROR,\n} from '../../../../constants/navigation/modals/path-editing-popup';\n\nexport function showErrorInModal(error) {\n const message = prepareErrorMessage(error);\n\n return {\n type: SHOW_ERROR,\n data: {message, error},\n };\n}\n\nexport function setPath(newPath) {\n return {\n type: SET_PATH,\n data: {newPath},\n };\n}\n\nexport function hideError() {\n return {\n type: HIDE_ERROR,\n };\n}\n\nexport function openEditingPopup(objectPath, path, type, multipleMode = false, items = []) {\n return {\n type,\n data: {path, objectPath, items, multipleMode},\n };\n}\n\nexport function closeEditingPopup(type) {\n return {type};\n}\n","import React from 'react';\n\nimport {getDisplayName} from '../../../utils';\nimport {useHotkeysScope} from '../../../hooks/use-hotkeysjs-scope';\n\nexport default function withScope(scope: string) {\n return function wrap<P>(Component: React.ComponentType<P>) {\n type Props = P & {visible: true};\n const ResComponent: React.FC<Props> = function WithScope(props) {\n useHotkeysScope(scope, props.visible);\n return <Component {...props} />;\n };\n\n ResComponent.displayName = `WithScope(${getDisplayName(Component)})`;\n return ResComponent;\n };\n}\n","import key from 'hotkeys-js';\nimport React from 'react';\n\nexport function useHotkeysScope(scope: string, visible: boolean) {\n React.useEffect(() => {\n if (!visible) {\n return undefined;\n }\n\n const prevScope = key.getScope();\n key.setScope(scope);\n\n return () => {\n key.setScope(prevScope);\n };\n }, [scope, visible]);\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {compose} from 'redux';\n\nimport ErrorMessage from '../../../../components/ErrorMessage/ErrorMessage';\nimport PathEditor from '../../../../containers/PathEditor/PathEditor';\nimport Modal from '../../../../components/Modal/Modal';\nimport Error from '../../../../components/Error/Error';\n\nimport {hideError, setPath} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {getOnlyFolders} from '../../../../utils/navigation/path-editing-popup';\nimport withScope from '../../../../hocs/components/Modal/withScope';\n\nimport './PathEditorModal.scss';\n\nconst b = block('path-editor-modal');\n\nclass PathEditorModal extends Component {\n static propTypes = {\n // from parent component\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n placeholder: PropTypes.string.isRequired,\n modalTitle: PropTypes.string.isRequired,\n\n visible: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n inProcess: PropTypes.bool.isRequired,\n errorMessage: PropTypes.string.isRequired,\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n editingPath: PropTypes.string.isRequired,\n options: PropTypes.node,\n\n onConfirmButtonClick: PropTypes.func.isRequired,\n onCancelButtonClick: PropTypes.func.isRequired,\n\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onApply: PropTypes.func,\n onFocus: PropTypes.func,\n\n // from connect\n setPath: PropTypes.func.isRequired,\n hideError: PropTypes.func.isRequired,\n };\n\n _handleBlur(newPath) {\n this.props.setPath(newPath);\n }\n _handleFocus(newPath) {\n this.props.setPath(newPath);\n }\n _handleApply(newPath) {\n this.props.setPath(newPath);\n }\n _handleChange(newPath) {\n this.props.setPath(newPath);\n this.props.hideError();\n }\n\n handleBlur = (newPath) => {\n const {onBlur} = this.props;\n\n if (typeof onBlur === 'function') {\n onBlur(newPath);\n } else {\n this._handleBlur(newPath);\n }\n };\n handleFocus = (newPath) => {\n const {onFocus} = this.props;\n\n if (typeof onFocus === 'function') {\n onFocus(newPath);\n } else {\n this._handleFocus(newPath);\n }\n };\n handleChange = (newPath) => {\n const {onChange} = this.props;\n\n if (typeof onChange === 'function') {\n onChange(newPath);\n } else {\n this._handleChange(newPath);\n }\n };\n handleApply = (newPath) => {\n const {onApply} = this.props;\n\n if (typeof onApply === 'function') {\n onApply(newPath);\n } else {\n this._handleApply(newPath);\n }\n };\n\n renderContent() {\n const {\n editingPath,\n inProcess,\n placeholder,\n title,\n description,\n showError,\n errorMessage,\n error,\n options,\n } = this.props;\n\n return (\n <div className={b()}>\n <strong>{title}</strong>\n <p className={b('text')}>{description}</p>\n\n <PathEditor\n placeholder={placeholder}\n customFilter={getOnlyFolders}\n onChange={this.handleChange}\n onApply={this.handleApply}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n defaultPath={editingPath}\n disabled={inProcess}\n showErrors={false}\n autoFocus\n hasClear\n />\n\n {options}\n\n {showError && (\n <div className={b('error-wrapper')}>\n <ErrorMessage message={errorMessage} />\n <Error error={error} />\n </div>\n )}\n </div>\n );\n }\n\n render() {\n const {visible, inProcess, showError, modalTitle} = this.props;\n\n const content = visible && this.renderContent();\n const isDisabled = () => inProcess || showError;\n\n return (\n <Modal\n onConfirm={this.props.onConfirmButtonClick}\n onCancel={this.props.onCancelButtonClick}\n isConfirmDisabled={isDisabled}\n confirmText=\"Confirm\"\n loading={inProcess}\n title={modalTitle}\n content={content}\n visible={visible}\n />\n );\n }\n}\n\nexport default compose(\n withScope('path-editor-modal'),\n connect(null, {setPath, hideError}),\n)(PathEditorModal);\n","import React from 'react';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {COPY_OBJECT} from '../../../../constants/navigation/modals/copy-object';\nimport {showErrorInModal} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {prepareDestinationPath, preparePath} from '../../../../utils/navigation';\nimport CancelHelper from '../../../../utils/cancel-helper';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {wrapBatchPromise} from '../../../../utils/utils';\nimport {Dispatch} from 'redux';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\ninterface CopyOptions {\n preserve_account?: boolean;\n}\n\nfunction copyObjectIntoDirectory(from: string, to: string, {preserve_account}: 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 preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction copyObjectWithRename(from: string, to: string, {preserve_account}: CopyOptions) {\n return yt.v3.copy({\n parameters: {\n source_path: preparePath(from),\n destination_path: to,\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction copySingleObject(from: string, to: string, {preserve_account}: CopyOptions) {\n const lastChar = to.charAt(to.length - 1);\n\n if (lastChar === '/') {\n return copyObjectIntoDirectory(from, to, {preserve_account});\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, {preserve_account})\n : copyObjectWithRename(from, to, {preserve_account});\n });\n}\n\nfunction copyObjects(\n items: Array<{path: string; titleUnquoted: string}>,\n copyingPath: string,\n {preserve_account}: CopyOptions,\n) {\n if (items.length === 1) {\n const [{path}] = items;\n return copySingleObject(path, copyingPath, {preserve_account});\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 preserve_account,\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 {preserve_account}: 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, {preserve_account})\n : copySingleObject(objectPath, copyingPath, {preserve_account}),\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 {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 {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport {Checkbox} from '@gravity-ui/uikit';\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 };\n\n state = {preserve_account: 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} = this.state;\n\n copyObject(objectPath, toPath, updateView, multipleMode, items, {preserve_account}).then(\n () => this.resetOptions(),\n );\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 <Checkbox onUpdate={this.onUpdatePreserveAccount}>Preserve account</Checkbox>;\n }\n\n resetOptions() {\n this.onUpdatePreserveAccount(false);\n }\n\n onUpdatePreserveAccount = (preserve_account) => {\n this.setState({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};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CopyObjectModal);\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {Dispatch} from 'redux';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n CREATE_DIRECTORY,\n CREATE_MESSAGE,\n} from '../../../../constants/navigation/modals/create-directory';\nimport {\n hideError,\n showErrorInModal,\n} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {RootState} from '../../../../store/reducers';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\nexport function createDirectory(\n {path, recursive}: {path: string; recursive?: boolean},\n onSuccess: () => void,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: CREATE_DIRECTORY.REQUEST});\n\n return yt.v3\n .create({\n parameters: {\n path: path,\n recursive,\n type: 'map_node',\n },\n cancellation: requests.saveCancelToken,\n })\n .then(() => {\n dispatch({type: CREATE_DIRECTORY.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess();\n }\n\n toaster.add({\n name: CREATE_MESSAGE,\n autoHiding: 10000,\n theme: 'success',\n title: CREATE_MESSAGE,\n content: <Link url={`navigation?path=${path}`}>{path}</Link>,\n });\n })\n .catch((error: any) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: CREATE_DIRECTORY.CANCELLED,\n });\n } else {\n dispatch({type: CREATE_DIRECTORY.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n });\n };\n}\n\nexport function clearCreateDirectoryError(): ThunkAction<void, RootState, unknown, any> {\n return (dispatch: Dispatch) => {\n dispatch(hideError());\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_CREATE_DIRECTORY_POPUP} from '../../../../../constants/navigation/modals/create-directory';\nimport {\n abortRequests,\n clearCreateDirectoryError,\n createDirectory,\n} from '../../../../../store/actions/navigation/modals/create-directory';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport {RootState} from '../../../../../store/reducers';\nimport {Checkbox} from '@gravity-ui/uikit';\n\ntype State = {\n recursive: boolean;\n};\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass CreateDirectoryModal extends React.Component<ReduxProps> {\n state: State = {\n recursive: false,\n };\n\n render() {\n const {popupVisible, creating, creatingPath, showError, errorMessage, error} = this.props;\n\n const modalTitle = 'Create Directory';\n const title = 'Enter a name for the new directory.';\n const description = 'The new object will be created at the specified path.';\n const placeholder = 'Enter a new directory path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n editingPath={creatingPath}\n errorMessage={errorMessage}\n error={error}\n visible={popupVisible}\n showError={showError}\n inProcess={creating}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n options={\n <Checkbox checked={this.state.recursive} onUpdate={this.onRecursiveUpdate}>\n Make parent directories as needed\n </Checkbox>\n }\n />\n );\n }\n\n onRecursiveUpdate = (recursive: boolean) => {\n this.setState({recursive});\n this.props.clearCreateDirectoryError?.();\n };\n\n handleConfirmButtonClick = () => {\n const {creatingPath, createDirectory, updateView} = this.props;\n\n createDirectory({path: creatingPath, recursive: this.state.recursive}, updateView);\n };\n\n handleCancelButtonClick = () => {\n this.props.closeEditingPopup(CLOSE_CREATE_DIRECTORY_POPUP);\n this.props.abortRequests();\n };\n\n handleApply = (newPath: string) => {\n const {creating, showError, createDirectory, updateView} = this.props;\n const disabled = creating || showError;\n\n if (!disabled) {\n createDirectory({path: newPath, recursive: this.state.recursive}, updateView);\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {creatingPath, popupVisible, showError, creating, errorMessage, error} =\n state.navigation.modals.createDirectory;\n\n return {\n popupVisible,\n errorMessage,\n error,\n showError,\n creating,\n creatingPath: creatingPath as string,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n abortRequests,\n createDirectory,\n closeEditingPopup,\n clearCreateDirectoryError,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(CreateDirectoryModal);\n","import React from 'react';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {MOVE_OBJECT} from '../../../../constants/navigation/modals/move-object';\nimport {showErrorInModal} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {prepareDestinationPath, preparePath} from '../../../../utils/navigation';\nimport CancelHelper from '../../../../utils/cancel-helper';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {rumLogError} from '../../../../rum/rum-counter';\nimport {wrapBatchPromise} from '../../../../utils/utils';\nimport {Dispatch} from 'redux';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\ninterface MoveOptions {\n preserve_account?: boolean;\n}\n\nfunction moveObjectIntoDirectory(from: string, to: string, {preserve_account}: MoveOptions) {\n const parts = from.split('/');\n const name = parts[parts.length - 1];\n return yt.v3.move({\n parameters: {\n source_path: preparePath(from),\n destination_path: prepareDestinationPath(to, name),\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction moveObjectWithRename(from: string, to: string, {preserve_account}: MoveOptions) {\n return yt.v3.move({\n parameters: {\n source_path: preparePath(from),\n destination_path: to,\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction moveSingleObject(from: string, to: string, options: MoveOptions): Promise<string> {\n const lastChar = to.charAt(to.length - 1);\n\n if (lastChar === '/') {\n return moveObjectIntoDirectory(from, to, options);\n }\n\n return yt.v3\n .exists({parameters: {path: `${to}&`}, cancellation: requests.saveCancelToken})\n .then((exist: boolean) => {\n return exist\n ? moveObjectIntoDirectory(from, to, options)\n : moveObjectWithRename(from, to, options);\n });\n}\n\nfunction moveObjects(\n items: Array<{path: string; titleUnquoted: string}>,\n to: string,\n {preserve_account}: MoveOptions,\n) {\n if (items.length === 1) {\n const [{path}] = items;\n return moveSingleObject(path, to, {preserve_account});\n }\n\n return yt.v3.startTransaction({}).then((id: string) => {\n const moveRequests = map_(items, (node) => {\n return {\n command: 'move' as const,\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: prepareDestinationPath(to, node.titleUnquoted),\n preserve_account,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMove, moveRequests, {\n errorTitle: 'Failed to move the object(s)',\n saveCancelSourceCb: requests.saveCancelToken,\n }),\n 'Failed to move the object(s)',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3.abortTransaction({transaction_id: id}).then(() => Promise.reject(err)),\n );\n });\n}\n\nfunction resolveEntityPath(entityId: string): Promise<string> {\n try {\n return yt.v3.get({\n path: `#${entityId}/@path`,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n });\n } catch (e) {\n rumLogError(e as Error);\n }\n return Promise.resolve('');\n}\n\nexport function moveObject(\n objectPath: string,\n movedPath: string,\n onSuccess: (destFullPath: string) => void,\n multipleMode: boolean,\n items: Array<{path: string; titleUnquoted: string}>,\n {preserve_account}: MoveOptions,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: MOVE_OBJECT.REQUEST});\n\n return Promise.resolve()\n .then(() =>\n multipleMode\n ? moveObjects(items, movedPath, {preserve_account}).then(() => movedPath)\n : moveSingleObject(objectPath, movedPath, {preserve_account}).then((value) =>\n resolveEntityPath(JSON.parse(value)),\n ),\n )\n .then((result) => {\n dispatch({type: MOVE_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess(result);\n }\n\n toaster.add({\n name: 'move',\n autoHiding: 10000,\n theme: 'success',\n title: `Object${multipleMode ? 's' : ''} was successfully moved`,\n content: <Link url={`navigation?path=${result}`}>{result}</Link>,\n });\n return result;\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: MOVE_OBJECT.CANCELLED,\n });\n } else {\n dispatch({type: MOVE_OBJECT.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_MOVE_OBJECT_POPUP} from '../../../../../constants/navigation/modals/move-object';\nimport {\n abortRequests,\n moveObject,\n} from '../../../../../store/actions/navigation/modals/move-object';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updatePath, updateView} from '../../../../../store/actions/navigation';\nimport {Checkbox} from '@gravity-ui/uikit';\nimport {getPath} from '../../../../../store/selectors/navigation';\n\nclass MoveObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n afterMoveStrategy: PropTypes.oneOf(['refresh', 'redirect']),\n items: PropTypes.array.isRequired,\n errorMessage: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n multipleMode: PropTypes.bool.isRequired,\n movedPath: PropTypes.string.isRequired,\n showError: PropTypes.bool.isRequired,\n renaming: PropTypes.bool.isRequired,\n\n closeEditingPopup: PropTypes.func.isRequired,\n abortRequests: PropTypes.func.isRequired,\n moveObject: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n updatePath: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n afterMoveStrategy: 'refresh',\n };\n\n state = {preserve_account: false};\n\n handleConfirmButtonClick = () => {\n const {movedPath} = this.props;\n this.doMove(movedPath);\n };\n\n handleCancelButtonClick = () => {\n const {closeEditingPopup, abortRequests} = this.props;\n\n this.resetOptions();\n closeEditingPopup(CLOSE_MOVE_OBJECT_POPUP);\n abortRequests();\n };\n\n handleApply = (newPath) => {\n const {renaming, showError} = this.props;\n const disabled = renaming || showError;\n\n if (!disabled) {\n this.doMove(newPath);\n }\n };\n\n doMove(toPath) {\n const {\n moveObject,\n objectPath,\n afterMoveStrategy,\n updateView,\n updatePath,\n multipleMode,\n items,\n } = this.props;\n const {preserve_account} = this.state;\n\n const onSucess = (destinationPath) => {\n if (destinationPath && afterMoveStrategy === 'redirect') {\n updatePath(destinationPath);\n return;\n }\n updateView();\n };\n\n moveObject(objectPath, toPath, onSucess, multipleMode, items, {\n preserve_account,\n }).then(() => this.resetOptions());\n }\n\n render() {\n const {popupVisible, renaming, movedPath, showError, errorMessage, error, multipleMode} =\n this.props;\n\n const modalTitle = 'Move';\n const title = multipleMode\n ? 'Enter a new path for objects.'\n : 'Enter a new path for the object.';\n const description = multipleMode\n ? 'Objects will be moved with the specified path.'\n : 'The object will be moved with the specified path.';\n const placeholder = 'Enter a new object path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n editingPath={movedPath}\n errorMessage={errorMessage}\n error={error}\n visible={popupVisible}\n showError={showError}\n inProcess={renaming}\n options={this.renderOptions()}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n\n renderOptions() {\n return (\n <Checkbox\n title={'Preserve account'}\n checked={this.state.preserve_account}\n onUpdate={this.onUpdatePreserveAccount}\n >\n Preserve account\n </Checkbox>\n );\n }\n\n resetOptions() {\n this.onUpdatePreserveAccount(false);\n }\n\n onUpdatePreserveAccount = (preserve_account) => this.setState({preserve_account});\n}\n\nconst mapStateToProps = (state) => {\n const {navigation} = state;\n const path = getPath(state);\n const {\n error,\n errorMessage,\n popupVisible,\n showError,\n renaming,\n movedPath,\n objectPath,\n multipleMode,\n items,\n } = navigation.modals.moveObject;\n\n const entityPath = !multipleMode ? objectPath : items.length !== 1 ? undefined : items[0]?.path;\n\n return {\n error,\n errorMessage,\n popupVisible,\n showError,\n renaming,\n movedPath,\n objectPath,\n multipleMode,\n items,\n afterMoveStrategy: entityPath === path ? 'redirect' : 'refresh',\n };\n};\n\nconst mapDispatchToProps = {\n closeEditingPopup,\n abortRequests,\n moveObject,\n updateView,\n updatePath,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MoveObjectModal);\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {showErrorPopup} from '../../utils/utils';\nimport {INITIAL_STEP} from '../../constants/navigation/modals/restore-object';\n\nfunction getNextObjectName(initialPath, step = INITIAL_STEP) {\n return `${initialPath}(${step})`;\n}\n\nfunction checkPathExists(initialPath, path, step = INITIAL_STEP) {\n return yt.v3\n .exists({path})\n .then((isExists) => {\n if (isExists) {\n const newPath = getNextObjectName(initialPath, ++step);\n\n return checkPathExists(initialPath, newPath, step);\n }\n\n return path;\n })\n .catch(showErrorPopup);\n}\n\nexport function findCorrectObjectName(initialPath) {\n const path = getNextObjectName(initialPath);\n\n return checkPathExists(initialPath, path);\n}\n\nexport function inTrash(path) {\n return path.startsWith('//tmp/trash/') || path.startsWith('//trash/');\n}\n","import {\n OPEN_RESTORE_POPUP,\n RESTORE_OBJECT,\n} from '../../../../constants/navigation/modals/restore-object';\nimport {\n openEditingPopup,\n showErrorInModal,\n} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {findCorrectObjectName} from '../../../../utils/navigation/restore-object';\nimport {NetworkCode} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {preparePath} from '../../../../utils/navigation';\nimport Link from '../../../../components/Link/Link';\nimport {showErrorPopup, wrapBatchPromise} from '../../../../utils/utils';\nimport {updateView} from '../index';\nimport ypath from '../../../../common/thor/ypath';\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport React from 'react';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\n\nconst toaster = new Toaster();\n\nexport function restoreObjects(items) {\n return (dispatch) => {\n dispatch({type: RESTORE_OBJECT.REQUEST});\n return yt.v3\n .startTransaction({})\n .then((id) => {\n const requests = map_(items, (node) => {\n const restorePath = ypath.getValue(node, '/@_restore_path');\n return {\n command: 'move',\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: restorePath,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationRestorePath, requests, {\n errorTitle: 'Failed to get restore path',\n }),\n 'Failed to get restore path',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3\n .abortTransaction({transaction_id: id})\n .then(() => Promise.reject(err)),\n );\n })\n .then(() => {\n dispatch({type: RESTORE_OBJECT.SUCCESS});\n dispatch(updateView());\n\n toaster.add({\n theme: 'success',\n name: 'restore objects',\n timeout: 10000,\n title: 'Objects restored',\n content: 'Objects have been successfully restored',\n });\n })\n .catch((err) => {\n dispatch({type: RESTORE_OBJECT.FAILURE});\n\n toaster.add({\n name: 'restore objects',\n theme: 'danger',\n autoHiding: false,\n title: 'Could not restore objects.',\n content: err?.message || 'Oops, something went wrong',\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n });\n };\n}\n\nexport function restoreObject(objectPath, restorePath, onSuccess) {\n return (dispatch, getState) => {\n dispatch({type: RESTORE_OBJECT.REQUEST});\n\n return yt.v3\n .move({\n source_path: preparePath(objectPath),\n destination_path: restorePath,\n })\n .then(() => {\n dispatch({type: RESTORE_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess(objectPath, restorePath);\n }\n\n toaster.add({\n theme: 'success',\n name: 'restore object',\n timeout: 10000,\n title: 'Object restored',\n content: (\n <div>\n Object has been successfully{' '}\n <Link url={`navigation?path=${restorePath}`}>restored</Link>\n </div>\n ),\n });\n })\n .catch((error) => {\n dispatch({type: RESTORE_OBJECT.FAILURE});\n\n const isModalOpen = getState().navigation.modals.restoreObject.popupVisible;\n\n if (isModalOpen) {\n const action = showErrorInModal(error);\n\n dispatch(action);\n } else {\n switch (error.code) {\n case NetworkCode.EXIST: {\n findCorrectObjectName(restorePath)\n .then((correctRestorePath) => {\n const action = openEditingPopup(\n objectPath,\n correctRestorePath,\n OPEN_RESTORE_POPUP,\n );\n\n dispatch(action);\n })\n .catch(showErrorPopup);\n break;\n }\n case NetworkCode.INCORRECT_PATH: {\n const openAction = openEditingPopup(\n objectPath,\n restorePath,\n OPEN_RESTORE_POPUP,\n );\n const errorAction = showErrorInModal(error);\n\n dispatch(errorAction);\n dispatch(openAction);\n break;\n }\n default:\n showErrorPopup(error);\n break;\n }\n }\n });\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_RESTORE_POPUP} from '../../../../../constants/navigation/modals/restore-object';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {restoreObject} from '../../../../../store/actions/navigation/modals/restore-object';\nimport {updateView} from '../../../../../store/actions/navigation';\n\nclass RestoreObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n errorMessage: PropTypes.string.isRequired,\n restoredPath: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n restoring: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n\n updateView: PropTypes.func.isRequired,\n restoreObject: PropTypes.func.isRequired,\n closeEditingPopup: PropTypes.func.isRequired,\n };\n\n handleConfirmButtonClick = () => {\n const {restoreObject, objectPath, restoredPath, updateView} = this.props;\n\n restoreObject(objectPath, restoredPath, updateView);\n };\n\n handleCancelButtonClick = () => this.props.closeEditingPopup(CLOSE_RESTORE_POPUP);\n\n handleApply = (newPath) => {\n const {restoreObject, objectPath, showError, restoring, updateView} = this.props;\n const disabled = restoring || showError;\n\n if (!disabled) {\n restoreObject(objectPath, newPath, updateView);\n }\n };\n\n render() {\n const {popupVisible, restoring, restoredPath, showError, errorMessage, error} = this.props;\n\n const modalTitle = 'Restore';\n const title = 'Object with the same path is already exists.';\n const description =\n 'The object will be restored using a new path or you can change path to what you want.';\n const placeholder = 'Enter restored object path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n visible={popupVisible}\n inProcess={restoring}\n editingPath={restoredPath}\n showError={showError}\n errorMessage={errorMessage}\n error={error}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n}\n\nconst mapStateToProps = ({navigation}) => {\n const {restoredPath, objectPath, popupVisible, showError, restoring, errorMessage, error} =\n navigation.modals.restoreObject;\n\n return {\n restoredPath,\n restoring,\n popupVisible,\n errorMessage,\n error,\n showError,\n objectPath,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n restoreObject,\n closeEditingPopup,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RestoreObjectModal);\n","import React from 'react';\nimport {connect} from 'react-redux';\n\nimport {AccessContentAcl, NavigationAcl} from '../../../../containers/ACL';\nimport {getAclLoadState} from '../../../../store/selectors/acl';\nimport {getAttributes, getRawPath} from '../../../../store/selectors/navigation';\nimport {IdmObjectType} from '../../../../constants/acl';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nconst AclTabParams = {\n [IdmObjectType.PATH]: {\n rumType: RumMeasureTypes.NAVIGATION_TAB_ACL,\n Component: NavigationAcl,\n },\n [IdmObjectType.ACCESS_CONTROL_OBJECT]: {\n rumType: RumMeasureTypes.NAVIGATION_TAB_ACL_ACCESS,\n Component: AccessContentAcl,\n },\n};\n\nconst makeComponentWithRum = (idmKind) => {\n const {rumType, Component} = AclTabParams[idmKind];\n const AclTabComponent = (props) => {\n useAppRumMeasureStart({\n type: rumType,\n startDeps: [props.loadState],\n allowStart: ([loadState]) => !isFinalLoadingStatus(loadState),\n });\n\n useRumMeasureStop({\n type: rumType,\n stopDeps: [props.loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Component {...props} />;\n };\n return AclTabComponent;\n};\n\nconst makeMapStateToProps = (idmKind) => {\n return (state, props) => {\n const attributes = getAttributes(state);\n let {path} = attributes;\n if (!path) path = getRawPath(state);\n\n const isPrincipalACLtab =\n props.mode === 'content' && props.type === 'access_control_object';\n\n return {\n loadState: getAclLoadState(state, idmKind),\n path: path,\n idmKind: isPrincipalACLtab ? IdmObjectType.ACCESS_CONTROL_OBJECT : IdmObjectType.PATH,\n };\n };\n};\n\nfunction createACLTabComponent(idmKind) {\n const mapStateToProps = makeMapStateToProps(idmKind);\n const Component = makeComponentWithRum(idmKind);\n return connect(mapStateToProps)(Component);\n}\n\nexport default createACLTabComponent(IdmObjectType.PATH);\nexport const AccessAclTab = createACLTabComponent(IdmObjectType.ACCESS_CONTROL_OBJECT);\n","import {RumMeasureTypes} from '../../../../../rum/rum-measure-types';\nimport {RumWrapper} from '../../../../../rum/rum-wrap-api';\n\nexport function makeTableRumId({cluster, isDynamic}: {cluster: string; isDynamic: boolean}) {\n const measureId = isDynamic\n ? RumMeasureTypes.NAVIGATION_CONTENT_TABLE_DYNAMIC\n : RumMeasureTypes.NAVIGATION_CONTENT_TABLE_STATIC;\n return new RumWrapper(cluster, measureId);\n}\n","import axios from 'axios';\n\nimport map_ from 'lodash/map';\n\nimport {ThunkAction} from 'redux-thunk';\n\n// @ts-ignore\nimport unipika from '../../../../../common/thor/unipika';\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {\n SET_TABLE_COLUMNS_PRESET,\n SET_TABLE_COLUMNS_PRESET_HASH,\n} from '../../../../../constants/navigation/content/table';\nimport {showErrorPopup, wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getColumnsPreset,\n getColumnsPresetHash,\n getIsDynamic,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {RootState} from '../../../../../store/reducers';\nimport {YTApiId} from '../../../../../rum/rum-wrap-api';\nimport {makeTableRumId} from './table-rum-id';\n\nconst getColumnPresetEndpoint = (cluster: string) => `/api/table-column-preset/${cluster}`;\n\ntype ColumnPresetThunkAction = ThunkAction<any, RootState, any, any>;\n\nconst {utf8} = unipika.utils;\n\nexport function loadColumnPresetIfDefined(): ColumnPresetThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const hashToLoad = getColumnsPresetHash(state);\n if (!hashToLoad) {\n return Promise.resolve();\n }\n\n const {hash} = getColumnsPreset(state);\n if (hashToLoad === hash) {\n return Promise.resolve();\n }\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n\n return id\n .fetch(\n YTApiId.ui_loadColumnPreset,\n axios.request<{columns: Array<string>; hash: string}>({\n method: 'GET',\n url: `${getColumnPresetEndpoint(cluster)}/${hashToLoad}`,\n headers: {'content-type': 'application/json'},\n }),\n )\n .then(({data: {columns, hash}}) => {\n const presetHash = getColumnsPresetHash(getState());\n if (presetHash !== hash) {\n return;\n }\n\n dispatch(setTablePreset(columns, hash));\n })\n .catch((error) => {\n dispatch(setTablePresetError(error));\n\n new Toaster().add({\n theme: 'danger',\n name: 'loadColumnPreset',\n title: 'Failed to get preset of columns',\n content: error.message,\n actions: [\n {\n label: ' Details',\n onClick() {\n showErrorPopup(error?.response?.data || error);\n },\n },\n ],\n });\n\n return Promise.reject(error);\n });\n };\n}\n\nexport function saveColumnPreset(columnsEncoded: Array<string>, cluster: string): Promise<string> {\n const columns = map_(columnsEncoded, utf8.decode);\n return wrapApiPromiseByToaster(\n axios.request<string>({\n method: 'POST',\n url: getColumnPresetEndpoint(cluster),\n headers: {'content-type': 'application/json'},\n data: columns,\n }),\n {\n skipSuccessToast: true,\n toasterName: 'saveColumnPreset',\n errorContent: 'Failed to save preset of columns',\n },\n ).then((res) => {\n const hash = res.data;\n return hash;\n });\n}\n\nexport function setTablePresetHash(hash?: string) {\n return {\n type: SET_TABLE_COLUMNS_PRESET_HASH,\n data: hash,\n };\n}\n\nfunction setTablePreset(columns: Array<string>, hash: string) {\n const columnsEncoded = map_(columns, utf8.encode);\n return {\n type: SET_TABLE_COLUMNS_PRESET,\n data: {error: undefined, columns: columnsEncoded, hash},\n };\n}\n\nfunction setTablePresetError(error: unknown) {\n return {\n type: SET_TABLE_COLUMNS_PRESET,\n data: {error, columns: undefined, hash: undefined},\n };\n}\n","import filter_ from 'lodash/filter';\nimport has_ from 'lodash/has';\nimport isEmpty_ from 'lodash/isEmpty';\nimport keyBy_ from 'lodash/keyBy';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport metrics from '../../../../../common/utils/metrics';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {\n CHANGE_CELL_SIZE,\n CHANGE_PAGE_SIZE,\n CLOSE_COLUMN_SELECTOR_MODAL,\n GET_TABLE_DATA,\n LOAD_TYPE,\n OPEN_COLUMN_SELECTOR_MODAL,\n SET_COLUMNS,\n SET_COLUMNS_ORDER,\n SET_OFFSET,\n TOGGLE_FULL_SCREEN,\n} from '../../../../../constants/navigation/content/table';\n\nimport {updateView} from '../../../../../store/actions/navigation';\n\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport {openInNewTab, showErrorPopup} from '../../../../../utils/utils';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport Columns from '../../../../../utils/navigation/content/table/columns';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getColumnsValues,\n getParsedError,\n getRequestOutputFormat,\n parseErrorFromResponse,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\n\nimport {getAttributes, getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {\n getDefaultTableColumnLimit,\n isTableSimilarityEnabled,\n} from '../../../../../store/selectors/settings';\nimport {\n getAllColumns,\n getKeyColumns,\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 getMoveOffsetBackward,\n getOmittedColumns,\n getRows,\n getTableColumnNamesFromSchema,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {mergeScreen} from '../../../../../store/actions/global';\nimport {waitForFontFamilies} from '../../../../../store/actions/global/fonts';\nimport {injectColumnsFromSchema} from '../../../../../utils/navigation/content/table/table-ts';\nimport {YTApiId, ytApiV3, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport unipika from '../../../../../common/thor/unipika';\n\nimport {loadColumnPresetIfDefined, saveColumnPreset, setTablePresetHash} from './columns-preset';\nimport {makeTableRumId} from './table-rum-id';\nimport {readStaticTable} from './readStaticTable';\nimport {readDynamicTable} from './readDynamicTable';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\nfunction loadDynamicTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload) {\n const {login} = state.global;\n\n const path = getPath(state);\n const stringLimit = getCellSize(state);\n const keyColumns = getKeyColumns(state);\n const attributes = getAttributes(state);\n const useYqlTypes = isYqlTypesEnabled(state);\n const moveBackward = getMoveOffsetBackward(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const {offsetValue: offset, moveBackward: descending} = getNextOffset(state);\n const orderBySupported = true;\n const offsetColumns = keyColumns;\n\n let limit = getRequestedPageSize(state);\n if (isEmpty_(offset) && descending) {\n // If we move to the end of the table, we reduce the limit for correctly determining the end of the table\n limit--;\n }\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n\n if (type === LOAD_TYPE.PRELOAD) {\n // Get all columns from schema for preload data. Scheme is always strict\n const allColumns = Columns.getSchemaColumns(attributes);\n\n return id\n .fetch(\n YTApiId.dynTableCheckPerm,\n ytApiV3Id.checkPermission(YTApiId.dynTableCheckPerm, {\n parameters: {\n columns: allColumns,\n permission: 'read',\n user: login,\n path,\n },\n cancellation: requests.saveCancelToken,\n }),\n )\n .then((permissions) => {\n const keyColumnsNames = keyBy_(keyColumns);\n const {availableColumns, omittedColumns, deniedKeyColumns} = reduce_(\n permissions.columns,\n (res, permission, index) => {\n if (permission.action === 'allow') {\n res.availableColumns.push(allColumns[index]);\n } else {\n res.omittedColumns.push(allColumns[index]);\n if (has_(keyColumnsNames, allColumns[index])) {\n res.deniedKeyColumns.push({[allColumns[index]]: permission.action});\n }\n }\n\n return res;\n },\n {availableColumns: [], omittedColumns: [], deniedKeyColumns: []},\n );\n\n if (deniedKeyColumns.length !== 0) {\n return Promise.reject({deniedKeyColumns});\n }\n\n const columns = map_(availableColumns, unipika.decode);\n const parameters = {\n query: Query.prepareQuery({\n columns,\n path,\n keyColumns,\n offsetColumns,\n offset: useZeroRangeForPreload ? 0 : offset,\n limit: useZeroRangeForPreload ? 0 : limit,\n descending,\n orderBySupported,\n }),\n output_format: requestOutputFormat,\n dump_error_into_response: true,\n };\n\n return id\n .fetch(\n YTApiId.dynTableSelectRowsPreload,\n ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n }),\n )\n .then(({data}) => {\n const error = parseErrorFromResponse(data);\n\n if (error) {\n return Promise.reject(getParsedError(error));\n }\n\n const {columns, rows, yqlTypes} = prepareRows(data, moveBackward);\n\n return {\n rows,\n columns,\n yqlTypes,\n omittedColumns,\n };\n });\n });\n } else {\n // Get only visible columns for updating data. Get omittedColumns from store.\n const columns = getVisibleColumns(state);\n const omittedColumns = getOmittedColumns(state);\n const deniedKeyColumns = getDeniedKeyColumns(state);\n const decodedColumns = decodeNameField(columns);\n const outputFormat = getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n if (deniedKeyColumns.length !== 0) {\n const err = new Error('There is no \"read\" permission for some key columns:');\n err.attributes = {key_columns: deniedKeyColumns};\n return Promise.reject(err);\n }\n\n const parameters = {\n query: Query.prepareQuery({\n columns: decodedColumns,\n path,\n keyColumns,\n offsetColumns,\n offset,\n limit,\n descending,\n orderBySupported,\n }),\n output_format: outputFormat,\n dump_error_into_response: true,\n };\n\n return id\n .fetch(\n YTApiId.dynTableSelectRows,\n readDynamicTable({\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n }),\n )\n .then((data) => {\n return {\n ...data,\n omittedColumns,\n };\n });\n }\n}\n\nasync function loadStaticTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload) {\n const path = getPath(state);\n const stringLimit = getCellSize(state);\n const transaction = getTransaction(state);\n const moveBackward = getMoveOffsetBackward(state);\n const requestedPageSize = getRequestedPageSize(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n\n const {login} = state.global;\n // Get all columns always and update them then. We can get new columns. The scheme is not always strict\n const columns = getColumns(state);\n const offsetValue = getNextOffset(state).offsetValue;\n const useYqlTypes = isYqlTypesEnabled(state);\n const decodedColumns = decodeNameField(columns);\n const outputFormat =\n requestOutputFormat ||\n getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n const parameters = prepareRequest({\n path,\n table_reader: {\n workload_descriptor: {category: 'user_interactive'},\n },\n transaction,\n output_format: outputFormat,\n dump_error_into_response: true,\n omit_inaccessible_columns: true,\n relativePath: useZeroRangeForPreload\n ? '[#0:#0]'\n : '[#' + offsetValue + ':#' + (offsetValue + requestedPageSize) + ']',\n });\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n const apiId = type === LOAD_TYPE.PRELOAD ? YTApiId.tableReadPreload : YTApiId.tableRead;\n\n return await id.fetch(\n apiId,\n readStaticTable({\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n reverseRows: moveBackward,\n }),\n );\n}\n\nfunction loadTableRows(type, state, requestOutputFormat) {\n const isDynamic = getIsDynamic(state);\n const isStrict = getIsStrict(state);\n const setup = {\n transformResponse({parsedData, rawResponse}) {\n return {\n data: parsedData,\n headers: rawResponse?.headers,\n };\n },\n };\n const useZeroRangeForPreload = isStrict && type === LOAD_TYPE.PRELOAD;\n\n const loadPromise = isDynamic\n ? loadDynamicTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload)\n : loadStaticTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload);\n\n return loadPromise.then((result) => {\n const schemaColumns = getTableColumnNamesFromSchema(state);\n const {columns, omittedColumns, ...rest} = result;\n return {\n columns: injectColumnsFromSchema(columns, omittedColumns, schemaColumns),\n omittedColumns,\n ...rest,\n };\n });\n}\n\n// Make a table request with page size row range and empty column range to get the list of all columns in table\n// and restore personalized columns list.\nfunction restoreColumns(state) {\n const tableSimilarityEnabled = isTableSimilarityEnabled(state);\n const attributes = getAttributes(state);\n const stringLimit = getCellSize(state);\n\n const requestOutputFormat = {\n $value: 'web_json',\n $attributes: {\n field_weight_limit: stringLimit,\n max_selected_column_count: 50,\n max_all_column_names_count: 3000,\n column_names: [],\n },\n };\n\n return loadTableRows(LOAD_TYPE.PRELOAD, state, requestOutputFormat)\n .then(({columns, omittedColumns}) => {\n const storedColumns = tableSimilarityEnabled\n ? Columns.restoreSimilarColumns(attributes, columns)\n : Columns.restoreExactColumns(attributes);\n\n return {columns, omittedColumns, storedColumns};\n })\n .catch((data) => {\n const {deniedKeyColumns} = data;\n return {\n columns: [],\n omittedColumns: [],\n storedColumns: null,\n ...(deniedKeyColumns ? {deniedKeyColumns} : {}),\n };\n });\n}\n\nexport function updateTableData() {\n return (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const {offsetValue, moveBackward} = getNextOffset(state);\n const requestedPageSize = getRequestedPageSize(state);\n const isDynamic = getIsDynamic(state);\n\n dispatch({type: GET_TABLE_DATA.REQUEST});\n requests.removeAllRequests();\n\n return loadTableRows(LOAD_TYPE.UPDATE, state)\n .then(({columns, omittedColumns, rows, yqlTypes}) => {\n // Scheme is always strict in dynamic tables. No new columns are expected.\n if (!isDynamic) {\n // Get current columns for save visible status\n const storedColumns = getColumns(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const preparedColumns = Columns.prepareColumns(\n attributes,\n rows,\n columns,\n storedColumns,\n defaultTableColumnLimit,\n );\n const preparedOmittedColumns = Columns.prepareOmittedColumns(\n attributes,\n omittedColumns,\n );\n dispatch(setColumns(preparedColumns, preparedOmittedColumns, []));\n }\n\n if (moveBackward) {\n let newOffsetValue;\n if (!isEmpty_(offsetValue) && rows.length < requestedPageSize) {\n // If there are not enough rows on the new page on the left:\n // - add rows from the current page\n // - reset offset value\n newOffsetValue = '';\n const previousRows = getRows(state);\n const addRowCount = Math.min(\n requestedPageSize - rows.length + 1,\n previousRows.length,\n );\n rows = rows.concat(previousRows.slice(1, addRowCount));\n } else {\n const keyColumns = getKeyColumns(state);\n newOffsetValue = Query.prepareKey(getColumnsValues(rows[0], keyColumns));\n }\n\n if (newOffsetValue !== undefined) {\n dispatch({\n type: SET_OFFSET,\n data: {offsetValue: newOffsetValue},\n });\n }\n }\n\n dispatch({\n type: GET_TABLE_DATA.SUCCESS,\n data: {rows, yqlTypes},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLE_DATA.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function getTableData() {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = getAttributes(state);\n\n return dispatch(loadColumnPresetIfDefined()).then(() => {\n const updateColumns = ({\n rows,\n columns,\n omittedColumns,\n storedColumns,\n deniedKeyColumns = [],\n }) => {\n const state = getState();\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const preparedColumns = Columns.prepareColumns(\n attributes,\n rows,\n columns,\n storedColumns,\n defaultTableColumnLimit,\n );\n const preparedOmittedColumns = Columns.prepareOmittedColumns(\n attributes,\n omittedColumns,\n );\n\n // if we have columns preset -> update checked according to preset\n const preset = getColumnsPreset(state);\n if (preset?.columns) {\n preparedColumns.forEach((column) => {\n column.checked = preset?.columns?.includes(column.name);\n });\n }\n dispatch(setColumns(preparedColumns, preparedOmittedColumns, deniedKeyColumns));\n };\n\n dispatch({type: GET_TABLE_DATA.REQUEST});\n requests.removeAllRequests();\n\n // 1. call the restoreColumns function before loading table data\n // 2. Call loadTableRows function with specific requestOutputFormat and empty column_names to get all columns and return their and stored columns:\n // a) tableSimilarityEnabled === false. Finding stored columns by id and schema. If stored columns exists -- update their and return. Else return null\n // b) tableSimilarityEnabled === true. Finding stored columns by array of all columns. If stored columns exists -- update their and return. Else return null\n // 3. If at the previous step was returned an array then building columns based on stored columns and save their in the store.\n // 4. load table rows for columns in the store\n\n return dispatch(waitForFontFamilies(restoreColumns(getState())))\n .then(({columns, omittedColumns, storedColumns, ...rest}) => {\n if (columns) {\n updateColumns({\n rows: [],\n columns,\n omittedColumns,\n storedColumns,\n ...rest,\n });\n }\n return dispatch(updateTableData());\n })\n .catch((error) => {\n updateColumns({\n rows: [],\n columns: Columns.getSchemaColumns(attributes),\n omittedColumns: [],\n });\n\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLE_DATA.FAILURE,\n data: {error},\n });\n }\n });\n });\n };\n}\n\nexport function setColumns(columns, omittedColumns, deniedKeyColumns) {\n return {\n type: SET_COLUMNS,\n data: {columns, omittedColumns, deniedKeyColumns},\n };\n}\n\nexport function setColumnsOrder(columnsOrder) {\n return {\n type: SET_COLUMNS_ORDER,\n data: {columnsOrder},\n };\n}\n\nexport function openColumnSelectorModal() {\n return {\n type: OPEN_COLUMN_SELECTOR_MODAL,\n };\n}\n\nexport function closeColumnSelectorModal() {\n return {\n type: CLOSE_COLUMN_SELECTOR_MODAL,\n };\n}\n\nexport function updateColumns(allColumns) {\n return (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const omittedColumns = getOmittedColumns(state);\n const deniedKeyColumns = getDeniedKeyColumns(state);\n const columns = filter_(allColumns, (column) => !column.disabled); // remove omitted columns\n const columnsOrder = Columns.getColumnsOrder(columns);\n Columns.storeAllColumns(attributes, columns);\n\n dispatch(setColumns(columns, omittedColumns, deniedKeyColumns));\n dispatch(setColumnsOrder(columnsOrder));\n dispatch(closeColumnSelectorModal());\n\n dispatch(setTablePresetHash(undefined));\n dispatch(updateTableData());\n };\n}\n\nexport function rememberPresetColumnsAsDefault() {\n return (dispatch, getState) => {\n const allColumns = getAllColumns(getState());\n dispatch(updateColumns(allColumns));\n };\n}\n\nexport function openTableWithPresetOfColumns() {\n return (dispatch, getState) => {\n const visibleColumns = getVisibleColumns(getState());\n const cluster = getCluster(getState());\n saveColumnPreset(map_(visibleColumns, 'name'), cluster).then((hash) => {\n const {href} = window.location;\n const url = `${href}&columns=${hash}`;\n openInNewTab(url);\n\n metrics.countEvent({\n share_columns: {\n hash,\n },\n });\n });\n };\n}\n\nexport function changePageSize(pageSize) {\n return (dispatch) => {\n dispatch({\n type: CHANGE_PAGE_SIZE,\n data: {pageSize},\n });\n dispatch(updateTableData());\n };\n}\n\nexport function changeCellSize(cellSize) {\n return (dispatch) => {\n dispatch({\n type: CHANGE_CELL_SIZE,\n data: {cellSize},\n });\n dispatch(updateTableData());\n };\n}\n\nexport function toggleFullScreen() {\n return (dispatch) => {\n dispatch(mergeScreen());\n dispatch({type: TOGGLE_FULL_SCREEN});\n };\n}\n\n// if we press esc button then the browser will automatically change state to non full screen\n// and we need as change value in the store\nexport function handleScreenChanged(isFullScreen) {\n return (dispatch, getState) => {\n const {isFullScreen: storedIsFullScreen} = getState().navigation.content.table;\n\n if (isFullScreen !== storedIsFullScreen) {\n dispatch(toggleFullScreen());\n }\n };\n}\n\nexport function mountUnmountTable(action) {\n return (dispatch, getState) => {\n const path = getPath(getState());\n\n metrics.countEvent({\n navigation_dynamic_table_action: action,\n });\n\n return ytApiV3[`${action}Table`]({path})\n .then(() => {\n toaster.add({\n name: `${action} table`,\n theme: 'success',\n title: `Success ${action}ing table`,\n });\n return dispatch(updateView());\n })\n .catch((err) => {\n console.error(err);\n toaster.add({\n name: `${action} table`,\n theme: 'danger',\n title: `Could not ${action} table.`,\n content: err?.message || 'Oops, something went wrong',\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n };\n}\n\nexport function decodeNameField(columns) {\n return map_(columns, (item) => {\n return {\n ...item,\n name: unipika.decode(item.name),\n };\n });\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {ClickableText} from '../../components/ClickableText/ClickableText';\n\nimport './FilePicker.scss';\n\nconst block = cn('yt-file-picker');\n\ninterface Props {\n onChange: (v: FileList | null) => void;\n multiple?: boolean;\n children: React.ReactNode;\n}\n\nexport default class FilePicker extends React.Component<Props> {\n inputRef = React.createRef<HTMLInputElement>();\n\n onLinkClick = () => {\n if (!this.inputRef.current) {\n return;\n }\n\n this.inputRef.current.click();\n };\n\n onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onChange(event.target.files);\n };\n\n render() {\n const {children, multiple} = this.props;\n return (\n <ClickableText onClick={this.onLinkClick}>\n {children}\n <input\n ref={this.inputRef}\n className={block('input')}\n onChange={this.onChange}\n type={'file'}\n multiple={multiple}\n />\n </ClickableText>\n );\n }\n}\n","import React from 'react';\nimport {compose} from 'redux';\nimport axios, {AxiosProgressEvent} from 'axios';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport format from '../../../../../common/hammer/format';\n\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {ConnectedProps, connect} from 'react-redux';\nimport Error from '../../../../../components/Block/Block';\nimport {DialogField, YTDFDialog} from '../../../../../components/Dialog';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\n\nimport './UploadManager.scss';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport FilePicker from '../../../../../components/FilePicker/FilePicker';\nimport {getSchema} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {getCluster, getCurrentClusterConfig} from '../../../../../store/selectors/global';\nimport {RootState} from '../../../../../store/reducers';\nimport {getXsrfCookieName} from '../../../../../utils';\nimport {docsUrl, getConfigUploadTable} from '../../../../../config';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport UIFactory from '../../../../../UIFactory';\n\nconst block = cn('upload-manager');\n\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\ntype Props = PropsFromRedux & WithVisibleProps;\n\ninterface State {\n hasUpcomingFile: boolean;\n progress: ProgressState;\n error?: any;\n\n file: File | null;\n fileType: FileType;\n append: boolean;\n\n // xlsx\n firstRowAsNames: boolean;\n secondRowAsTypes: boolean;\n\n showOverwriteConfirmation: boolean;\n}\n\nconst WRITE_ATTRIBUTES = {\n json: {\n format: 'text',\n enable_type_conversion: true,\n },\n yson: {\n enable_type_conversion: true,\n },\n yamr: {},\n dsv: {\n enable_string_to_all_conversion: true,\n },\n schemaful_dsv: {\n enable_string_to_all_conversion: true,\n },\n xlsx: {},\n};\n\ntype FileType = 'json' | 'yson' | 'yamr' | 'dsv' | 'schemaful_dsv' | 'xlsx';\n\nconst getFileTypes = (payload: {cluster: string}) => {\n const fileTypes: Array<{value: FileType; text: FileType}> = [\n {value: 'json', text: 'json'},\n {value: 'yson', text: 'yson'},\n {value: 'dsv', text: 'dsv'},\n {value: 'yamr', text: 'yamr'},\n {value: 'schemaful_dsv', text: 'schemaful_dsv'},\n ];\n\n const uploadConfig = getConfigUploadTable(payload);\n\n if (uploadConfig.uploadTableExcelBaseUrl) {\n fileTypes.push({value: 'xlsx', text: 'xlsx'});\n }\n\n return fileTypes;\n};\n\ntype ProgressState =\n | {inProgress: false}\n | {inProgress: true; event: {total?: number; loaded: number}};\n\nclass UploadManager extends React.Component<Props, State> {\n state: State = {\n hasUpcomingFile: false,\n file: null,\n fileType: 'json',\n progress: {inProgress: false},\n append: true,\n firstRowAsNames: false,\n secondRowAsTypes: false,\n\n showOverwriteConfirmation: false,\n };\n\n private cancelHelper = new CancelHelper();\n\n renderContent() {\n const {hasUpcomingFile, file, error} = this.state;\n return (\n <React.Fragment>\n <div\n className={block('drag-area', {\n dropable: hasUpcomingFile,\n empty: !file,\n })}\n onDrop={this.onDrop}\n onDragEnter={this.onDragEnter}\n onDragLeave={this.onDragLeave}\n onDragOver={this.onDragOver}\n >\n {file ? (\n this.renderFileContent(file)\n ) : (\n <div>\n <div>Drag a file here</div>\n or\n <div>\n <FilePicker onChange={this.onFile}>Pick a file</FilePicker>\n </div>\n </div>\n )}\n </div>\n {error && <Error error={error} message={'The file upload has failed'} />}\n </React.Fragment>\n );\n }\n\n renderFileContent(file: File) {\n return (\n <React.Fragment>\n {this.renderSettings(file)}\n {this.renderProgress()}\n </React.Fragment>\n );\n }\n\n renderSettings(file: File) {\n const {cluster} = this.props;\n const inProgress = this.inProgress();\n\n const {fields, initials} = this.typeSpecificFields();\n return (\n <YTDFDialog\n onAdd={() => Promise.resolve()}\n onClose={() => {}}\n visible={true}\n modal={false}\n initialValues={{\n name: file.name,\n size: `${hammer.format['Bytes'](file.size)} / ${hammer.format['Number'](\n file.size,\n )} B`,\n append: this.state.append,\n fileType: this.state.fileType,\n ...initials,\n }}\n fields={[\n {\n name: 'name',\n caption: 'Name',\n type: 'plain',\n },\n {\n name: 'size',\n caption: 'Size',\n type: 'plain',\n },\n {\n name: 'append',\n caption: 'Append',\n type: 'tumbler',\n tooltip: 'Append content of the file to the end of the destination',\n extras: {\n disabled: inProgress,\n },\n onChange: (append: boolean) => {\n this.setState({append});\n },\n },\n {\n name: 'fileType',\n type: 'yt-select-single',\n caption: 'Type',\n extras: {\n items: getFileTypes({cluster}),\n hideFilter: true,\n disabled: inProgress,\n width: 'max',\n },\n onChange: (fileType: string | Array<string> | undefined) => {\n this.setState({\n fileType: (fileType as FileType) || 'json',\n });\n },\n },\n ...fields,\n ]}\n />\n );\n }\n\n typeSpecificFields() {\n const {fileType} = this.state;\n const fields: Array<DialogField> = [];\n const initials: Partial<{firstRowAsNames: boolean}> = {};\n switch (fileType) {\n case 'xlsx': {\n fields.push(\n {\n name: 'firstRowAsNames',\n type: 'tumbler',\n caption: 'Column names',\n tooltip: 'Interpret first row as column names',\n onChange: (firstRowAsNames: boolean) => {\n this.setState({firstRowAsNames});\n },\n },\n {\n name: 'secondRowAsTypes',\n type: 'tumbler',\n caption: 'Types',\n tooltip: 'There is row with types right before data-rows',\n onChange: (secondRowAsTypes: boolean) => {\n this.setState({secondRowAsTypes});\n },\n },\n );\n Object.assign(initials, {\n firstRowAsNames: this.state.firstRowAsNames,\n secondRowAsTypes: this.state.secondRowAsTypes,\n });\n break;\n }\n }\n return {fields, initials};\n }\n\n renderFooterContent() {\n const {file, fileType} = this.state;\n const inProgress = this.inProgress();\n const url =\n fileType === 'xlsx'\n ? UIFactory.docsUrls['storage:excel']\n : UIFactory.docsUrls['storage:formats'];\n const helpLink = docsUrl(<HelpLink url={url} />);\n if (!file) {\n return helpLink;\n }\n return inProgress ? (\n <React.Fragment>\n <Button onClick={this.cancelUpload}>Cancel upload</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={this.onReset}>Reset</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n );\n }\n\n onReset = () => {\n this.onFile(null);\n this.setState({error: null});\n };\n\n renderProgress() {\n const {progress} = this.state;\n const event = progress.inProgress ? progress.event : {total: 1, loaded: 0};\n const {total, loaded} = event;\n const totalStr = hammer.format['Bytes'](total);\n const loadedStr = hammer.format['Bytes'](loaded);\n return (\n progress.inProgress && (\n <div\n className={block('progress', {\n hidden: !progress.inProgress,\n })}\n >\n <div className={block('progress-wrapper')}>\n <Progress\n text={`${loadedStr} / ${totalStr}`}\n stack={[\n {\n value: (100 * loaded) / ((total ?? loaded) || 1),\n theme: 'info',\n },\n ]}\n />\n </div>\n </div>\n )\n );\n }\n\n cancelUpload = () => {\n this.cancelHelper.removeAllRequests();\n };\n\n inProgress() {\n const {progress} = this.state;\n return progress.inProgress;\n }\n\n onDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n if (!this.state.hasUpcomingFile) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n const {files} = event.dataTransfer;\n if (!files) {\n return;\n }\n\n this.onFile(files);\n };\n\n onFile = (files: FileList | null) => {\n const {cluster} = this.props;\n const file = files && files[0];\n this.setState({file, hasUpcomingFile: false});\n if (file) {\n const lastDotIndex = file.name.lastIndexOf('.');\n const extStr = file.name.substr(lastDotIndex + 1);\n const item = getFileTypes({cluster}).find(({value}) => value === extStr);\n if (item) {\n this.setState({fileType: item.value});\n }\n\n const fileError = this.checkFile(file);\n if (fileError) {\n this.setState({error: {message: fileError}});\n }\n }\n };\n\n onDragEnter = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDragLeave = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: false});\n }\n };\n\n renderConfirm = () => {\n const fileError = this.checkFile(this.state.file);\n return (\n <Button\n className={block('confirm')}\n size=\"m\"\n view=\"action\"\n title=\"Upload\"\n disabled={Boolean(fileError) || this.inProgress()}\n onClick={this.onConfirm}\n >\n Upload\n </Button>\n );\n };\n\n checkFile(file: State['file']): string | null {\n if (!file) {\n return 'file is not selected';\n }\n\n const {cluster} = this.props;\n\n const uploadConfig = getConfigUploadTable({cluster});\n\n if (file.size > uploadConfig.uploadTableMaxSize) {\n return `File size must not be greater than ${format.Bytes(\n uploadConfig.uploadTableMaxSize,\n )}`;\n }\n\n return null;\n }\n\n renderClose = (className: string) => {\n return (\n <Button\n className={block('close', className)}\n size=\"m\"\n title=\"Close\"\n disabled={this.inProgress()}\n onClick={this.handleClose}\n >\n Close\n </Button>\n );\n };\n\n getWriteAttributes() {\n const {schema} = this.props;\n const {fileType} = this.state;\n const withColumns: any = {};\n if (fileType === 'schemaful_dsv') {\n withColumns.columns = map_(schema, ({name}) => name);\n }\n return {\n ...withColumns,\n ...WRITE_ATTRIBUTES[fileType],\n };\n }\n\n onStartUpload(size: number) {\n this.setState({\n progress: {inProgress: true, event: {loaded: 0, total: size}},\n error: undefined,\n });\n }\n\n onUploadProgress = (event: AxiosProgressEvent) => {\n this.setState({progress: {inProgress: true, event}});\n };\n\n onStopUpload(error?: State['error']) {\n this.setState({progress: {inProgress: false}});\n if (!error) {\n this.props.updateView();\n this.props.handleClose();\n } else if (!axios.isCancel(error) && (!error || error.code !== 'cancelled')) {\n error = error.response?.data || error;\n this.setState({error});\n }\n }\n\n onConfirm = () => {\n const {append} = this.state;\n if (append) {\n return this.onConfirmImpl();\n }\n\n this.setOverwriteConfirmationVisible(true);\n };\n\n onConfirmImpl = () => {\n const {file, fileType, append} = this.state;\n\n if (fileType === 'xlsx') {\n this.onXlsxUpload();\n return;\n }\n if (!file) {\n return;\n }\n\n const {path, proxy, externalProxy, cluster} = this.props;\n\n const uploadConfig = getConfigUploadTable({cluster});\n\n this.onStartUpload(file.size);\n\n let transaction_id = '';\n yt.v3\n .startTransaction({\n timeout: 120000,\n })\n .then((txId: string) => {\n transaction_id = txId;\n\n return yt.v3\n .writeTable({\n setup: {\n onUploadProgress: this.onUploadProgress,\n proxy: uploadConfig.uploadTableUseLocalmode\n ? `${location.host}/localmode/api/yt/${cluster}`\n : externalProxy ?? proxy,\n },\n parameters: {\n transaction_id,\n path: {$value: path, $attributes: {append}},\n input_format: {\n $value: fileType,\n $attributes: this.getWriteAttributes(),\n },\n },\n cancellation: this.cancelHelper.removeAllAndSave,\n data: file,\n })\n .then(() => {\n return yt.v3.commitTransaction({transaction_id}).then(() => {\n this.onStopUpload();\n });\n });\n })\n .catch((e: any) => {\n this.onStopUpload(e);\n if (transaction_id) {\n yt.v3.abortTransaction({transaction_id});\n }\n });\n };\n\n onXlsxUpload() {\n const {file, fileType} = this.state;\n if (!file || fileType !== 'xlsx') {\n return Promise.resolve();\n }\n\n const {path, cluster} = this.props;\n this.onStartUpload(file.size);\n\n const uploadConfig = getConfigUploadTable({cluster});\n\n const readyUrl = `${uploadConfig.uploadTableExcelBaseUrl}/${cluster}/api/ready`;\n const uploadUrl = `${uploadConfig.uploadTableExcelBaseUrl}/${cluster}/api/upload`;\n\n this.cancelHelper.removeAllRequests();\n return axios.get(readyUrl).then(\n () => {\n const {append, firstRowAsNames, secondRowAsTypes} = this.state;\n const start_row = [firstRowAsNames, secondRowAsTypes].filter(Boolean).length + 1;\n const params = new URLSearchParams({\n path,\n append: String(append),\n header: String(firstRowAsNames),\n start_row: String(start_row),\n types: String(secondRowAsTypes),\n });\n const formData = new FormData();\n formData.append('uploadfile', file);\n return axios\n .post(`${uploadUrl}?${params}`, formData, {\n onUploadProgress: this.onUploadProgress,\n withCredentials: true,\n withXSRFToken: true,\n xsrfCookieName: getXsrfCookieName(cluster),\n xsrfHeaderName: 'X-Csrf-Token',\n cancelToken: this.cancelHelper.generateNextToken(),\n })\n .then(\n () => {\n this.onStopUpload();\n },\n (e) => {\n this.onStopUpload(e);\n },\n );\n },\n (e) => {\n this.onStopUpload({\n message: `${readyUrl} responded with error`,\n inner_errors: [e],\n });\n },\n );\n }\n\n handleClose = () => {\n if (this.inProgress()) {\n return;\n }\n this.props.handleClose();\n };\n\n setOverwriteConfirmationVisible(showOverwriteConfirmation: boolean) {\n this.setState({showOverwriteConfirmation});\n }\n\n renderOverwriteConfirmationDialog() {\n const {showOverwriteConfirmation} = this.state;\n return !showOverwriteConfirmation ? null : (\n <Modal\n size={'s'}\n title={'Overwrite confirmation'}\n visible={true}\n confirmText={'Overwrite'}\n content={\n <div>\n Are you sure you want to overwrite all existing data rows with the ones from\n the uploading file?\n </div>\n }\n onConfirm={() => {\n this.setOverwriteConfirmationVisible(false);\n this.onConfirmImpl();\n }}\n onCancel={() => {\n this.setOverwriteConfirmationVisible(false);\n }}\n />\n );\n }\n\n render() {\n const {visible, handleShow} = this.props;\n return (\n <React.Fragment>\n <Button size=\"m\" title=\"Upload\" onClick={handleShow}>\n <Icon awesome=\"upload\" />\n &nbsp; 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';\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 isBatch: true,\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 isBatch: true,\n errorTitle: `Cannot perform ${action} action`,\n });\n })\n .then(() => {\n dispatch(updateView());\n });\n };\n}\n\nfunction waitWhileThereIsTransient(paths: Array<string>, action: TabletStateAction): Promise<void> {\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(YTApiId.navigationGetTabletState, requests, {\n errorTitle: 'Failed to get tablet state',\n }),\n 3000,\n ) as any;\n\n return wrapApiPromiseByToaster<Array<{output: string}>>(res, {\n toasterName: 'dyn_tables_wait_while_transient_' + action,\n successContent: `${capitalize_(action)} completed`,\n skipSuccessToast: true,\n isBatch: true,\n errorTitle: `Cannot perform ${action} action`,\n }).then((results) => {\n const toRecheck = reduce_(\n results,\n (acc, {output}, index) => {\n if (output === 'transient') {\n acc.push(paths[index]);\n }\n return acc;\n },\n [] as typeof paths,\n );\n\n if (toRecheck.length) {\n return waitWhileThereIsTransient(toRecheck, action);\n }\n return Promise.resolve();\n });\n}\n","import React, {Fragment} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../../common/hammer';\nimport {compose} from 'redux';\n\nimport DownloadManager from '../../../../../pages/navigation/content/Table/DownloadManager/DownloadManager';\nimport Button from '../../../../../components/Button/Button';\n\nimport {mountUnmountTable} from '../../../../../store/actions/navigation/content/table/table';\nimport {getAttributes, getPath} from '../../../../../store/selectors/navigation';\nimport withVisible from '../../../../../hocs/withVisible';\nimport UploadManager from '../UploadManager/UploadManager';\nimport {showDynTablesStateModalByPaths} from '../../../../../store/actions/navigation/modals/dyn-tables-state-modal';\n\nconst propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from withVisible\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n\n // from connect\n isDynamic: PropTypes.bool.isRequired,\n tabletState: PropTypes.string,\n\n mountUnmountTable: PropTypes.func.isRequired,\n};\n\nDynamicActions.propTypes = propTypes;\nfunction DynamicActions(props) {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n\n const {tabletState} = props;\n const action = tabletState !== 'mounted' ? 'mount' : 'unmount';\n const onClick = React.useCallback(() => {\n dispatch(showDynTablesStateModalByPaths([path], action));\n }, [action, path]);\n\n return (\n <Fragment>\n <Button size=\"m\" onClick={onClick}>\n {hammer.format['Readable'](action)}\n </Button>\n </Fragment>\n );\n}\n\nStaticActions.propTypes = propTypes;\nfunction StaticActions(props) {\n const {block} = props;\n\n return (\n <Fragment>\n <DownloadManager className={block('download-manager')} />\n <UploadManager />\n </Fragment>\n );\n}\n\nTableActions.propTypes = propTypes;\nfunction TableActions(props) {\n const {block, isDynamic} = props;\n\n return (\n <div className={block('actions')}>\n {isDynamic ? <DynamicActions {...props} /> : <StaticActions {...props} />}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isDynamic} = state.navigation.content.table;\n const attributes = getAttributes(state);\n\n const tabletState = ypath.getValue(attributes, '/tablet_state');\n\n return {isDynamic, tabletState};\n};\n\nexport default compose(connect(mapStateToProps, {mountUnmountTable}), withVisible)(TableActions);\n","import React, {useMemo} from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect, useSelector} from 'react-redux';\n\nimport {makeMetaItems} from '../../../../../components/MetaTable/presets/presets';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\n\nimport {getTableType} from '../../../../../store/selectors/navigation/content/table';\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getAttributes} from '../../../../../store/selectors/navigation';\nimport {getTabletErrorsCount} from '../../../../../store/selectors/navigation/tabs/tablet-errors';\nimport {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\n\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport './TableMeta.scss';\nimport {RootState} from '../../../../../store/reducers';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../../constants/global';\n\nconst block = cn('navigation-meta-table');\n\ninterface Props {\n attributes: any;\n mediumList: string[];\n isDynamic: boolean;\n tableType: string;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}\n\nfunction TableMeta({\n attributes,\n tableType,\n mediumList,\n isDynamic,\n onEditEnableReplicatedTableTracker,\n}: Props) {\n const tabletErrorCount = useSelector(getTabletErrorsCount);\n const cluster = useSelector(getCluster);\n\n const items = useMemo(() => {\n return makeMetaItems({\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n });\n }, [\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n ]);\n\n return (\n <CollapsibleSection name=\"Metadata\" size={UI_COLLAPSIBLE_SIZE}>\n <MetaTable className={block()} items={items} />\n </CollapsibleSection>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {mediumList} = state.global;\n\n const isDynamic = getIsDynamic(state);\n const tableType = getTableType(state);\n const attributes = getAttributes(state);\n\n return {\n attributes,\n mediumList,\n isDynamic,\n tableType,\n };\n};\n\nexport default connect(mapStateToProps)(TableMeta);\n","import React from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {YTError} from '../../../../types';\nimport Error from '../../../../components/Error/Error';\n\nimport './ReplicatedTableSettings.scss';\nconst block = cn('replicated-table-settings');\n\ninterface Props {\n replica_cluster: string;\n replica_path: string;\n state: 'enabled' | 'disabled';\n mode: 'sync' | 'async';\n auto_replica_tracker: 'enabled' | 'disabled';\n\n onApply: (modeState: Pick<Props, 'mode' | 'state' | 'auto_replica_tracker'>) => Promise<void>;\n}\n\nexport function ReplicatedTableSettingsButton(props: Props) {\n const [visible, setVisible] = React.useState(false);\n\n const toggleVisibility = React.useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n return (\n <React.Fragment>\n <Button onClick={toggleVisibility} view={'flat-secondary'} size={'s'}>\n <Icon awesome={'pencil-alt'} />\n </Button>\n <ReplicatedTableSettingsDialog\n {...props}\n onClose={toggleVisibility}\n visible={visible}\n />\n </React.Fragment>\n );\n}\n\ninterface SettingsProps {\n visible: boolean;\n onClose: () => void;\n}\n\ninterface FormValues {\n cluster: string;\n path: string;\n state: 'enabled' | 'disabled';\n mode: 'async' | 'sync';\n auto_replica_tracker: 'enabled' | 'disabled';\n}\n\nfunction ReplicatedTableSettingsDialog(props: Props & SettingsProps) {\n const [error, setError] = React.useState<YTError | null>(null);\n const handleApply = React.useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n const {\n values: {mode, state, auto_replica_tracker},\n } = form.getState();\n return props.onApply({mode, state, auto_replica_tracker}).catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n },\n [props.mode, props.state, props.onApply, setError],\n );\n return (\n <YTDFDialog<FormValues>\n visible={props.visible}\n onAdd={handleApply}\n onClose={props.onClose}\n headerProps={{\n title: 'Replica settings',\n }}\n initialValues={{\n cluster: capitalize_(props.replica_cluster),\n path: props.replica_path,\n state: props.state,\n mode: props.mode,\n auto_replica_tracker: props.auto_replica_tracker,\n }}\n fields={[\n {\n type: 'plain',\n name: 'cluster',\n caption: 'Replica cluster',\n },\n {\n type: 'plain',\n name: 'path',\n caption: 'Replica path',\n },\n {\n type: 'radio',\n name: 'state',\n caption: 'State',\n extras: {\n size: 's',\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n {\n type: 'radio',\n name: 'mode',\n caption: 'Mode',\n extras: {\n size: 's',\n options: [\n {value: 'async', label: 'Async'},\n {value: 'sync', label: 'Sync'},\n ],\n },\n },\n {\n type: 'radio',\n name: 'auto_replica_tracker',\n caption: 'Automatic mode switch',\n extras: {\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n ...(!error\n ? []\n : [\n {\n type: 'block' as const,\n name: 'error',\n extras: {\n children: (\n <div className={block('error')}>\n <Error error={error} />\n </div>\n ),\n },\n },\n ]),\n ]}\n />\n );\n}\n","import reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\n\nimport {createSelector} from 'reselect';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getNavigationReplicatedTableLoadingStatus = createSelector(\n [\n (store: RootState) => store.navigation.content.replicatedTable.loading,\n (store: RootState) => store.navigation.content.replicatedTable.loaded,\n (store: RootState) => store.navigation.content.replicatedTable.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getReplicatedTableReplicas = (state: RootState) =>\n state.navigation.content.replicatedTable.replicas;\n\nexport const getReplicatedTableData = (state: RootState) =>\n state.navigation.content.replicatedTable;\n\nexport const getAllowEnableReplicatedTracker = createSelector(\n [getReplicatedTableReplicas],\n (replicas) => {\n return some_(replicas, (item) => {\n return Boolean(ypath.getValue(item, '/@replicated_table_tracker_enabled'));\n });\n },\n);\n\nexport const getReplicatedTableReplicasMap = createSelector(\n [getReplicatedTableReplicas],\n (replicas) => {\n return reduce_(\n replicas,\n (acc, {$value, $attributes}) => {\n acc[$value] = {\n error_count: ypath.getNumberDeprecated($attributes, '/error_count'),\n cluster_name: ypath.getValue($attributes, '/cluster_name'),\n mode: ypath.getValue($attributes, '/mode'),\n replica_path: ypath.getValue($attributes, '/replica_path'),\n replicated_table_tracker_enabled: ypath.getBoolean(\n $attributes,\n '/replicated_table_tracker_enabled',\n ),\n replication_lag_time: ypath.getNumberDeprecated(\n $attributes,\n '/replication_lag_time',\n ),\n state: ypath.getValue($attributes, '/state'),\n };\n return acc;\n },\n {} as Record<\n string,\n {\n error_count: number;\n cluster_name: string;\n mode: string;\n replica_path: string;\n replicated_table_tracker_enabled: boolean;\n replication_lag_time: number;\n state: string;\n }\n >,\n );\n },\n);\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport TableActions from '../../../../pages/navigation/content/Table/TableOverview/TableActions';\nimport TableMeta from '../../../../pages/navigation/content/Table/TableMeta/TableMeta';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport StatusBulb from '../../../../components/StatusBulb/StatusBulb';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\n\nimport {\n abortAndReset,\n loadReplicas,\n performReplicaAction,\n updateEnableReplicatedTableTracker,\n} from '../../../../store/actions/navigation/content/replicated-table';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {HEADER_HEIGHT, Page} from '../../../../constants/index';\n\nimport {ReplicatedTableSettingsButton} from './ReplicatedTableSettings';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport {\n getAllowEnableReplicatedTracker,\n getNavigationReplicatedTableLoadingStatus,\n getReplicatedTableData,\n} from '../../../../store/selectors/navigation/content/replicated-table';\n\nimport './ReplicatedTable.scss';\nimport {CypressNodeTypes} from '../../../../utils/cypress-attributes';\n\nconst block = cn('navigation-replicated-table');\n\nconst tableSets = {\n default: {\n items: [\n 'name',\n 'cluster',\n 'mode',\n 'error_count',\n 'replication_lag_time',\n 'state',\n 'actions',\n ],\n },\n 'with-auto-switch': {\n items: [\n 'name',\n 'cluster',\n 'mode',\n 'error_count',\n 'replication_lag_time',\n 'automatic_mode_switch',\n 'state',\n 'actions',\n ],\n },\n};\n\nclass ReplicatedTable extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object,\n\n path: PropTypes.string.isRequired,\n replicas: PropTypes.array.isRequired,\n attributes: PropTypes.object.isRequired,\n\n loadReplicas: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n performReplicaAction: PropTypes.func.isRequired,\n type: PropTypes.string.isRequired,\n };\n\n static tableItems = {\n name: {\n align: 'left',\n caption: 'Id / Path',\n sort: false,\n },\n cluster: {\n align: 'left',\n sort: false,\n get(replica) {\n return ypath.getValue(replica, '/@cluster_name');\n },\n },\n mode: {\n align: 'left',\n sort: false,\n get(replica) {\n return ypath.getValue(replica, '/@mode');\n },\n },\n error_count: {\n align: 'center',\n caption: 'Error count',\n get(replica) {\n return ypath.getValue(replica, '/@error_count');\n },\n },\n errors: {\n align: 'left',\n get(replica) {\n return ypath.getValue(replica, '/@errors');\n },\n },\n replication_lag_time: {\n align: 'right',\n get(replica) {\n return ypath.getValue(replica, '/@replication_lag_time');\n },\n },\n state: {\n align: 'center',\n get(replica) {\n return ypath.getValue(replica, '/@state');\n },\n },\n automatic_mode_switch: {\n align: 'center',\n get(replica) {\n const flag = ypath.getValue(replica, '/@replicated_table_tracker_enabled');\n return flag === 'true' || flag === true;\n },\n },\n actions: {\n align: 'center',\n caption: '',\n },\n };\n\n static renderField(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return !value ? hammer.format.NO_VALUE : value;\n }\n\n static renderAsReadableField(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return hammer.format['ReadableField'](value);\n }\n\n static renderAsTimeDuration(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return hammer.format['TimeDuration'](Number(value));\n }\n\n static renderName(replica) {\n const value = ypath.getValue(replica, '');\n const attributes = ypath.getValue(replica, '/@');\n const [path, cluster] = ypath.getValues(attributes, ['/replica_path', '/cluster_name']);\n const copy = {\n pathTitle: 'Copy replica path',\n idTitle: 'Copy replica id',\n };\n\n const replicaLink = <Link url={`/${cluster}/${Page.NAVIGATION}?path=${path}`}>{path}</Link>;\n\n return (\n <div>\n <span className=\"elements-ellipsis elements-monospace\">\n <ClipboardButton\n text={value}\n view=\"flat-secondary\"\n size=\"s\"\n title={copy.idTitle}\n />\n {value}\n </span>\n <br />\n <span className=\"elements-ellipsis elements-secondary-text\">\n <ClipboardButton\n text={path}\n view=\"flat-secondary\"\n size=\"s\"\n title={copy.pathTitle}\n />{' '}\n Path {replicaLink}\n </span>\n </div>\n );\n }\n\n static renderErrors() {\n return hammer.format.NO_VALUE; // No more supported by server\n }\n\n static renderState(item, columnName) {\n const state = ReplicatedTable.tableItems[columnName].get(item);\n\n return <StatusBulb theme={state} />;\n }\n\n static renderAutomaticModeSwitch(enableTableTracker, item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n const theme = !enableTableTracker ? 'unknown' : value ? 'enabled' : 'disabled';\n const title = value ? 'Enabled' : 'Disabled';\n return (\n <Tooltip content={enableTableTracker ? title : 'Disabled by table settings'}>\n <StatusBulb theme={theme} className={block('auto-switch', {})} />\n {!enableTableTracker && (\n <Icon\n color=\"secondary\"\n awesome=\"question-circle\"\n className={block('info-icon')}\n />\n )}\n </Tooltip>\n );\n }\n\n componentDidMount() {\n this.props.loadReplicas();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.path !== this.props.path) {\n this.props.loadReplicas();\n }\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n get tableSettings() {\n const {loading, loaded, tableMode, enable_replicated_table_tracker} = this.props;\n\n return {\n css: block(),\n theme: 'light',\n size: 's',\n striped: false,\n itemHeight: 65,\n isLoading: loading && !loaded,\n columns: {\n items: ReplicatedTable.tableItems,\n sets: tableSets,\n mode: tableMode,\n },\n templates: {\n name: ReplicatedTable.renderName,\n cluster: ReplicatedTable.renderField,\n mode: ReplicatedTable.renderField,\n errors: ReplicatedTable.renderErrors,\n error_count: ReplicatedTable.renderAsReadableField,\n state: ReplicatedTable.renderState,\n automatic_mode_switch: ReplicatedTable.renderAutomaticModeSwitch.bind(\n null,\n enable_replicated_table_tracker,\n ),\n replication_lag_time: ReplicatedTable.renderAsTimeDuration,\n actions: this.renderActions,\n },\n computeKey(item) {\n return item.$value;\n },\n };\n }\n\n renderActions = (replica) => {\n const {attributes, performReplicaAction} = this.props;\n const replicaValue = ypath.getValue(replica, '');\n const replicaAttributes = ypath.getValue(replica, '/@');\n\n const isAsync = replicaAttributes.mode === 'async';\n const atomicity = attributes?.atomicity;\n const replicaData = {\n caption: replicaValue,\n attributes:\n isAsync && atomicity ? {...replicaAttributes, atomicity} : replicaAttributes,\n };\n\n const onApply = (modeState) => {\n return performReplicaAction({...modeState, replica});\n };\n\n const replicatedTableTracker = ypath.getValue(\n replica,\n '/@replicated_table_tracker_enabled',\n );\n\n return (\n <span>\n <ClickableAttributesButton\n title={replicaData.caption}\n attributes={replicaData.attributes}\n withTooltip\n />\n <ReplicatedTableSettingsButton\n replica_cluster={ypath.getValue(replica, '/@cluster_name')}\n replica_path={ypath.getValue(replica, '/@replica_path')}\n state={ypath.getValue(replica, '/@state')}\n mode={ypath.getValue(replica, '/@mode')}\n auto_replica_tracker={\n replicatedTableTracker === 'true' || replicatedTableTracker === true\n ? 'enabled'\n : 'disabled'\n }\n onApply={onApply}\n />\n </span>\n );\n };\n\n updateEnableReplicatedTableTracker = (value) => {\n const {updateEnableReplicatedTableTracker, path} = this.props;\n return updateEnableReplicatedTableTracker(path, value);\n };\n\n render() {\n const {replicas, type} = this.props;\n const hasActions = type !== CypressNodeTypes.CHAOS_REPLICATED_TABLE;\n\n return (\n <LoadDataHandler {...this.props}>\n <div className={block()}>\n <TableMeta\n onEditEnableReplicatedTableTracker={this.updateEnableReplicatedTableTracker}\n />\n\n <StickyContainer>\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n })}\n >\n {hasActions && <TableActions block={block} />}\n </div>\n )}\n </Sticky>\n </StickyContainer>\n\n <ElementsTable {...this.tableSettings} items={replicas} />\n </div>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, replicas} = getReplicatedTableData(state);\n const allowEnableReplicatedTracker = getAllowEnableReplicatedTracker(state);\n const path = getPath(state);\n const attributes = getAttributes(state);\n\n const [enable_replicated_table_tracker, type] = ypath.getValues(attributes, [\n '/replicated_table_options/enable_replicated_table_tracker',\n '/type',\n ]);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n replicas,\n attributes,\n tableMode: allowEnableReplicatedTracker ? 'with-auto-switch' : 'default',\n enable_replicated_table_tracker,\n type,\n };\n};\n\nconst mapDispatchToProps = {\n loadReplicas,\n abortAndReset,\n performReplicaAction,\n updateEnableReplicatedTableTracker,\n};\n\nconst ReplicatedTableConnected = connect(mapStateToProps, mapDispatchToProps)(ReplicatedTable);\n\nexport default function ReplicatedTableWithRum() {\n const loadState = useSelector(getNavigationReplicatedTableLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_REPLICATED_TABLE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_REPLICATED_TABLE,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <ReplicatedTableConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {updateEnableReplicatedTableTracker} from '../../../../store/actions/navigation/content/replicated-table';\n\nimport './ReplicatedTable.scss';\nimport TableMeta from '../Table/TableMeta/TableMeta';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nconst block = cn('navigation-replicated-table');\n\nexport default function ReplicatedTableMeta() {\n const path = useSelector(getPath);\n const dispatch = useDispatch();\n\n const onEdit = (value?: boolean) => {\n return dispatch(\n updateEnableReplicatedTableTracker(path, value),\n ) as unknown as Promise<void>;\n };\n\n return (\n <div className={block()}>\n <TableMeta onEditEnableReplicatedTableTracker={onEdit} />\n </div>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport PropTypes from 'prop-types';\nimport {connect, useSelector} from 'react-redux';\n\nimport {main} from '../../../../components/MetaTable/presets';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\n\nimport {getAttributesWithTypes, getLoadState} from '../../../../store/selectors/navigation';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nconst block = cn('navigation-link');\n\nfunction Link({attributes}) {\n const [targetPath, broken] = ypath.getValues(attributes, ['/target_path', '/broken']);\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n main(attributes),\n [\n {key: 'target_path', value: targetPath},\n {key: 'broken', value: broken},\n ],\n ]}\n />\n </div>\n );\n}\n\nLink.propTypes = {\n // from connect\n attributes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const attributes = getAttributesWithTypes(state);\n\n return {attributes};\n};\n\nconst LinkConnected = connect(mapStateToProps)(Link);\n\nexport default function LinkWithRum() {\n const loadState = useSelector(getLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_LINK,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_LINK,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <LinkConnected />;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {createSelector} from 'reselect';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getCurrentClusterConfig} from '../../../../store/selectors/global';\nimport {MAX_FILE_SIZE} from '../../../../constants/navigation/content/file';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\nimport {makeDirectDownloadPath} from '../../../../utils/navigation';\n\nexport const getDownloadPath = createSelector(\n [getPath, getCurrentClusterConfig],\n (cypressPath, {id: cluster, proxy, externalProxy}) => {\n const path = makeDirectDownloadPath('read_file', {cluster, proxy, externalProxy});\n const query = [\n 'path=' + encodeURIComponent(cypressPath),\n 'disposition=attachment',\n 'dump_error_into_response=true',\n ].join('&');\n\n return path + '?' + query;\n },\n);\n\nexport const getIsEmpty = createSelector(getAttributes, (attributes) => {\n return ypath.getValue(attributes, '/resource_usage/disk_space') === 0;\n});\n\nexport const getIsTooBig = createSelector(getAttributes, (attributes) => {\n return ypath.getValue(attributes, '/uncompressed_data_size') > MAX_FILE_SIZE;\n});\n\nexport const getNavigationFileLoadingStatus = createSelector(\n [\n (store) => store.navigation.content.file.loading,\n (store) => store.navigation.content.file.loaded,\n (store) => store.navigation.content.file.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {LOAD_FILE, MAX_FILE_SIZE} from '../../../../constants/navigation/content/file';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function loadFile() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_FILE.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3\n .readFile({\n parameters: prepareRequest({path, transaction, length: MAX_FILE_SIZE}),\n cancellation: requests.saveCancelToken,\n })\n .then((file) => {\n dispatch({\n type: LOAD_FILE.SUCCESS,\n data: {file},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_FILE.CANCELLED});\n } else {\n dispatch({\n type: LOAD_FILE.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_FILE.CANCELLED});\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getCluster} from '../../store/selectors/global';\nimport {getPath, getType} from '../../store/selectors/navigation';\nimport {getNavigationPathAttributes} from '../../store/selectors/navigation/navigation';\nimport UIFactory from '../../UIFactory';\n\nfunction NavigationExtraActions({className}: {className?: string}) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n const type = useSelector(getType);\n const attributes = useSelector(getNavigationPathAttributes);\n\n return (\n <>\n {UIFactory.renderNavigationExtraActions({\n className,\n path,\n cluster,\n type,\n attributes,\n })}\n </>\n );\n}\n\nexport default React.memo(NavigationExtraActions);\n","import React, {Fragment, useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {\n compression,\n erasureReplication,\n main,\n size,\n} from '../../../../components/MetaTable/presets';\nimport {Button, Loader} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n getDownloadPath,\n getIsEmpty,\n getIsTooBig,\n getNavigationFileLoadingStatus,\n} from '../../../../store/selectors/navigation/content/file';\nimport {abortAndReset, loadFile} from '../../../../store/actions/navigation/content/file';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './File.scss';\nimport NavigationExtraActions from '../../../../containers/NavigationExtraActions/NavigationExtraActions';\n\nconst block = cn('navigation-file');\nconst messageBlock = cn('elements-message');\nconst codeBlock = cn('elements-code');\n\nconst renderMeta = (attributes, mediumList) => {\n return (\n <MetaTable\n items={[\n main(attributes),\n size(attributes, mediumList),\n [...compression(attributes), ...erasureReplication(attributes)],\n ]}\n />\n );\n};\n\nconst renderActions = (downloadPath) => {\n return (\n <div className={block('actions')}>\n <Button className={block('download')} href={downloadPath} target=\"_blank\">\n Download\n </Button>\n <NavigationExtraActions />\n </div>\n );\n};\n\nconst renderEmptyWarning = () => {\n return (\n <div className={messageBlock({theme: 'warning'})}>\n <p className={messageBlock('paragraph')}>File is empty.</p>\n </div>\n );\n};\n\nconst renderTooBigInfo = (downloadPath) => {\n return (\n <div className={messageBlock({theme: 'info'})}>\n <p className={messageBlock('paragraph')}>\n The file is too big to be fully shown here. You can{' '}\n <Link url={downloadPath} target=\"_blank\">\n download\n </Link>{' '}\n it.\n </p>\n </div>\n );\n};\n\nconst renderContent = (file, isTooBig, downloadPath) => {\n return (\n <Fragment>\n <pre className={codeBlock({theme: 'default'})}>{file}</pre>\n\n {isTooBig && renderTooBigInfo(downloadPath)}\n </Fragment>\n );\n};\n\nfunction File(props) {\n const {path, mode, loadFile, abortAndReset} = props;\n useEffect(() => {\n loadFile();\n return abortAndReset;\n }, [path, mode]);\n\n const {loading, loaded, attributes, mediumList, downloadPath, isEmpty, isTooBig, file} = props;\n const initialLoading = loading && !loaded;\n return (\n <LoadDataHandler {...props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <Fragment>\n {renderMeta(attributes, mediumList)}\n {renderActions(downloadPath)}\n {isEmpty\n ? renderEmptyWarning()\n : renderContent(file, isTooBig, downloadPath)}\n </Fragment>\n )}\n </div>\n </LoadDataHandler>\n );\n}\n\nFile.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n file: PropTypes.string,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n isEmpty: PropTypes.bool.isRequired,\n isTooBig: PropTypes.bool.isRequired,\n attributes: PropTypes.object.isRequired,\n downloadPath: PropTypes.string.isRequired,\n mediumList: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n\n loadFile: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, file} = state.navigation.content.file;\n const {mediumList} = state.global;\n\n const downloadPath = getDownloadPath(state);\n const attributes = getAttributes(state);\n const isTooBig = getIsTooBig(state);\n const isEmpty = getIsEmpty(state);\n const path = getPath(state);\n const mode = getEffectiveMode(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n mediumList,\n attributes,\n path,\n mode,\n isEmpty,\n isTooBig,\n downloadPath,\n file,\n };\n};\nconst mapDispatchToProps = {\n loadFile,\n abortAndReset,\n};\n\nconst FileConnected = connect(mapStateToProps, mapDispatchToProps)(File);\n\nexport default function FileWithRum() {\n const loadState = useSelector(getNavigationFileLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_FILE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_FILE,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <FileConnected />;\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport DataTable from '@gravity-ui/react-data-table';\nimport {Loader} from '@gravity-ui/uikit';\nimport {getSettingTableDisplayRawStrings} from '../../../../../store/selectors/settings';\nimport {getSchemaByName} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {showCellPreviewModal} from '../../../../../store/actions/navigation/modals/cell-preview';\nimport {prepareColumns} from '../../../../../utils/navigation/prepareColumns';\n\nimport './DataTableWrapper.scss';\n\nconst block = cn('data-table-wrapper');\n\nconst rowKey = (row, index) => index;\n\nDataTableWrapper.propTypes = {\n isFullScreen: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n columns: PropTypes.array.isRequired,\n keyColumns: PropTypes.arrayOf(PropTypes.string),\n ysonSettings: PropTypes.object,\n yqlTypes: PropTypes.array,\n};\n\nexport default function DataTableWrapper(props) {\n const dispatch = useDispatch();\n const useRawStrings = useSelector(getSettingTableDisplayRawStrings);\n const schemaByName = useSelector(getSchemaByName);\n\n const {columns, keyColumns, ysonSettings, yqlTypes, loading, loaded, isFullScreen, ...rest} =\n props;\n\n const onShowPreview = React.useCallback(\n (columnName, rowIndex) => {\n dispatch(showCellPreviewModal(columnName, rowIndex));\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 &nbsp; Keys &nbsp;\n <span className=\"elements-secondary-text\">\n {visibleColumns.length + '/' + allColumns.length}\n </span>\n </Button>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {loading} = state.navigation.content.table;\n\n const visibleColumns = getVisibleColumns(state).filter((column) => column.keyColumn);\n const allColumns = getAllColumns(state).filter((column) => column.keyColumn);\n\n return {visibleColumns, loading, allColumns};\n};\n\nconst mapDispatchToProps = {\n openOffsetSelectorModal,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OffsetSelectorButton);\n","/* eslint-disable react/prop-types */\nimport React, {useState} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport {RangeInputPicker} from '../../../../../components/common/RangeInputPicker';\nimport Button from '../../../../../components/Button/Button';\nimport Filter from '../../../../../components/Filter/Filter';\nimport Icon from '../../../../../components/Icon/Icon';\nimport OffsetSelectorButton from '../../../../../pages/navigation/content/Table/TableOverview/OffsetSelectorButton';\n\nimport {\n getOffsetValue,\n getProgressWidth,\n getRowCount,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {moveOffset} from '../../../../../store/actions/navigation/content/table/pagination';\n\nimport './TableOverview.scss';\n\nTableOverview.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n isDynamic: PropTypes.bool.isRequired,\n rowCount: PropTypes.number.isRequired,\n progressWidth: PropTypes.string.isRequired,\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n moveOffset: PropTypes.func.isRequired,\n};\n\nconst renderInput = (props, {onEndEditing, onUpdate}) => {\n const {offsetValue, rowCount, isDynamic} = props;\n\n return isDynamic ? (\n <Filter\n iconLeft={<Icon awesome=\"key\" />}\n onBlur={(v) => {\n onEndEditing();\n onUpdate(v);\n }}\n value={offsetValue}\n placeholder=\"\"\n size=\"m\"\n pin={'brick-clear'}\n hasClear={false}\n />\n ) : (\n <RangeInputPicker\n iconLeft={<Icon awesome=\"hashtag\" />}\n onOutsideClick={onEndEditing}\n onAfterUpdate={onUpdate}\n onSubmit={onUpdate}\n maxValue={Math.max(0, rowCount - 1)}\n infoPointsCount={0}\n value={offsetValue}\n autoFocus\n size=\"m\"\n />\n );\n};\n\nconst renderPlaceholder = (props, handleStartEditing) => {\n const {block, isDynamic, offsetValue, progressWidth: width} = props;\n\n return (\n <div className={block('query-current')} onClick={handleStartEditing}>\n <Icon awesome={isDynamic ? 'key' : 'hashtag'} />\n {offsetValue || 'No offset'}\n {!isDynamic && <div className={block('query-progress')} style={{width}} />}\n </div>\n );\n};\n\nfunction TableOverview(props) {\n const {block, moveOffset, isDynamic} = props;\n const [editing, changeEditing] = useState(false);\n\n const onUpdate = (value) => moveOffset(value);\n\n const onEndEditing = () => {\n changeEditing(false);\n };\n\n const onStartEditing = () => {\n changeEditing(true);\n };\n\n return (\n <div className={block('input', {edit: editing, dynamic: isDynamic})}>\n {isDynamic && <OffsetSelectorButton disabled={editing} />}\n {editing\n ? renderInput(props, {onEndEditing, onUpdate})\n : renderPlaceholder(props, onStartEditing)}\n {isDynamic && (\n <Button\n size=\"m\"\n view=\"action\"\n title=\"Confirm\"\n pin=\"clear-round\"\n disabled={!editing}\n >\n Confirm\n </Button>\n )}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const progressWidth = getProgressWidth(state);\n const offsetValue = getOffsetValue(state);\n const isDynamic = getIsDynamic(state);\n const rowCount = getRowCount(state);\n\n return {progressWidth, offsetValue, rowCount, isDynamic};\n};\n\nconst mapDispatchToProps = {\n moveOffset,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TableOverview);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n// import {isSupportedSelector} from '../../../../../store/selectors/thor';\n\nimport Pagination from '../../../../../components/Pagination/Pagination';\n\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {\n getIsPaginationDisabled,\n getIsTableEndReached,\n getOffsetValue,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n moveOffsetToEnd,\n moveOffsetToLeft,\n moveOffsetToRight,\n moveOffsetToStart,\n} from '../../../../../store/actions/navigation/content/table/pagination';\n\nPaginator.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n error: PropTypes.bool.isRequired,\n\n isPaginationDisabled: PropTypes.bool.isRequired,\n isTableEndReached: PropTypes.bool.isRequired,\n isDynamic: PropTypes.bool.isRequired,\n // isSupported: PropTypes.func.isRequired,\n\n previousOffset: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n moveOffsetToStart: PropTypes.func.isRequired,\n moveOffsetToLeft: PropTypes.func.isRequired,\n moveOffsetToRight: PropTypes.func.isRequired,\n moveOffsetToEnd: PropTypes.func.isRequired,\n};\n\nfunction Paginator(props) {\n const {\n block,\n error,\n isPaginationDisabled,\n isTableEndReached,\n offsetValue,\n isDynamic /*, isSupported */,\n } = props;\n const {moveOffsetToStart, moveOffsetToLeft, moveOffsetToRight, moveOffsetToEnd} = props;\n const tooltip = isPaginationDisabled\n ? 'Select every key column in Column Selector to enable pagination'\n : undefined;\n // TODO: use when descending sorting will be implemented on backend\n\n return (\n <Pagination\n size=\"m\"\n tooltip={tooltip}\n className={block('pagination')}\n first={{\n handler: moveOffsetToStart,\n hotkeyHandler: moveOffsetToStart,\n hotkeyScope: 'all',\n hotkey: 'ctrl+shift+left, command+shift+left',\n disabled: !offsetValue || isPaginationDisabled,\n }}\n previous={{\n handler: moveOffsetToLeft,\n hotkeyHandler: moveOffsetToLeft,\n hotkeyScope: 'all',\n hotkey: 'ctrl+left, command+left',\n disabled: isDynamic || !offsetValue || isPaginationDisabled,\n // disabled: isDynamic && error || moveBackwardDisabled || !offsetValue || isPaginationDisabled,\n }}\n next={{\n handler: moveOffsetToRight,\n hotkeyHandler: moveOffsetToRight,\n hotkeyScope: 'all',\n hotkey: 'ctrl+right, command+right',\n disabled: (isDynamic && error) || isTableEndReached || isPaginationDisabled,\n }}\n last={{\n handler: moveOffsetToEnd,\n hotkeyHandler: moveOffsetToEnd,\n hotkeyScope: 'all',\n hotkey: 'ctrl+shift+right, command+shift+right',\n disabled: isDynamic || isTableEndReached || isPaginationDisabled,\n // disabled: isTableEndReached || moveBackwardDisabled || isPaginationDisabled,\n }}\n />\n );\n}\n\nconst mapStateToProps = (state) => {\n const {error} = state.navigation.content.table;\n\n const isPaginationDisabled = getIsPaginationDisabled(state);\n const isTableEndReached = getIsTableEndReached(state);\n const offsetValue = getOffsetValue(state);\n const isDynamic = getIsDynamic(state);\n // const isSupported = isSupportedSelector(state);\n\n return {\n error,\n isDynamic,\n offsetValue,\n isPaginationDisabled,\n isTableEndReached,\n // isSupported,\n };\n};\n\nconst mapDispatchToProps = {\n moveOffsetToStart,\n moveOffsetToLeft,\n moveOffsetToRight,\n moveOffsetToEnd,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Paginator);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {Button} from '@gravity-ui/uikit';\nimport {QueryEngine} from '../../../../query-tracker/module/engines';\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {createQueryFromTablePath} from '../../../../query-tracker/module/query/actions';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {createNewQueryUrl} from '../../../../query-tracker/utils/navigation';\nimport {useQueryWidgetSidePanel} from '../../../../query-tracker/QueryWidget/side-panel';\nimport './CreateQueryFromTable.scss';\n\nconst b = cn('create-query-btn');\n\nexport function CreateQueryFromTable({className}: {className: string}) {\n const {openWidget, widgetOpened, widgetContent} = useQueryWidgetSidePanel();\n\n const dispatch = useDispatch();\n\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n\n const handleOpen = React.useCallback(() => {\n dispatch(createQueryFromTablePath(QueryEngine.YQL, cluster, path));\n openWidget();\n }, [path, cluster, openWidget, dispatch]);\n\n return (\n <>\n <div className={b(null, className)}>\n <Button\n onClick={handleOpen}\n pin=\"round-clear\"\n view=\"action\"\n className={b('btn')}\n disabled={widgetOpened}\n title=\"Open Queries widget\"\n >\n YQL query\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 {widgetContent}\n </>\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 const sorted = ypath.getValue(attributesMap[path], '/@sorted');\n return {\n spec: Object.assign(\n {\n input_table_paths: [path],\n output_table_path: path,\n force_transform: true,\n },\n sorted ? {mode: 'sorted'} : {},\n ),\n ...EDIT_MERGE_MARKER,\n };\n };\n\n if (staticTables.length < 6) {\n const promises = map_(staticTables, (path) => {\n return wrapApiPromiseByToaster(yt.v3.merge(prepareMergeParams(path)), {\n toasterName: 'storage_attrs_' + path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Merge operation is started',\n errorTitle: 'Merge operation is failed',\n autoHide: false,\n });\n });\n return Promise.all(promises);\n } else {\n const requests = map_(staticTables, (path) => {\n return {\n command: 'merge' as const,\n parameters: prepareMergeParams(path),\n };\n });\n return executeBatchWithRetries(YTApiId.attributesEditorMerge, requests, {\n errorTitle: 'Failed to start some operations',\n }).then((results: any) => {\n const error = getBatchError(results, 'Failed to start some operations');\n if (error) {\n throw error;\n }\n\n const toaster = new Toaster();\n toaster.add({\n theme: 'success',\n name: 'merge_' + staticTables.join(','),\n title: `${staticTables.length} operations are started`,\n content: (\n <span>\n Please visit\n <Link url={`/${cluster}/operations`}> operations </Link>\n page to see more details\n </span>\n ),\n });\n });\n }\n })\n .then(() => {\n dispatch(updateView());\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {paths: undefined, visible: false},\n });\n })\n .catch((e: any) => {\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n data: e,\n });\n return Promise.reject(e);\n });\n };\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport React from 'react';\nimport moment from 'moment';\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';\n\nconst toaster = new Toaster();\n\nfunction prepareRestorePath(path, type) {\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(item, multipleMode = false) {\n return (dispatch, getState) => {\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, type) => {\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) => {\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}) {\n return (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 timeout: 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) {\n return (dispatch) => {\n dispatch({type: LOAD_REAL_PATH.REQUEST});\n\n const requests = 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);\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 timeout: 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, name, login) =>\n `//tmp/trash/by-account/${account}/${login}/${name}_${moment().unix()}`;\n\nfunction deleteCurrentObject(path, restorePath) {\n return (dispatch, getState) => {\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 timeout: 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 timeout: 10000,\n title: 'Object deleted',\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, getState) => {\n const {navigation} = getState();\n const {realPath, item} = navigation.modals.deleteObject;\n const {transaction} = navigation.navigation;\n\n const path = preparePath(realPath, item.type);\n const restorePath = prepareRestorePath(realPath, item.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 timeout: 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 timeout: 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, transaction) {\n const requests = map_(multipleInfo, (node) => {\n const path = preparePath(node.path, node.type);\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 timeout: 10000,\n title: 'Objects have been permanently deleted.',\n });\n });\n}\n\nfunction moveObjectsIntoTrash(multipleInfo, transaction, login) {\n const setAttributesRequests = 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 = map_(multipleInfo, (node) => {\n const path = preparePath(node.path, node.type);\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 timeout: 10000,\n title: 'Objects deleted',\n content: 'Objects have been moved to the trash',\n });\n });\n}\n\nexport function deleteObjects() {\n return (dispatch, getState) => {\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 timeout: 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) => {\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) => {\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 timeout: 10000,\n title: 'Could not delete the nodes.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n });\n };\n}\n","import React from 'react';\nimport {TABLE_ERASE_MODAL_PARTIAL} from '../../../../constants/navigation/modals/table-erase-modal';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {RootState} from '../../../reducers';\nimport {ThunkAction} from 'redux-thunk';\nimport {wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {makeUiMarker} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\n\nexport function showTableEraseModal(path: string) {\n return {type: TABLE_ERASE_MODAL_PARTIAL, data: {visible: true, path}};\n}\n\nexport function hideTableEraseModal() {\n return {\n type: TABLE_ERASE_MODAL_PARTIAL,\n data: {visible: false, path: undefined},\n };\n}\n\ntype EraseThunkAction = ThunkAction<any, RootState, any, any>;\n\nexport function runTableErase({\n path,\n from,\n to,\n combine_chunks,\n}: {\n path: string;\n from?: number;\n to?: number;\n combine_chunks?: boolean;\n}): EraseThunkAction {\n return () => {\n if (!path) {\n throw Error('Path cannot be empty for \"erase\" operation');\n }\n let range = '';\n if (!isNaN(from!) && !isNaN(to!)) {\n range = `[#${from}:#${to}]`;\n } else if (!isNaN(from!)) {\n range = `[#${from}:]`;\n } else if (!isNaN(to!)) {\n range = `[:#${to}]`;\n }\n\n return wrapApiPromiseByToaster(\n yt.v3.erase({\n spec: {\n table_path: path + range,\n combine_chunks,\n },\n ...makeUiMarker(`${Page.NAVIGATION}:erase`),\n }),\n {\n toasterName: 'table_erase_' + path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo id={opId} type={'erase'} />\n </AppStoreProvider>\n );\n },\n successTitle: 'Erase operation is started',\n errorTitle: 'Erase operation is failed',\n autoHide: false,\n },\n );\n };\n}\n","import unipika from '../../../../common/thor/unipika';\nimport ypath from '../../../../common/thor/ypath';\nimport {prepareNavigationState} from '../../../../utils/navigation';\n\nexport class Node {\n static CAPTION_PRINT_SETTINGS = {\n indent: 0,\n break: false,\n binaryAsHex: false,\n highlightControlCharacter: true,\n escapeWhitespace: true,\n format: 'json',\n };\n\n static TITLE_PRINT_SETTINGS = Object.assign(\n {\n asHTML: false,\n },\n Node.CAPTION_PRINT_SETTINGS,\n );\n\n static SUPPORTS_RESOURCE_USAGE = {\n table: true,\n file: true,\n journal: true,\n document: true,\n };\n\n static prepareTitle(name: string) {\n return unipika.prettyprint(name, Node.TITLE_PRINT_SETTINGS);\n }\n\n static prepareCaption(name: string) {\n return unipika.prettyprint(name, Node.CAPTION_PRINT_SETTINGS);\n }\n\n static getResource(node: any, name: string) {\n return Node.SUPPORTS_RESOURCE_USAGE[\n ypath.getValue(node, '/@type') as keyof typeof Node.SUPPORTS_RESOURCE_USAGE\n ]\n ? ypath.getValue(node, '/@resource_usage/' + name)\n : ypath.getValue(node.recursiveResourceUsage, '/' + name);\n }\n\n name: string;\n $value: string;\n $attributes?: Record<string, string>;\n type: string;\n iconType: string;\n title: string;\n caption: string;\n titleUnquoted: string;\n parsedPath: ReturnType<typeof ypath.YPath.clone>;\n parsedPathError?: {\n message: string;\n inner_errors: unknown[];\n };\n path: string;\n pathState: ReturnType<typeof prepareNavigationState>;\n recursiveResourceUsage: boolean;\n dataWeight: number;\n size: number;\n sizePerMedium: number;\n chunks: number;\n nodes: number;\n tabletStaticMemory: number;\n tablets: number;\n masterMemory: number;\n locks: number;\n account: string;\n modified: string;\n created: string;\n linkParsedPath?: ReturnType<typeof ypath.YPath.clone>;\n linkPathState?: ReturnType<typeof prepareNavigationState>;\n targetPath?: string;\n targetPathBroken?: boolean;\n targetPathState?: ReturnType<typeof prepareNavigationState>;\n\n dynamic?: boolean;\n rows?: number;\n unmergedRows?: number;\n chunkRows?: number;\n tabletState?: string;\n\n constructor(\n data: string,\n params: {parsedPath: string; transaction: string; contentMode: string},\n ) {\n const {parsedPath, transaction, contentMode} = params;\n\n const name = ypath.getValue(data);\n const attributes = ypath.getAttributes(data);\n\n this.$value = this.name = name;\n this.$attributes = attributes;\n\n this.type = attributes.type;\n this.iconType = attributes.type;\n\n this.title = Node.prepareTitle(this.name);\n this.caption = Node.prepareCaption(this.name);\n this.titleUnquoted = this.title.slice(1, -1);\n\n try {\n this.parsedPath = ypath.YPath.clone(parsedPath).concat(\n '/' + ypath.YPath.escapeSpecialCharacters(JSON.parse(this.title)),\n );\n } catch (e) {\n this.parsedPath = ypath.YPath.clone(parsedPath).concat(\n '/' + ypath.YPath.escapeSpecialCharacters(this.title),\n );\n this.parsedPathError = {\n message: `Node name cannot be parsed, try to enable 'Escape and highlight' option in your settings. `,\n inner_errors: [e],\n };\n }\n this.path = this.parsedPath.stringify();\n this.pathState = prepareNavigationState(\n this.parsedPath,\n transaction,\n undefined,\n contentMode,\n );\n\n // RESOURCES\n this.recursiveResourceUsage = attributes.recursive_resource_usage;\n\n this.dataWeight = ypath.getValue(this, '/@data_weight');\n this.size = Node.getResource(this, 'disk_space');\n this.sizePerMedium = Node.getResource(this, 'disk_space_per_medium');\n this.chunks = Node.getResource(this, 'chunk_count');\n this.nodes = Node.getResource(this, 'node_count');\n this.tabletStaticMemory = Node.getResource(this, 'tablet_static_memory');\n this.tablets = Node.getResource(this, 'tablet_count');\n this.masterMemory = Node.getResource(this, 'master_memory');\n\n this.locks = attributes.lock_count;\n\n this.account = attributes.account;\n this.modified = attributes.modification_time;\n this.created = attributes.creation_time;\n\n // LINKS\n if (this.type === 'link') {\n this.linkParsedPath = ypath.YPath.clone(this.parsedPath).concat('&');\n this.linkPathState = prepareNavigationState(this.linkParsedPath, transaction);\n this.targetPath = attributes.target_path;\n this.targetPathBroken = attributes.broken;\n this.targetPathState = this.targetPath\n ? prepareNavigationState(\n ypath.YPath.create(this.targetPath, 'absolute'),\n transaction,\n )\n : undefined;\n }\n\n // TABLE\n if (this.type === 'table') {\n this.dynamic = attributes.dynamic;\n this.rows = attributes.row_count;\n this.unmergedRows = attributes.unmerged_row_count;\n this.chunkRows = attributes.chunk_row_count;\n this.iconType = this.dynamic ? 'table_dynamic' : 'table';\n\n if (this.dynamic) {\n this.tabletState = attributes.tablet_state;\n }\n }\n }\n}\n","import chunk_ from 'lodash/chunk';\nimport filter_ from 'lodash/filter';\nimport findIndex_ from 'lodash/findIndex';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {prepareRequest, saveRequestCancellation} from '../../../../utils/navigation';\nimport {\n APPLY_CUSTOM_SORT,\n FETCH_NODES,\n NAVIGATION_MAP_NODE_TABLE_ID,\n SELECT_ALL,\n SET_CONTENT_MODE,\n SET_MEDIUM_TYPE,\n SET_SELECTED_ITEM,\n SET_TEXT_FILTER,\n UPDATE_RESOURCE_USAGE,\n} from '../../../../constants/navigation';\nimport {\n getFilteredNodes,\n getLastSelected,\n getNodesData,\n getSelected,\n getSortedNodes,\n isRootNode,\n shouldApplyCustomSort,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {changeColumnSortOrder} from '../../../../store/actions/tables';\nimport {RumWrapper, YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {getBatchError, showErrorPopup} from '../../../../utils/utils';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport hammer from '../../../../common/hammer';\nimport {GENERIC_ERROR_MESSAGE} from '../../../../constants';\nimport {isSupportedEffectiveExpiration} from '../../../../store/selectors/thor/support';\nimport {waitForFontFamilies} from '../../../../store/actions/global/fonts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction getList(path, transaction, cluster, allowEffectiveExpiration) {\n const id = new RumWrapper(cluster, RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE);\n return id.fetch(\n YTApiId.navigationListNodes,\n ytApiV3Id.list(\n YTApiId.navigationListNodes,\n prepareRequest({\n attributes: [\n 'type',\n 'dynamic',\n 'row_count', // Deprecated\n 'unmerged_row_count', // Deprecated\n 'chunk_row_count',\n 'modification_time',\n 'creation_time',\n 'resource_usage',\n 'data_weight',\n 'account',\n 'target_path',\n 'broken',\n 'lock_count',\n 'tablet_state',\n '_restore_path',\n 'expiration_time',\n 'expiration_timeout',\n ...(allowEffectiveExpiration ? ['effective_expiration'] : []),\n ...(UIFactory.getNavigationMapNodeSettings()?.additionalAttributes || []),\n ],\n path,\n transaction,\n }),\n saveRequestCancellation,\n ),\n );\n}\n\nexport function fetchNodes() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n const cluster = getCluster(state);\n\n const allowEffectiveExpiration = isSupportedEffectiveExpiration(state);\n\n dispatch({type: FETCH_NODES.REQUEST});\n return dispatch(\n waitForFontFamilies(getList(path, transaction, cluster, allowEffectiveExpiration)),\n )\n .then(ypath.getValue)\n .then((data) => {\n dispatch({\n type: FETCH_NODES.SUCCESS,\n data,\n });\n\n const applyCustomSort = shouldApplyCustomSort(getState());\n dispatch({\n type: APPLY_CUSTOM_SORT,\n data: applyCustomSort ? 'date' : '',\n });\n if (applyCustomSort) {\n dispatch(\n changeColumnSortOrder({\n tableId: NAVIGATION_MAP_NODE_TABLE_ID,\n columnName: 'name',\n asc: false,\n }),\n );\n }\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: FETCH_NODES.FAILURE,\n data: {\n message: 'Could not load list. ' + GENERIC_ERROR_MESSAGE,\n details: error,\n },\n });\n } else {\n dispatch({type: FETCH_NODES.CANCELLED});\n }\n });\n };\n}\n\nexport function updateResourceUsage() {\n const BATCH_LIMIT = 200;\n\n function updatedNodeData(nodeValue, newData) {\n return newData\n ? {\n $value: nodeValue.$value,\n $attributes: {\n ...nodeValue.$attributes,\n recursive_resource_usage: newData,\n },\n }\n : nodeValue;\n }\n\n return (dispatch, getState) => {\n const state = getState();\n\n let nodes = getFilteredNodes(state);\n nodes = filter_(nodes, (node) => !node.$attributes.recursive_resource_usage);\n\n if (isRootNode(state) || nodes.length === 0) {\n return;\n }\n\n dispatch({type: UPDATE_RESOURCE_USAGE.REQUEST});\n\n const nodesChunks = chunk_(nodes, BATCH_LIMIT);\n const batchedRequests = map_(nodesChunks, (nodesChunk) => {\n const requests = map_(nodesChunk, (node) => {\n return {\n command: 'get',\n parameters: {\n path: node.path + '&/@recursive_resource_usage',\n timeout: 60 * 1000,\n },\n };\n });\n\n return ytApiV3Id.executeBatch(YTApiId.navigationResourceUsage, {requests});\n });\n\n Promise.all(batchedRequests)\n .then((resultChunks) => {\n const dataMap = {};\n\n const errorResults = [];\n\n forEach_(nodes, (node, index) => {\n const resultChunkIndex = Math.floor(index / BATCH_LIMIT);\n const resultChunk = resultChunks[resultChunkIndex];\n const item = resultChunk[index % BATCH_LIMIT];\n\n if (item.error) {\n errorResults.push(item);\n } else if (item.output) {\n dataMap[node.$value] = item.output;\n }\n });\n\n dispatch({\n type: UPDATE_RESOURCE_USAGE.SUCCESS,\n data: map_(getNodesData(state), (nodeData) =>\n updatedNodeData(nodeData, dataMap[nodeData.$value]),\n ),\n });\n\n const error = getBatchError(errorResults, 'Failed to get resource usage');\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: UPDATE_RESOURCE_USAGE.FAILURE,\n data: {\n message: 'Failed to load resources. ' + GENERIC_ERROR_MESSAGE,\n details: error,\n },\n });\n const toast = new Toaster();\n toast.add({\n theme: 'danger',\n name: 'map_node_update_resources',\n timeout: 500000,\n title: 'Resource loading error',\n content: error ? error.message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n } else {\n dispatch({\n type: UPDATE_RESOURCE_USAGE.CANCELLED,\n });\n }\n });\n };\n}\n\nexport function setFilter(filter) {\n return (dispatch, getState) => {\n const path = getPath(getState());\n\n dispatch({\n type: SET_TEXT_FILTER,\n data: {filter, path},\n });\n };\n}\n\nexport function setContentMode(contentMode) {\n return {\n type: SET_CONTENT_MODE,\n data: contentMode,\n };\n}\n\nexport function setMediumType(mediumType) {\n return {\n type: SET_MEDIUM_TYPE,\n data: mediumType,\n };\n}\n\nexport function setSelectedItem(name, shiftKey) {\n return (dispatch, getState) => {\n const state = getState();\n const selected = {...getSelected(state)};\n if (selected[name] && !shiftKey) {\n delete selected[name];\n } else {\n selected[name] = true;\n }\n\n const lastSelected = getLastSelected(state);\n if (lastSelected && shiftKey) {\n const nodes = getSortedNodes(state);\n const lastIndex = findIndex_(nodes, (item) => lastSelected === item.name);\n if (-1 !== lastIndex) {\n const nameIndex = findIndex_(nodes, (item) => item.name === name);\n if (-1 !== nameIndex && lastIndex !== nameIndex) {\n const from = Math.min(lastIndex, nameIndex);\n const to = Math.max(lastIndex, nameIndex);\n for (let i = from; i <= to; ++i) {\n const item = nodes[i];\n selected[item.name] = true;\n }\n }\n }\n }\n\n dispatch({\n type: SET_SELECTED_ITEM,\n data: {selected, lastSelected: selected[name] ? name : undefined},\n });\n };\n}\n\nexport function selectAll(isAllSelected) {\n return (dispatch, getState) => {\n let selected = {};\n\n if (!isAllSelected) {\n const allNodes = getFilteredNodes(getState());\n\n selected = reduce_(\n allNodes,\n (res, node) => {\n res[ypath.getValue(node)] = true;\n return res;\n },\n {},\n );\n }\n\n dispatch({\n type: SELECT_ALL,\n data: {selected},\n });\n };\n}\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport {getIsAllSelected} from '../../../../store/selectors/navigation/content/map-node';\nimport {selectAll} from '../../../../store/actions/navigation/content/map-node';\n\nexport default function Chooser() {\n const dispatch = useDispatch();\n const isAllSelected = useSelector(getIsAllSelected);\n const handleSelectChange = useCallback(() => {\n dispatch(selectAll(isAllSelected));\n }, [dispatch, isAllSelected]);\n\n return <Checkbox id=\"all\" size=\"l\" checked={isAllSelected} onChange={handleSelectChange} />;\n}\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {RootState} from '../../../../store/reducers';\nimport {RemoteCopyModalStateAction} from '../../../../store/reducers/navigation/modals/remote-copy-modal';\nimport {REMOTE_COPY_MODAL_PARTIAL} from '../../../../constants/navigation/modals';\nimport {RemoteCopyParams} from '../../../../../@types/types';\nimport axios from 'axios';\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {showErrorPopup, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {YTError} from '../../../../types';\nimport {WithAttrs} from '../../../../utils/cypress-attributes';\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\n\ntype RemoteCopyThunkAction = ThunkAction<any, RootState, any, RemoteCopyModalStateAction>;\n\nexport function showRemoteCopyModal(paths: Array<string>): RemoteCopyThunkAction {\n return (dispatch) => {\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {\n path,\n attributes: ['compression_codec', 'erasure_codec'],\n },\n };\n });\n\n return wrapApiPromiseByToaster(\n ytApiV3.executeBatch<WithAttrs<{compression_codec?: string; erasure_codec?: string}>>({\n requests,\n }),\n {\n toasterName: 'remoteCopyAttributes',\n skipSuccessToast: true,\n errorContent(e: YTError) {\n return (\n <span>\n Failed to load attributes\n <ClickableText onClick={() => showErrorPopup(e)}>Details</ClickableText>\n </span>\n );\n },\n errorTitle: 'Failed to load attributes',\n isBatch: true,\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 [[editItem], mergeSortSection, restoreMoveCopy, transferItem, dynTablesSection];\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 &nbsp;Remove selected\n </Button>\n </span>\n\n <span className={b('item')}>\n <ClipboardButton\n buttonText={'Copy paths'}\n title=\"Copy selected paths\"\n onCopy={onCopyPathClick}\n />\n </span>\n\n <span className={b('item')}>\n <DropdownMenu\n disabled={allowModifyActions}\n switcher={dropdownButton}\n items={items}\n />\n </span>\n\n <span className={b('item')}>\n <ClickableText onClick={handleClearAll}>Clear all</ClickableText>\n </span>\n </span>\n );\n}\n","import React from 'react';\nimport {createSelector} from 'reselect';\n\nimport every_ from 'lodash/every';\nimport filter_ from 'lodash/filter';\nimport findIndex_ from 'lodash/findIndex';\nimport includes_ from 'lodash/includes';\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\nimport transform_ from 'lodash/transform';\nimport values_ from 'lodash/values';\n\nimport moment from 'moment';\n\nimport ypath from '../../../../common/thor/ypath';\nimport hammer from '../../../../common/hammer';\nimport {getParsedPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {makeGetSetting} from '../../../../store/selectors/settings';\nimport {NAMESPACES, SettingName} from '../../../../../shared/constants/settings';\nimport {ContentMode, NAVIGATION_MAP_NODE_TABLE_ID} from '../../../../constants/navigation';\nimport {Node} from '../../../../utils/navigation/content/map-nodes/node';\nimport {MediumType} from '../../../../constants/index';\nimport Chooser from '../../../../pages/navigation/content/MapNode/Chooser';\nimport MultipleActions from '../../../../pages/navigation/content/MapNode/MultipleActions';\nimport {DYN_TABLES_ALLOWED_ACTIONS_BY_STATE} from './map-node-ts';\n\nexport const getFilterState = (state) => state.navigation.content.mapNode.filter;\nexport const getMediumType = (state) => state.navigation.content.mapNode.mediumType;\n\nconst getCustomSort = (state) => state.navigation.content.mapNode.customSort;\nconst getTableColumns = createSelector(\n [getCustomSort, getMediumType],\n (customSort, mediumType) => ({\n chooser: {\n sort: false,\n align: 'center',\n renderHeader: () => <Chooser />,\n },\n icon: {\n sort: false,\n caption: '',\n align: 'center',\n },\n name: {\n sort: (node) => node.titleUnquoted,\n caption: () => {\n return customSort === 'date' ? 'Date' : 'Name';\n },\n align: 'left',\n },\n locks: {\n sort: (node) => node.locks,\n align: 'center',\n },\n account: {\n sort: (node) => node.account,\n align: 'left',\n },\n modification_time: {\n sort: (node) => moment(node.modified).unix(),\n align: 'right',\n },\n creation_time: {\n sort: (node) => moment(node.created).unix(),\n align: 'right',\n },\n disk_space: {\n get: (node) => {\n return mediumType === MediumType.ALL ? node.size : node.sizePerMedium?.[mediumType];\n },\n sort: true,\n align: 'right',\n },\n data_weight: {\n get: (node) => node.dataWeight,\n sort: true,\n align: 'right',\n },\n chunk_count: {\n get: (node) => node.chunks,\n sort: true,\n align: 'right',\n },\n node_count: {\n get: (node) => node.nodes,\n sort: true,\n align: 'right',\n },\n row_count: {\n get: (node) => node.chunkRows,\n sort: true,\n align: 'right',\n },\n tablet_static_memory: {\n get: (node) => node.tabletStaticMemory,\n caption: 'Tablet st.',\n title: 'Tablet static memory',\n sort: true,\n align: 'right',\n },\n master_memory: {\n get: (node) => node.masterMemory,\n caption: 'Master mem.',\n title: 'Master memory',\n sort: true,\n align: 'right',\n },\n tablet_count: {\n get: (node) => node.tablets,\n sort: true,\n align: 'right',\n },\n actions: {\n sort: false,\n caption: '',\n align: 'center',\n },\n multipleActions: {\n sort: false,\n align: 'center',\n renderHeader: () => <MultipleActions />,\n },\n }),\n);\nexport const getPreparedTableColumns = createSelector(getTableColumns, (columns) =>\n transform_(\n columns,\n (preparedColumns, column, name) => {\n preparedColumns[name] = {\n ...column,\n name,\n caption: typeof column.caption === 'function' ? column.caption() : column.caption,\n };\n },\n {},\n ),\n);\n\nexport const getContentMode = (state) => state.navigation.content.mapNode.contentMode;\nexport const getSelected = (state) => state.navigation.content.mapNode.selected;\nexport const getLastSelected = (state) => state.navigation.content.mapNode.lastSelected;\nconst getTextFilter = (state) => state.navigation.content.mapNode.filter;\n\nconst getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\nexport const getNodesData = (state) => state.navigation.content.mapNode.nodesData;\n\nconst getNodes = createSelector(\n [getNodesData, getParsedPath, getTransaction, getContentMode],\n (nodesData, parsedPath, transaction, contentMode) => {\n return map_(\n nodesData,\n (data) =>\n new Node(data, {\n parsedPath,\n transaction,\n contentMode: contentMode !== ContentMode.DEFAULT ? contentMode : undefined,\n }),\n );\n },\n);\n\nexport const getFilteredNodes = createSelector(\n [getNodes, makeGetSetting, getTextFilter],\n (nodes, getSetting, filter) => {\n const useSmartFilter = getSetting('useSmartFilter', NAMESPACES.NAVIGATION);\n if (useSmartFilter) {\n return hammer.filter.multifilter({\n data: nodes,\n input: filter,\n factors: ['titleUnquoted'],\n });\n } else {\n return hammer.filter.filter({\n data: nodes,\n input: filter,\n factors: ['titleUnquoted'],\n });\n }\n },\n);\n\nexport const getSelectedNodes = createSelector(\n [getSelected, getNodes, makeGetSetting, getSortState, getTableColumns],\n (selected, allNodes, getSetting, sortState, columns) => {\n const nodes = filter_(allNodes, (node) => Boolean(selected[ypath.getValue(node)]));\n const groupNodes = getSetting(SettingName.NAVIGATION.GROUP_NODES, NAMESPACES.NAVIGATION);\n const groupByType = groupNodes && {\n get: (node) => TYPE_WEIGHTS[node.type] || 0,\n asc: false,\n };\n\n return hammer.utils.sort(nodes, sortState, columns, {\n groupBy: groupByType,\n });\n },\n);\n\nexport const getSelectedPathMap = createSelector([getSelectedNodes], (nodes) => {\n return reduce_(\n nodes,\n (acc, {path}) => {\n acc[path] = true;\n return acc;\n },\n {},\n );\n});\n\nexport const isSelected = createSelector(getSelected, (selected) => {\n return includes_(values_(selected), true);\n});\n\nexport const getIsAllSelected = createSelector(\n [getSelected, getFilteredNodes],\n (selected, allNodes) => {\n const selectedNodes = keys_(selected);\n\n if (allNodes.length === 0) {\n return false;\n }\n\n return every_(values_(selected)) && selectedNodes.length === allNodes.length;\n },\n);\n\nexport const TYPE_WEIGHTS = map_(\n [\n 'tablet_cell',\n 'cell_node_map',\n 'cell_node',\n 'sys_node',\n 'access_control_object_namespace_map',\n 'access_control_object_namespace',\n 'topmost_transaction_map',\n 'transaction_map',\n 'map_node',\n 'link',\n 'table',\n 'file',\n 'document',\n 'journal',\n 'string_node',\n 'int64_node',\n 'uint64_node',\n 'double_node',\n 'boolean_node',\n ],\n (type, index, types) => ({type, weight: types.length - index}),\n).reduce((res, item) => {\n res[item.type] = item.weight;\n return res;\n}, {});\n\nexport const getSortedNodes = createSelector(\n [getFilteredNodes, getSortState, getTableColumns, makeGetSetting],\n (nodes, sortState, columns, getSetting) => {\n const groupNodes = getSetting(SettingName.NAVIGATION.GROUP_NODES, NAMESPACES.NAVIGATION);\n const groupByType = groupNodes && {\n get: (node) => TYPE_WEIGHTS[node.type] || 0,\n asc: false,\n };\n return hammer.utils.sort(nodes, sortState, columns, {\n groupBy: groupByType,\n });\n },\n);\n\nexport const getNodesInfo = createSelector(getSortedNodes, (nodes) => {\n const sumNodesType = hammer.aggregation.countValues(nodes, 'type');\n\n return map_(Object.entries(sumNodesType), (keyValue) => {\n const [key, value] = keyValue;\n const type = key === 'undefined' ? 'Unknown' : key;\n return {\n type: hammer.format['Readable'](type),\n count: value,\n };\n });\n});\n\nexport const isRootNode = createSelector(\n getParsedPath,\n (parsedPath) => parsedPath.stringify() === '/',\n);\n\nexport const getMapNodeResourcesLoading = (state) =>\n state.navigation.content.mapNode.resourcesLoading;\n\nconst DATE_REGEXP = /^\\d{4}[-]\\d{2}[-]\\d{2}(T\\d{2}:\\d{2}:\\d{2})?(\\.[a-zA-Z0-9]+)?$/;\nexport const shouldApplyCustomSort = createSelector(\n [getNodes, makeGetSetting, getSortState],\n (nodes, getSetting, sortState) =>\n getSetting(SettingName.NAVIGATION.USE_SMART_SORT, NAMESPACES.NAVIGATION) &&\n sortState?.field === 'name' &&\n every_(nodes, (item) => DATE_REGEXP.test(item.name)),\n);\n\nexport const getLoadState = (state) => state.navigation.content.mapNode.loadState;\nexport const getError = (state) => state.navigation.content.mapNode.error;\n\nexport const getSelectedIndex = createSelector(\n [getSortedNodes, getFilterState],\n (nodes, filter) => {\n if (filter) {\n const strictIndex = findIndex_(nodes, ({name}) => name === filter);\n\n if (strictIndex === -1) {\n return findIndex_(nodes, ({name}) => name.startsWith(filter));\n }\n\n return strictIndex;\n }\n\n return 0;\n },\n);\n\nexport const getSelectedNodesDynTablesStates = createSelector([getSelectedNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, item) => {\n if (item.tabletState) {\n acc[item.tabletState] = true;\n }\n return acc;\n },\n {frozen: false, mounted: false, unmounted: false},\n );\n return res;\n});\n\nexport const getSelectedNodesAllowedDynTablesActions = createSelector(\n [getSelectedNodesDynTablesStates],\n (dynTablesStates) => {\n const res = reduce_(\n dynTablesStates,\n (acc, value, state) => {\n if (value) {\n Object.assign(acc, DYN_TABLES_ALLOWED_ACTIONS_BY_STATE[state]);\n }\n return acc;\n },\n {mount: false, unmount: false, freeze: false, unfreeze: false},\n );\n return pickBy_(res, Boolean);\n },\n);\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\nimport {\n LinkToModalAction,\n LinkToState,\n} from '../../../../store/reducers/navigation/modals/link-to-modal';\nimport {RootState} from '../../../../store/reducers';\nimport {LINK_TO_MODAL_PARTIAL} from '../../../../constants/navigation/modals';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {getCluster} from '../../../../store/selectors/global';\nimport Link from '../../../../components/Link/Link';\n\ntype LinkToModalThunkAction<R = any> = ThunkAction<R, RootState, unknown, LinkToModalAction>;\n\nexport function showLinkToModal(\n params: {path?: string; target?: string} = {},\n): LinkToModalThunkAction {\n return (dispatch) => {\n const {path, target} = params;\n dispatch({\n type: LINK_TO_MODAL_PARTIAL,\n data: {path, target, visible: true},\n });\n };\n}\n\nexport function hideLinkToModal(): LinkToModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: LINK_TO_MODAL_PARTIAL,\n data: {visible: false, linkPath: undefined, dstPath: undefined},\n });\n };\n}\n\nexport function createLink(params: Pick<LinkToState, 'path' | 'target'>): LinkToModalThunkAction {\n return (dispatch, getState) => {\n const {target, path} = params;\n const cluster = getCluster(getState());\n\n return ytApiV3\n .create({\n path,\n type: 'link',\n attributes: {target_path: target},\n })\n .then(() => {\n dispatch(hideLinkToModal());\n const toast = new Toaster();\n toast.add({\n name: 'create-link',\n theme: 'success',\n title: 'Link created',\n content: <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link>,\n });\n });\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport metrics from '../../../../common/utils/metrics';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {inTrash} from '../../../../utils/navigation/restore-object';\nimport {getTransaction} from '../../../../store/selectors/navigation';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {OPEN_MOVE_OBJECT_POPUP} from '../../../../constants/navigation/modals/move-object';\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {OPEN_COPY_OBJECT_POPUP} from '../../../../constants/navigation/modals/copy-object';\nimport {openAttributesModal} from '../../../../store/actions/modals/attributes-modal';\nimport {showNavigationAttributesEditor} from '../../../../store/actions/navigation/modals/attributes-editor';\nimport {restoreObject} from '../../../../store/actions/navigation/modals/restore-object';\nimport {updateView} from '../../../../store/actions/navigation';\nimport {openDeleteModal} from '../../../../store/actions/navigation/modals/delete-object';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {showTableEraseModal} from '../../../../store/actions/navigation/modals/table-erase-modal';\nimport {getSelectedNodes} from '../../../../store/selectors/navigation/content/map-node';\nimport {showDynTablesStateModalByPaths} from '../../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {DYN_TABLES_ALLOWED_ACTIONS_BY_STATE} from '../../../../store/selectors/navigation/content/map-node-ts';\nimport {TabletStateType} from '../../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\nimport {showLinkToModal} from '../../../../store/actions/navigation/modals/link-to-modal';\nimport {showRemoteCopyModal} from '../../../../store/actions/navigation/modals/remote-copy-modal';\n\ninterface Props {\n item: {\n type: string;\n dynamic: boolean;\n path: string;\n $attributes: object;\n $value: unknown;\n tabletState: TabletStateType;\n };\n\n onlyDropdown?: boolean;\n dropDownBtnClassName?: string;\n dropDownBtnTheme?: ButtonProps['view'];\n dropDownBtnSize?: ButtonProps['size'];\n}\n\nfunction PathActions(props: Props) {\n const {item} = props;\n const objectPath = item.path;\n\n const dispatch = useDispatch();\n const transaction = useSelector(getTransaction);\n\n const restorePath = ypath.getValue(item.$attributes, '/_restore_path');\n const hasRestoreButton = inTrash(item.path);\n\n const {\n onMove,\n onCopy,\n onLink,\n onShowAttributes,\n onEditAttributes,\n onRestoreClick,\n onDeleteClick,\n onCopyPathClick,\n onSort,\n onErase,\n onMerge,\n onMount,\n onUnmount,\n onFreeze,\n onUnfreeze,\n onTransfer,\n } = React.useMemo(() => {\n const handleUpdateView = (...args: any) => dispatch(updateView(...args));\n\n return {\n onMove(evt: React.MouseEvent) {\n dispatch(openEditingPopup(objectPath, objectPath, OPEN_MOVE_OBJECT_POPUP));\n evt.stopPropagation();\n },\n onCopy(evt: React.MouseEvent) {\n dispatch(openEditingPopup(objectPath, objectPath, OPEN_COPY_OBJECT_POPUP));\n evt.stopPropagation();\n },\n onShowAttributes(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_attributes': 'clicked',\n });\n dispatch(\n openAttributesModal({\n title: item.$value,\n path: item.path,\n } as any),\n );\n evt.stopPropagation();\n },\n onEditAttributes(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_edit_attributes': 'clicked',\n });\n dispatch(showNavigationAttributesEditor([item.path]));\n evt.stopPropagation();\n },\n onRestoreClick(evt: React.MouseEvent) {\n dispatch(restoreObject(objectPath, restorePath, handleUpdateView));\n evt.stopPropagation();\n },\n\n onDeleteClick(evt: React.MouseEvent) {\n metrics.countEvent({'navigation_map-node_delete': 'clicked'});\n dispatch(openDeleteModal(item));\n evt.stopPropagation();\n },\n onCopyPathClick(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_copy-path': 'clicked',\n });\n evt.stopPropagation();\n },\n onSort(e: React.MouseEvent) {\n dispatch(showTableSortModal([item.path]));\n e.stopPropagation();\n },\n onErase(evt: React.MouseEvent) {\n dispatch(showTableEraseModal(item.path));\n evt.stopPropagation();\n },\n onMerge(evt: React.MouseEvent) {\n dispatch(showTableMergeModal([item.path]));\n evt.stopPropagation();\n },\n onMount(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'mount'));\n evt.stopPropagation();\n },\n onUnmount(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'unmount'));\n evt.stopPropagation();\n },\n onFreeze(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'freeze'));\n evt.stopPropagation();\n },\n onUnfreeze(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'unfreeze'));\n evt.stopPropagation();\n },\n onLink(evt: React.MouseEvent) {\n dispatch(showLinkToModal({target: item.path}));\n evt.stopPropagation();\n },\n onTransfer(evt: React.MouseEvent) {\n dispatch(showRemoteCopyModal([item.path]));\n evt.stopPropagation();\n },\n };\n }, [dispatch, objectPath, item, restorePath]);\n\n const selectedNodes = useSelector(getSelectedNodes);\n if (selectedNodes.length) {\n return null;\n }\n\n const secondGroup = [\n {\n text: 'Move',\n icon: <Icon awesome=\"file-export\" face=\"solid\" />,\n action: onMove,\n },\n {\n text: 'Copy',\n icon: <Icon awesome=\"copy\" face=\"solid\" />,\n action: onCopy,\n },\n {\n text: 'Link',\n icon: <Icon awesome=\"link\" face=\"solid\" />,\n action: onLink,\n },\n {\n text: 'Delete',\n icon: <Icon awesome=\"trash-alt\" />,\n action: onDeleteClick,\n },\n ];\n\n const firstGroup: Array<{\n text: string;\n icon?: React.ReactNode;\n action: (evt: any) => void;\n }> = [\n {\n text: 'Attributes',\n icon: <Icon awesome=\"at\" />,\n action: onShowAttributes,\n },\n {\n text: 'Edit',\n icon: <Icon awesome=\"pencil-alt\" />,\n action: onEditAttributes,\n },\n ];\n\n if (hasRestoreButton) {\n firstGroup.unshift({\n text: 'Restore',\n icon: <Icon awesome=\"undo\" />,\n action: onRestoreClick,\n });\n }\n const menuItems = [firstGroup];\n\n if (item.type === 'table') {\n const isDynamic = item.dynamic;\n if (isDynamic) {\n const {tabletState} = item;\n const {mount, unmount, freeze, unfreeze} =\n DYN_TABLES_ALLOWED_ACTIONS_BY_STATE[tabletState] || {};\n const items = [\n ...(mount\n ? [\n {\n text: 'Mount',\n icon: <Icon awesome={'link'} />,\n action: onMount,\n },\n ]\n : []),\n ...(unmount\n ? [\n {\n text: 'Unmount',\n icon: <Icon awesome={'unlink'} />,\n action: onUnmount,\n },\n ]\n : []),\n ...(freeze\n ? [\n {\n text: 'Freeze',\n icon: <Icon awesome={'snowflake'} />,\n action: onFreeze,\n },\n ]\n : []),\n ...(unfreeze\n ? [\n {\n text: 'Unfreeze',\n icon: <Icon awesome={'flame'} />,\n action: onUnfreeze,\n },\n ]\n : []),\n ];\n if (items.length) {\n menuItems.push(items);\n }\n }\n menuItems.push([\n {\n text: 'Sort',\n icon: <Icon awesome={'sort'} />,\n action: onSort,\n },\n ...(!isDynamic\n ? [\n {\n text: 'Erase',\n icon: <Icon awesome={'eraser'} />,\n action: onErase,\n },\n ]\n : []),\n {\n text: 'Merge',\n icon: <Icon awesome={'code-merge'} />,\n action: onMerge,\n },\n ]);\n }\n if (item.type === 'table' || item.type === 'file') {\n menuItems.push([\n {\n text: 'Remote copy',\n icon: <Icon awesome={'clone'} />,\n action: onTransfer,\n },\n ]);\n }\n\n menuItems.push(secondGroup);\n\n const commonProps = {\n view: 'flat-secondary' as const,\n size: 'm' as const,\n };\n\n const {\n onlyDropdown,\n dropDownBtnClassName,\n dropDownBtnTheme = 'flat-secondary',\n dropDownBtnSize = 'm',\n } = props;\n\n return (\n <React.Fragment>\n {!onlyDropdown && (\n <Button\n {...commonProps}\n title=\"Delete node\"\n disabled={Boolean(transaction)}\n onClick={onDeleteClick}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n )}\n\n {!onlyDropdown && (\n <ClipboardButton\n {...commonProps}\n text={item.path}\n title=\"Copy path\"\n onCopy={onCopyPathClick}\n />\n )}\n\n <DropdownMenu\n switcher={\n <Button\n size={dropDownBtnSize}\n className={dropDownBtnClassName}\n view={dropDownBtnTheme}\n >\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n );\n}\n\nexport default React.memo(PathActions);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport './EditTableAction.scss';\n\nimport {getNavigationPathAttributes} from '../../../../../store/selectors/navigation/navigation';\nimport PathActions from '../../MapNode/PathActions';\n\nconst block = cn('edit-table-actions');\n\nexport default function EditTableActions() {\n const path = useSelector(getPath);\n const attributes = useSelector(getNavigationPathAttributes);\n\n return (\n <PathActions\n onlyDropdown={true}\n dropDownBtnClassName={block('button')}\n dropDownBtnTheme={'outlined'}\n dropDownBtnSize={'m'}\n item={{\n path,\n type: 'table',\n dynamic: ypath.getValue(attributes, '/dynamic'),\n tabletState: ypath.getValue(attributes, '/tablet_state'),\n $value: undefined,\n $attributes: attributes,\n }}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {getNavigationTableDataLensButtonAlerts} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {Button} from '@gravity-ui/uikit';\nimport {Secondary, Warning} from '../../../../../components/Text/Text';\nimport Link from '../../../../../components/Link/Link';\nimport {getNavigationPathAttributesLoadState} from '../../../../../store/selectors/navigation/navigation';\nimport {LOADING_STATUS} from '../../../../../constants';\nimport {docsUrl} from '../../../../../config';\nimport {uiSettings} from '../../../../../config/ui-settings';\nimport UIFactory from '../../../../../UIFactory';\n\nexport default function DataLensButton({className}: {className: string}) {\n const loaded = useSelector(getNavigationPathAttributesLoadState) === LOADING_STATUS.LOADED;\n const cluster: string = useSelector(getCluster);\n const path = useSelector(getPath);\n const {isEmptySchema, enableDynamicStoreRedRequired} = useSelector(\n getNavigationTableDataLensButtonAlerts,\n );\n\n const {datalensBaseUrl, datalensAllowedCluster} = uiSettings;\n\n if (!datalensBaseUrl || !new Set(datalensAllowedCluster).has(cluster)) {\n return null;\n }\n const showTooltip = isEmptySchema || enableDynamicStoreRedRequired;\n\n const url = `${datalensBaseUrl}/datasets/new?id=CHYT_${cluster.toUpperCase()}&ytPath=${path}&action=autoCreate`;\n\n const btn = (\n <Button\n href={url}\n view={'action'}\n target=\"_blank\"\n title=\"Create dataset in DataLens\"\n disabled={!loaded || showTooltip}\n >\n <Icon awesome={'chart-bar'} />\n DataLens\n </Button>\n );\n\n const linkUrl = UIFactory.docsUrls['chyt:yt_tables#dynamic'];\n const content = !showTooltip ? (\n btn\n ) : (\n <Tooltip\n content={\n <Warning>\n {isEmptySchema && <div>Please make sure that the table has schema.</div>}\n {enableDynamicStoreRedRequired && (\n <div>\n Please make sure that the table has enabled{' '}\n <Secondary>enable_dynamic_store_read</Secondary> attribute.\n {linkUrl !== '' && docsUrl(<Link url={linkUrl}> Help </Link>)}\n </div>\n )}\n </Warning>\n }\n >\n {btn}\n </Tooltip>\n );\n\n return <div className={className}>{content}</div>;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport {Sticky} from 'react-sticky';\nimport {connect} from 'react-redux';\n\nimport ColumnSelectorButton from '../../../../../pages/navigation/content/Table/TableOverview/ColumnSelectorButton';\nimport FullScreenButton from '../../../../../pages/navigation/content/Table/TableOverview/FullScreenButton';\nimport SettingsButton from '../../../../../pages/navigation/content/Table/TableOverview/SettingsButton';\nimport JupyterButton from '../../../../../pages/navigation/content/Table/TableOverview/JupyterButton';\nimport TableActions from '../../../../../pages/navigation/content/Table/TableOverview/TableActions';\nimport OffsetInput from '../../../../../pages/navigation/content/Table/TableOverview/OffsetInput';\nimport Paginator from '../../../../../pages/navigation/content/Table/TableOverview/Paginator';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport UIFactory from '../../../../../UIFactory';\nimport {CreateQueryFromTable} from './CreateQueryFromTable';\n\nimport {HEADER_HEIGHT} from '../../../../../constants/index';\n\nimport './TableOverview.scss';\nimport EditTableActions from './EditTableActions';\nimport DataLensButton from './DatalensButton';\nimport {isQueryTrackerAllowed} from '../../../../../store/selectors/global';\n\nconst block = cn('navigation-table-overview');\n\nTableOverview.propTypes = {\n // from connect\n isFullScreen: PropTypes.bool.isRequired,\n isSplit: PropTypes.bool.isRequired,\n allowQueryTracker: PropTypes.bool,\n};\n\nfunction TableOverview(props) {\n const {isFullScreen, isSplit, allowQueryTracker} = props;\n\n // TODO: add sticky for the Overview in the split mode https://github.com/captivationsoftware/react-sticky/issues/282\n return (\n <ErrorBoundary>\n <Sticky topOffset={isFullScreen ? HEADER_HEIGHT : -HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block({\n sticky: isSticky && !isSplit,\n fullscreen: isFullScreen,\n split: isSplit,\n })}\n >\n <Paginator block={block} />\n <OffsetInput block={block} />\n {!isFullScreen && <ColumnSelectorButton block={block} />}\n {!isFullScreen && <SettingsButton block={block} />}\n {!isFullScreen && allowQueryTracker && (\n <CreateQueryFromTable className={block('query')} />\n )}\n {!isFullScreen &&\n UIFactory.yqlWidgetSetup?.renderButton({\n isSplit,\n className: block('yql'),\n })}\n {!isFullScreen && <JupyterButton block={block} />}\n {!isFullScreen && <DataLensButton className={block('datalens')} />}\n {!isFullScreen && <TableActions block={block} />}\n <FullScreenButton block={block} />\n {!isFullScreen && <EditTableActions />}\n </div>\n )}\n </Sticky>\n </ErrorBoundary>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isFullScreen} = state.navigation.content.table;\n const {isSplit} = state.global.splitScreen;\n\n return {\n isFullScreen,\n isSplit,\n allowQueryTracker: isQueryTrackerAllowed(state),\n };\n};\n\nexport default connect(mapStateToProps)(TableOverview);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport cn from 'bem-cn-lite';\n\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport Query from '../../../../../utils/navigation/content/table/query';\n\nimport {\n getCurrentOffsetValues,\n getIsTableSorted,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n closeOffsetSelectorModal,\n moveOffset,\n} from '../../../../../store/actions/navigation/content/table/pagination';\n\nimport './OffsetSelectorModal.scss';\n\nconst block = cn('offset-selector');\n\nclass OffsetSelectorModal extends Component {\n static itemProps = PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string,\n checked: PropTypes.bool.isRequired,\n });\n\n static propTypes = {\n // from connect\n isOffsetSelectorOpen: PropTypes.bool.isRequired,\n closeOffsetSelectorModal: PropTypes.func.isRequired,\n moveOffset: PropTypes.func.isRequired,\n initialItems: PropTypes.arrayOf(OffsetSelectorModal.itemProps).isRequired,\n isTableSorted: PropTypes.bool.isRequired,\n };\n\n constructor(props) {\n super(props);\n const {initialItems} = this.props;\n this.state = {\n filter: '',\n initialItems,\n items: initialItems,\n };\n }\n\n static getDerivedStateFromProps({initialItems}, state) {\n if (initialItems === state.initialItems) {\n return null;\n }\n return {\n initialItems,\n items: initialItems,\n };\n }\n\n _handleCONFIRMButtonClick = () => {\n const {items} = this.state;\n const {isTableSorted, moveOffset, closeOffsetSelectorModal} = this.props;\n const minKeyValue = isTableSorted ? 'null' : '0';\n const offsetValues = map_(items, (item) => {\n return isEmpty_(item.value) ? minKeyValue : item.value;\n });\n moveOffset(Query.prepareKey(offsetValues));\n closeOffsetSelectorModal();\n };\n\n _handleCANCELButtonClick = () => {\n const {closeOffsetSelectorModal} = this.props;\n this.setState(({initialItems}) => ({items: initialItems}));\n closeOffsetSelectorModal();\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n updateItemValue = (name, value) => {\n this.setState(({items: prevItems}) => {\n const items = [...prevItems];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, value};\n return {items};\n });\n };\n\n _handleInputChange = (name) => (value) => {\n this.updateItemValue(name, value);\n };\n\n renderSearchBox() {\n return (\n <TextInput\n theme=\"normal\"\n size=\"s\"\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n text={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n filterItemsByName(items, filter) {\n const re = new RegExp(escapeRegExp_(filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n renderItems() {\n const {items, filter} = this.state;\n const visibleItems = this.filterItemsByName(items, filter);\n return (\n <div className={block('items')}>\n <div className={block('item-group')}>{this.renderSearchBox()}</div>\n {map_(visibleItems, (item) => {\n return (\n <label\n key={item.name}\n className={block('item-group', {\n disabled: !item.checked,\n })}\n >\n {item.name}\n <div className={block('item')}>\n <TextInput\n theme=\"normal\"\n size=\"s\"\n placeholder=\"\"\n onUpdate={this._handleInputChange(item.name)}\n text={item.value}\n hasClear={true}\n />\n </div>\n </label>\n );\n })}\n </div>\n );\n }\n\n renderContent() {\n return <div className={block('content')}>{this.renderItems()}</div>;\n }\n\n render() {\n const {isOffsetSelectorOpen} = this.props;\n return (\n <Modal\n size=\"m\"\n title=\"Keys\"\n borderless={true}\n visible={isOffsetSelectorOpen}\n confirmText=\"Confirm\"\n onConfirm={this._handleCONFIRMButtonClick}\n onCancel={this._handleCANCELButtonClick}\n content={this.renderContent()}\n className={block()}\n contentClassName={block(null, 'pretty-scroll')}\n />\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {isOffsetSelectorOpen} = state.navigation.content.table;\n const initialItems = getCurrentOffsetValues(state);\n const isTableSorted = getIsTableSorted(state);\n\n return {isOffsetSelectorOpen, initialItems, isTableSorted};\n};\n\nconst mapDispatchToProps = {\n closeOffsetSelectorModal,\n moveOffset,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OffsetSelectorModal);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {\n getColumnsPresetColumns,\n getColumnsPresetError,\n getColumnsPresetHash,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {Warning} from '../../../../../components/Text/Text';\nimport Yson from '../../../../../components/Yson/Yson';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\n\nimport './TableColumnsPresetNotice.scss';\n\nconst block = cn('table-columns-preset-notice');\n\nfunction TableColumnsPresetNotice() {\n const hash = useSelector(getColumnsPresetHash);\n const columns = useSelector(getColumnsPresetColumns);\n const error: any = useSelector(getColumnsPresetError);\n\n if (!hash) {\n return null;\n }\n\n if (error) {\n return (\n <ErrorBlock\n error={error.response?.data || error}\n message={'Cannot load preset of columns'}\n />\n );\n }\n\n console.log(columns);\n\n return (\n <Warning className={block()}>\n <CollapsibleSection\n name={'The table is opened with preset of columns'}\n size={'unset'}\n collapsed\n >\n {!columns?.length ? null : (\n <span>\n {map_(columns, (item, index) => {\n return (\n <React.Fragment key={index}>\n <Yson key={index} value={item} className={block('column')} />\n {index !== columns.length - 1 && ', '}\n </React.Fragment>\n );\n })}\n </span>\n )}\n </CollapsibleSection>\n </Warning>\n );\n}\n\nexport default React.memo(TableColumnsPresetNotice);\n","/* eslint-disable react/prop-types */\nimport {StickyContainer} from 'react-sticky';\nimport React, {useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport DataTableWrapper from '../../../../pages/navigation/content/Table/DataTableWrapper/DataTableWrapper';\nimport TableOverview from '../../../../pages/navigation/content/Table/TableOverview/TableOverview';\nimport ColumnSelectorModal from '../../../../components/ColumnSelectorModal/ColumnSelectorModal';\nimport OffsetSelectorModal from '../../../../pages/navigation/content/Table/OffsetSelectorModal/OffsetSelectorModal';\nimport TableMeta from '../../../../pages/navigation/content/Table/TableMeta/TableMeta';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport FullScreen from '../../../../components/FullScreen/FullScreen';\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {OVERVIEW_HEIGHT} from '../../../../constants/navigation/content/table';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {\n abortAndReset,\n closeColumnSelectorModal,\n getTableData,\n handleScreenChanged,\n updateColumns,\n} from '../../../../store/actions/navigation/content/table/table';\nimport {\n getAllColumns,\n getKeyColumns,\n getOffsetValue,\n getSrcColumns,\n getVisibleColumns,\n getVisibleRows,\n} from '../../../../store/selectors/navigation/content/table';\nimport {\n getColumns,\n getIsDynamic,\n getNavigationTableLoadingState,\n getYqlTypes,\n} from '../../../../store/selectors/navigation/content/table-ts';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getTableYsonSettings} from '../../../../store/selectors/thor/unipika';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './Table.scss';\nimport TableColumnsPresetNotice from './TableOverview/TableColumnsPresetNotice';\nimport {makeTableRumId} from '../../../../store/actions/navigation/content/table/table-rum-id';\n\nconst block = cn('navigation-table');\n\nTable.columnsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.shape({\n caption: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n }).isRequired,\n keyColumn: PropTypes.bool.isRequired,\n checked: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n\n accessor: PropTypes.func,\n label: PropTypes.string,\n }),\n);\n\nTable.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n isSplit: PropTypes.bool.isRequired,\n isDynamic: PropTypes.bool.isRequired,\n isFullScreen: PropTypes.bool.isRequired,\n settings: Yson.settingsProps.isRequired,\n isColumnSelectorOpen: PropTypes.bool.isRequired,\n visibleRows: PropTypes.arrayOf(PropTypes.object).isRequired,\n\n columns: Table.columnsProps.isRequired,\n allColumns: Table.columnsProps.isRequired,\n srcColumns: Table.columnsProps.isRequired,\n keyColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yqlTypes: PropTypes.array,\n\n updateColumns: PropTypes.func.isRequired,\n getTableData: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n handleScreenChanged: PropTypes.func.isRequired,\n closeColumnSelectorModal: PropTypes.func.isRequired,\n};\n\nconst renderColumnSelectorModal = (props) => {\n const {updateColumns, allColumns, srcColumns, isColumnSelectorOpen, closeColumnSelectorModal} =\n props;\n\n return (\n <ColumnSelectorModal\n items={allColumns}\n srcItems={srcColumns}\n onConfirm={updateColumns}\n isVisible={isColumnSelectorOpen}\n onCancel={closeColumnSelectorModal}\n />\n );\n};\n\nconst renderTable = (props) => {\n const {\n visibleColumns,\n keyColumns,\n yqlTypes,\n settings,\n visibleRows,\n isDynamic,\n isFullScreen,\n offsetValue,\n loading,\n loaded,\n isSplit,\n } = props;\n\n let stickyTop;\n if (isSplit) {\n stickyTop = 0; // TODO: add sticky for the Overview in the split mode https://github.com/captivationsoftware/react-sticky/issues/282\n } else if (isFullScreen) {\n stickyTop = 0;\n } else {\n stickyTop = HEADER_HEIGHT + OVERVIEW_HEIGHT;\n }\n\n const tableSettings = {\n stickyTop,\n stickyHead: 'moving',\n syncHeadOnResize: true,\n sortable: false,\n stripedRows: true,\n displayIndices: !isDynamic,\n };\n\n return (\n <LoadDataHandler {...props} loaded={false}>\n <DataTableWrapper\n data={visibleRows}\n loaded={loaded}\n loading={loading}\n yqlTypes={yqlTypes}\n keyColumns={keyColumns}\n ysonSettings={settings}\n settings={tableSettings}\n columns={visibleColumns}\n isFullScreen={isFullScreen}\n emptyDataMessage=\"No items to show\"\n startIndex={!isDynamic ? offsetValue : undefined}\n />\n </LoadDataHandler>\n );\n};\n\nfunction Table(props) {\n const {path, getTableData, abortAndReset} = props;\n useEffect(() => {\n getTableData();\n return abortAndReset;\n }, [path]);\n\n const {isFullScreen, handleScreenChanged, isDynamic} = props;\n return (\n <div className={block()}>\n <TableMeta />\n <TableColumnsPresetNotice />\n <FullScreen\n className={block('fullscreen')}\n enabled={isFullScreen}\n onChange={handleScreenChanged}\n >\n <StickyContainer>\n <TableOverview />\n {renderTable(props)}\n </StickyContainer>\n </FullScreen>\n {renderColumnSelectorModal(props)}\n {isDynamic && <OffsetSelectorModal />}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, isColumnSelectorOpen, isFullScreen} =\n state.navigation.content.table;\n const settings = getTableYsonSettings(state);\n const {isSplit} = state.global.splitScreen;\n\n const path = getPath(state);\n const columns = getColumns(state);\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n const keyColumns = getKeyColumns(state);\n const allColumns = getAllColumns(state);\n const srcColumns = getSrcColumns(state);\n const visibleRows = getVisibleRows(state);\n const offsetValue = getOffsetValue(state);\n const visibleColumns = getVisibleColumns(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n columns,\n keyColumns,\n allColumns,\n srcColumns,\n visibleColumns,\n isSplit,\n path,\n isDynamic,\n visibleRows,\n yqlTypes,\n settings,\n offsetValue,\n isColumnSelectorOpen,\n isFullScreen,\n };\n};\n\nconst mapDispatchToProps = {\n updateColumns,\n getTableData,\n abortAndReset,\n handleScreenChanged,\n closeColumnSelectorModal,\n};\n\nconst TableConnected = compose(connect(mapStateToProps, mapDispatchToProps))(Table);\n\nexport default function TableWithRum() {\n const loadState = useSelector(getNavigationTableLoadingState);\n const isDynamic = useSelector(getIsDynamic);\n const cluster = useSelector(getCluster);\n\n const measureId = makeTableRumId({cluster, isDynamic}).getMeasureId();\n\n useAppRumMeasureStart({\n type: measureId,\n startDeps: [loadState, measureId],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: measureId,\n stopDeps: [loadState, measureId],\n sybType: isDynamic ? 'dynamic' : 'static',\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TableConnected />;\n}\n","import React from 'react';\n\nimport MetaTable from '../../components/MetaTable/MetaTable';\nimport {TTLLabel, makeTTLItems} from '../../components/MetaTable/presets/ttl';\nimport {Tooltip, TooltipProps} from '../../components/Tooltip/Tooltip';\n\nexport default function TTLInfo({\n attributes,\n onClick,\n size,\n className,\n}: {\n attributes: unknown;\n onClick: TooltipProps['onClick'];\n size: React.ComponentProps<typeof TTLLabel>['size'];\n className?: string;\n}) {\n const ttlItems = makeTTLItems(attributes);\n\n if (!ttlItems.length) {\n return null;\n }\n\n return (\n <Tooltip\n className={className}\n content={<MetaTable items={ttlItems} />}\n forceLinksAppearance={false}\n onClick={onClick}\n >\n <TTLLabel size={size} />\n </Tooltip>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect} from 'react-redux';\n\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport sortBy_ from 'lodash/sortBy';\nimport set_ from 'lodash/set';\n\nimport Button from '../../../../components/Button/Button';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n closeCreateTableModal,\n createTable,\n setCreateTableGroupSuggestions,\n setCreateTableLockSuggestions,\n} from '../../../../store/actions/navigation/modals/create-table';\n\nimport {createNewColumn} from '../../../../store/reducers/navigation/modals/create-table';\n\nimport {\n ColumnAggregateTypes as AggrTypes,\n ColumnAggregateType,\n ColumnDataTypes,\n SELECT_EMPTY_VALUE,\n} from '../../../../constants/navigation/modals/create-table';\nimport {\n getColumnGroupSuggestions,\n getColumnLockSuggestions,\n getCreateTableModalState,\n} from '../../../../store/selectors/navigation/modals/create-table';\nimport {StorageOptions} from '../../../../utils/cypress-attributes';\n\nimport {RootState} from '../../../../store/reducers';\nimport {\n getCompressionCodecs,\n getErasureCodecs,\n getPrimitiveTypes,\n} from '../../../../store/selectors/global/supported-features';\nimport {SelectWithSubItemsProps} from '../../../../components/Dialog/controls/SelectWithSubItems/SelectWithSubItems';\nimport {docsUrl, getNewTableReplicasCount} from '../../../../config';\n\nimport './CreateTableModal.scss';\nimport {DESCENDING} from './CreateTableTabField/CreateTableTabField';\nimport {FIX_MY_TYPE} from '../../../../types';\nimport UIFactory from '../../../../UIFactory';\n\nconst block = cn('create-table-modal');\n\nfunction getNoSuggestionsMsg() {\n return 'There is no any suggestions yet';\n}\n\nexport function makeLink(url: string, label = 'Help', inline = false) {\n const link = (\n <Link target={'_blank'} url={url}>\n {label}\n </Link>\n );\n return inline ? link : <div>{link}</div>;\n}\n\nconst TableType = {\n DYNAMIC: 'dynamic',\n STATIC: 'static',\n};\n\nconst AGGREGATE_CHOICES = [{value: SELECT_EMPTY_VALUE, text: 'default'}].concat(\n map_(AggrTypes, (i) => ({value: i, text: i})),\n);\n\ninterface WithVisibilityCondition {\n visibilityCondition: {\n when: string;\n isActive: (v: any) => boolean;\n };\n extras?: {\n disable?: boolean;\n };\n}\n\nfunction deactivateFieldByVisibilityCondition<T extends WithVisibilityCondition>(\n field: T,\n): Array<T> {\n const {\n visibilityCondition: {when, isActive},\n ...rest\n } = field;\n return [\n {\n ...rest,\n visibilityCondition: {\n when,\n isActive,\n },\n } as any,\n {\n ...rest,\n visibilityCondition: {\n when,\n isActive: (v: any) => !isActive(v),\n },\n extras: {\n disabled: true,\n },\n } as any,\n ];\n}\n\nconst TABLE_SETTINGS = 'tableSettings';\nconst COLUMNS = 'columns';\n\ninterface Props {\n className?: string;\n showModal: boolean;\n\n parentDirectory?: string;\n\n closeCreateTableModal: () => void;\n lockSuggestions: Array<string>;\n groupSuggestions: Array<string>;\n sortedColumnsCount: number;\n columnNameCounters: Record<number, number>;\n\n modifyColumn: () => void;\n removeColumn: () => void;\n setColumnSort: () => void;\n createTable: (path: string, settings: unknown) => Promise<void>;\n setColumnName: () => void;\n\n setCreateTableGroupSuggestions: (items: Array<string>) => void;\n setCreateTableLockSuggestions: (items: Array<string>) => void;\n\n columnsOrder: Record<number, ColumnData>;\n\n keyColumns: Record<string, -1 | 1>;\n\n compressionCodecs: Pick<SelectWithSubItemsProps, 'items' | 'subItemsMap'>;\n erasureCodecs: Array<{value: string; text: string}>;\n primitiveTypes: Array<{value: string; text: string}>;\n}\n\ninterface ColumnData {\n id: string;\n name: string;\n nameError?: string;\n dataType?: string;\n aggregate?: ColumnAggregateType | typeof SELECT_EMPTY_VALUE;\n optional?: boolean;\n ascending?: 1 | -1;\n lock?: string;\n group?: string;\n type?: string;\n sort_order?: string;\n}\n\ninterface TableSettingsTab {\n uniqueKeys: boolean;\n name: string;\n replicasCount: string;\n tableType: 'static' | 'dynamic';\n}\n\nfunction genNewName(items: Array<{name: string}>, name: string) {\n const names = new Set(map_(items, 'name'));\n if (!names.has(name)) {\n return name;\n }\n\n for (let i = 0; i < items.length; ++i) {\n const tmp = `${name}_${i + 1}`;\n if (!names.has(tmp)) {\n return tmp;\n }\n }\n\n return name;\n}\n\nclass CreateTableModalContentImpl extends React.Component<Props> {\n nextId = 2;\n\n tableType = TableType.STATIC;\n tableName = undefined;\n replicasCount = getNewTableReplicasCount();\n uniqueKeys = false;\n activeTabId = TABLE_SETTINGS;\n\n private columns: Array<ColumnData> = [];\n\n // eslint-disable-next-line react/sort-comp\n createNewColumn = (selectedColumnTab?: ColumnData, options: {userOptions?: any} = {}) => {\n const {duplicate} = options?.userOptions || {};\n\n const {primitiveTypes} = this.props;\n const newTab = createNewColumn(this.nextId++, primitiveTypes[0]?.value);\n\n if (!duplicate || !selectedColumnTab) {\n return newTab;\n } else {\n const name = genNewName(this.columns, selectedColumnTab.name + '_copy');\n return {\n ...newTab,\n ...selectedColumnTab,\n name,\n id: newTab.id,\n };\n }\n };\n\n reorderColumns(columns: Array<ColumnData>) {\n const {columnsOrder} = this.props;\n const indexById = reduce_(\n columnsOrder,\n (acc, item, index) => {\n acc[item.id] = index as any;\n return acc;\n },\n {} as Record<string, number>,\n );\n return sortBy_(columns, (item) => indexById[item.id]);\n }\n\n onAdd = (form: FormApi<FIX_MY_TYPE>): Promise<void> => {\n const {values} = form.getState();\n const {\n [TABLE_SETTINGS]: {\n name: path,\n tableType,\n compressionCodec: compCodec,\n storageOption,\n replicasCount,\n erasureCodec,\n uniqueKeys,\n optimize_for,\n },\n [COLUMNS]: columnsRaw,\n } = values;\n const columns = this.reorderColumns(columnsRaw);\n\n const isDynamic = tableType === TableType.DYNAMIC;\n const attributes: Record<string, any> = {\n dynamic: isDynamic,\n optimize_for,\n };\n\n if (!isEqual_(compCodec, [SELECT_EMPTY_VALUE])) {\n attributes.compression_codec = compCodec.join('');\n }\n\n if (storageOption === StorageOptions.REPLICATION) {\n attributes.replication_factor = Number(replicasCount);\n } else {\n attributes.erasure_codec = erasureCodec;\n }\n\n const schemaAttributes: Record<string, any> = {};\n if (uniqueKeys || tableType === TableType.DYNAMIC) {\n schemaAttributes.unique_keys = true;\n }\n\n const {keyColumns} = this.props;\n const schemaColumns = map_(columns, (item) => {\n const {aggregate, dataType: type, group, id, name, optional, lock} = item;\n const ascending = keyColumns[id];\n\n const res: {\n name?: string;\n type_v3?: string;\n group?: string;\n lock?: string;\n aggregate?: ColumnAggregateType;\n optional?: boolean;\n sort_order?: string;\n } = {\n name,\n type_v3: type,\n };\n\n if (group) {\n res.group = group;\n }\n\n if (lock) {\n res.lock = lock;\n }\n\n if (aggregate !== SELECT_EMPTY_VALUE) {\n res.aggregate = aggregate;\n }\n\n if (ascending) {\n res.sort_order = ascending === 1 ? 'ascending' : 'descending';\n }\n return {\n ...res,\n type_v3: !optional ? res.type_v3 : {type_name: 'optional', item: res.type_v3},\n };\n });\n\n return this.props.createTable(path, {\n ...attributes,\n schema: {\n $attributes: schemaAttributes,\n $value: schemaColumns,\n },\n });\n };\n\n validateColumnDataType(columnData: ColumnData, isDynamicTable: boolean) {\n const {dataType, optional} = columnData || {};\n\n if (dataType === ColumnDataTypes.ANY || dataType === ColumnDataTypes.YSON) {\n if (isDynamicTable && this.isOrderedColumn(columnData)) {\n return `Key-column should not be of type [${dataType}]`;\n }\n if (!optional) {\n return `Column with type [${dataType}] should be optional.`;\n }\n }\n\n if (isDynamicTable && this.isDescendingColumn(columnData)) {\n return \"Dynamic tables do not support 'Descending' order\";\n }\n\n return undefined;\n }\n\n validateAggregate(columnData: ColumnData) {\n const {dataType: type, aggregate: aggr} = columnData || {};\n if (aggr === AggrTypes.SUM || aggr === AggrTypes.MIN || aggr === AggrTypes.MAX) {\n if (\n type !== ColumnDataTypes.INT64 &&\n type !== ColumnDataTypes.UINT64 &&\n type !== ColumnDataTypes.DOUBLE\n ) {\n return `[${aggr}] aggregate might be only applied to a column of type int64/uint64/double`;\n }\n }\n return undefined;\n }\n\n validateColumnLock(columnData: ColumnData) {\n const ordered = this.isOrderedColumn(columnData);\n const {lock} = columnData || {};\n if (lock && ordered) {\n return 'Lock cannot be set on a key-column';\n }\n return undefined;\n }\n\n validateColumnData(columnData: ColumnData, isDynamicTable: boolean) {\n const res: Record<string, string> = {};\n const aggregate = this.validateAggregate(columnData);\n if (aggregate) {\n res.aggregate = aggregate;\n }\n const dataType = this.validateColumnDataType(columnData, isDynamicTable);\n if (dataType) {\n res.dataType = dataType;\n }\n const lock = this.validateColumnLock(columnData);\n if (lock) {\n res.lock = lock;\n }\n return isEmpty_(res) ? undefined : res;\n }\n\n validateReplicasCount(str: string) {\n const v = Number(str);\n // @ts-ignore\n if (str != v || v !== Math.round(v)) {\n return 'The value must be defined as a valid integer number';\n }\n if (v < 0 || v > 10) {\n return 'The value must be in range [0; 10]';\n }\n return undefined;\n }\n\n validateTableName = (value: string) => {\n const {parentDirectory} = this.props;\n if (value === parentDirectory + '/' || value === parentDirectory) {\n return 'The name must not match to parent directory name';\n }\n return undefined;\n };\n\n isOrderedColumn(columnData: ColumnData) {\n const {id} = columnData;\n return Boolean(this.props.keyColumns[id]);\n }\n\n isDescendingColumn(columnData: ColumnData) {\n const {id} = columnData;\n return this.props.keyColumns[id] === DESCENDING;\n }\n\n validateTableSettings(tableSettings: TableSettingsTab, columns: Array<ColumnData>) {\n const res: Partial<Record<keyof TableSettingsTab, string>> = {};\n const hasOrderedColumn = some_(columns, (colData) => this.isOrderedColumn(colData));\n const hasUnorderedColumn = some_(columns, (colData) => !this.isOrderedColumn(colData));\n\n const {uniqueKeys, name, replicasCount, tableType} = tableSettings;\n\n const nameError = this.validateTableName(name);\n if (nameError) {\n res.name = nameError;\n }\n\n if (tableType === TableType.DYNAMIC && (!hasOrderedColumn || !hasUnorderedColumn)) {\n res.tableType =\n 'Any dynamic table must have at least one sorted column and one unsorted column';\n }\n\n if (tableType === TableType.DYNAMIC && !res.tableType) {\n const hasDescendingColumns = some_(this.keyColumns, (value) => -1 === value);\n if (hasDescendingColumns) {\n res.tableType = 'Dynamic tables do not support descending-sorted columns';\n }\n }\n\n const replicasCountError = this.validateReplicasCount(replicasCount);\n if (replicasCountError) {\n res.replicasCount = replicasCountError;\n }\n\n if (uniqueKeys && !hasOrderedColumn) {\n res.uniqueKeys = 'The table must contain at least one sorted column.';\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n onClose = () => {\n this.nextId = 2;\n return this.props.closeCreateTableModal();\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lastValidationResult: object | null = null;\n\n validateForm = (values: any) => {\n const errors = {};\n\n const tableSettings = values[TABLE_SETTINGS];\n\n const setError = (path: string, error: any) => {\n if (error) {\n set_(errors, path, error);\n }\n };\n\n const {tableType} = tableSettings;\n\n const columns: Array<ColumnData> = values[COLUMNS];\n this.columns = columns;\n const nameCounters: Record<string, Array<number>> = {};\n forEach_(columns, (columnData, index) => {\n const {name} = columnData;\n const nameIndexes = nameCounters[name];\n if (!nameIndexes) {\n nameCounters[name] = [index];\n } else {\n nameIndexes.push(index);\n }\n\n // Validate column\n setError(\n `${COLUMNS}[${index}]`,\n this.validateColumnData(columnData, tableType === TableType.DYNAMIC),\n );\n });\n forEach_(nameCounters, (indices) => {\n if (indices.length > 1) {\n indices.forEach((index) => {\n set_(\n errors,\n `${COLUMNS}[${index}].name`,\n 'The column with this name already exists',\n );\n });\n }\n });\n\n // validate tableSettings\n setError(TABLE_SETTINGS, this.validateTableSettings(tableSettings, columns));\n\n this.lastValidationResult = errors;\n return errors;\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n keyColumns: Props['keyColumns'] = {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n formValidator = this.validateForm.bind(this);\n getFormValidator() {\n const {keyColumns} = this.props;\n if (this.keyColumns !== keyColumns) {\n this.keyColumns = keyColumns;\n /*\n * keyColumns is modified externally and Dialog knows nothing about it\n * and we need to create new instance of Function to force call its\n * validation with new keyColumns.\n * Without creation of new function validation will not be called\n */\n this.formValidator = this.validateForm.bind(this);\n }\n return this.formValidator;\n }\n\n render() {\n const {\n className,\n parentDirectory,\n showModal,\n compressionCodecs,\n erasureCodecs,\n primitiveTypes,\n groupSuggestions,\n } = this.props;\n const name = `${parentDirectory}/new_table`;\n\n return (\n <YTDFDialog<FIX_MY_TYPE>\n virtualized\n pristineSubmittable\n className={block(null, className)}\n size={'l'}\n visible={showModal}\n headerProps={{\n title: 'Create Table',\n }}\n isApplyDisabled={() => {\n return !isEmpty_(this.lastValidationResult);\n }}\n validate={this.getFormValidator()}\n onActiveTabChange={(tab) => {\n this.activeTabId = tab;\n }}\n onAdd={this.onAdd}\n onClose={this.onClose}\n initialValues={{\n [TABLE_SETTINGS]: {\n name: this.tableName !== undefined ? this.tableName : name,\n tableType: this.tableType,\n compressionCodec: [SELECT_EMPTY_VALUE],\n storageOption: StorageOptions.REPLICATION,\n replicasCount: this.replicasCount,\n erasureCodec: 'lrc_12_2_2',\n uniqueKeys: this.uniqueKeys,\n optimize_for: 'lookup',\n },\n [COLUMNS]: [createNewColumn(1, primitiveTypes[0]?.value)],\n }}\n fields={[\n {\n name: TABLE_SETTINGS,\n type: 'yt-create-table-tab',\n title: 'Table settings',\n fields: [\n {\n name: 'name',\n type: 'text',\n caption: 'Table name',\n },\n {\n name: 'tableType',\n type: 'radio',\n caption: 'Table type',\n tooltip: (\n <div className={block('tooltip')}>\n Data rows of\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:static_tables'],\n ' Static tables ',\n true,\n ),\n ' Static tables ',\n )}\n nearly impossible to modify, but they might be removed or\n merged, also new data rows might be appended to the end of a\n table. As the opposite of the above described restrictions\n there are\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['dynamic-tables:overview'],\n ' Dynamic tables ',\n true,\n ),\n ' Dynamic tables ',\n )}\n which allow to modify data rows by key.\n <div className={block('alert-text')}>\n Before using Dynamic tables in production environment\n with <b>heavy load or strict SLA </b>\n you have to consult with development team.\n </div>\n </div>\n ),\n extras: {\n options: [\n {\n value: TableType.STATIC,\n label: 'Static',\n },\n {\n value: TableType.DYNAMIC,\n label: 'Dynamic',\n },\n ],\n },\n },\n {\n separator: true,\n },\n {\n name: 'optimize_for',\n type: 'radio',\n caption: 'Optimize for',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:chunks#optimize_for']),\n ),\n extras: {\n options: [\n {value: 'scan', label: 'Scan'},\n {value: 'lookup', label: 'Lookup'},\n ],\n },\n },\n {\n name: 'compressionCodec',\n type: 'select-with-subitems',\n caption: 'Compression',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:compression#compression_codecs'\n ],\n ),\n ),\n extras: {\n ...compressionCodecs,\n },\n },\n {\n name: 'storageOption',\n type: 'radio',\n caption: 'Storage options',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#replication']),\n ),\n extras: {\n options: [\n {\n value: StorageOptions.REPLICATION,\n label: 'Replication',\n },\n {\n value: StorageOptions.ERASURE,\n label: 'Erasure encoding',\n },\n ],\n },\n },\n {\n name: 'replicasCount',\n type: 'text',\n caption: 'Number of replicas',\n visibilityCondition: {\n when: `${TABLE_SETTINGS}.storageOption`,\n isActive: (value: string) =>\n value === StorageOptions.REPLICATION,\n },\n },\n {\n name: 'erasureCodec',\n type: 'yt-select-single',\n caption: 'Erasure codec',\n tooltip: (\n <div className={block('tooltip')}>\n Erasure encoding allows to minimize disk space allocated for\n the table comparing with Replication, but it requires more\n CPU time during data access.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:replication#erasure'],\n ),\n )}\n </div>\n ),\n visibilityCondition: {\n when: `${TABLE_SETTINGS}.storageOption`,\n isActive: (value: string) => value === StorageOptions.ERASURE,\n },\n extras: {\n items: erasureCodecs,\n hideFilter: true,\n width: 'max',\n },\n },\n {\n separator: true,\n },\n {\n type: 'block',\n name: 'schemaSettings',\n extras: {\n children: (\n <span className={block('title')}>Schema settings</span>\n ),\n },\n },\n ...deactivateFieldByVisibilityCondition({\n name: 'uniqueKeys',\n type: 'tumbler' as const,\n caption: 'Unique keys',\n tooltip: (\n <div className={block('tooltip')}>\n The parameter is actual only for static tables, for all\n dynamic tables it is always automatically enabled regardless\n of its value.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:static_schema#overview'\n ],\n ),\n )}\n </div>\n ),\n visibilityCondition: {\n when: `${TABLE_SETTINGS}.tableType`,\n isActive: (value) => value === TableType.STATIC,\n },\n }),\n ],\n },\n {\n name: COLUMNS,\n type: 'yt-create-table-tab',\n multiple: true,\n onCreateTab: this.createNewColumn,\n getTitle: (values) => values.name,\n isRemovable: () => false,\n renderControls: (_item, _onCreate, onRemove) => {\n return (\n <Button\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onRemove?.();\n e.stopPropagation();\n }}\n >\n <Icon awesome={'trash-alt'} /> Delete column\n </Button>\n );\n },\n fields: [\n {\n name: 'name',\n type: 'text',\n caption: 'Column name',\n required: true,\n },\n {\n name: 'dataType',\n type: 'yt-select-single',\n caption: 'Data type',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:data_types#schema']),\n ),\n extras: {\n items: primitiveTypes,\n placeholder: 'Select type',\n width: 'max',\n hideClear: true,\n },\n touched: true, // required to display errors even if the field is not touched\n },\n {\n name: 'optional',\n type: 'tumbler',\n caption: 'Optional',\n tooltip: (\n <div className={block('tooltip')}>\n If the parameter is enabled the value might be defined as\n null. For dynamic tables all key-columns are required\n regardless of this value.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:data_types#schema_optional'\n ],\n ),\n )}\n </div>\n ),\n },\n {\n name: 'group',\n type: 'create-table-group-suggest',\n caption: 'Column group name',\n tooltip: (\n <div className={block('tooltip')}>\n When columns have the same group name then the data of such\n columns will be placed in the same blocks.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'storage:static_schema#overview'\n ],\n ),\n )}\n </div>\n ),\n extras: {\n getItems: () => groupSuggestions,\n ...{\n getNoItemsMessage: getNoSuggestionsMsg,\n },\n },\n onChange: (\n _value: unknown,\n _oldValue: unknown,\n _field: unknown,\n _fieldName: unknown,\n _form: unknown,\n {values}: ReturnType<FormApi<FIX_MY_TYPE>['getState']>,\n ) => {\n const allGroups = map_(values?.columns, 'group').filter((v) =>\n Boolean(v),\n );\n this.props.setCreateTableGroupSuggestions(allGroups);\n },\n },\n {\n separator: true,\n },\n {\n name: 'lock',\n type: 'create-table-lock-suggest',\n caption: 'Lock',\n tooltip: (\n <div className={block('tooltip')}>\n By default locking is applied to all columns of row. This\n parameter allows to improve granularity of locking by\n defining groups of columns to lock.\n {docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'dynamic-tables:transactions#conflicts'\n ],\n ),\n )}\n </div>\n ),\n onChange: (\n _value: unknown,\n _oldValue: unknown,\n _field: unknown,\n _fieldName: unknown,\n _form: unknown,\n {values}: ReturnType<FormApi<FIX_MY_TYPE>['getState']>,\n ) => {\n const allLocks = map_(values?.columns, 'lock').filter((v) =>\n Boolean(v),\n );\n this.props.setCreateTableLockSuggestions(allLocks);\n },\n },\n {\n name: 'aggregate',\n type: 'yt-select-single',\n caption: 'Aggregate',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'dynamic-tables:sorted_dynamic_tables#aggr_columns'\n ],\n ),\n ),\n extras: {\n items: AGGREGATE_CHOICES,\n placeholder: 'Select aggregation',\n width: 'max',\n hideFilter: true,\n },\n },\n ],\n },\n ]}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {showModal, parentDirectory, columnNameCounters, keyColumns, columnsOrder} =\n getCreateTableModalState(state);\n\n const primitiveTypes = getPrimitiveTypes(state);\n\n return {\n showModal,\n parentDirectory,\n groupSuggestions: getColumnGroupSuggestions(state),\n lockSuggestions: getColumnLockSuggestions(state),\n columnNameCounters,\n\n keyColumns,\n columnsOrder,\n\n compressionCodecs: getCompressionCodecs(state),\n erasureCodecs: getErasureCodecs(state),\n primitiveTypes,\n };\n};\n\nconst mapDispatchToProps = {\n closeCreateTableModal,\n createTable,\n setCreateTableLockSuggestions,\n setCreateTableGroupSuggestions,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateTableModalContentImpl);\n","import React from 'react';\nimport {compose} from 'redux';\nimport axios, {AxiosProgressEvent} from 'axios';\nimport cn from 'bem-cn-lite';\n\nimport withVisible, {WithVisibleProps} from '../../../../../hocs/withVisible';\nimport Button from '../../../../../components/Button/Button';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {ConnectedProps, connect} from 'react-redux';\nimport Error from '../../../../../components/Block/Block';\nimport {YTDFDialog} from '../../../../../components/Dialog';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\nimport format from '../../../../../common/hammer/format';\n\nimport './UploadManager.scss';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport FilePicker from '../../../../../components/FilePicker/FilePicker';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {RootState} from '../../../../../store/reducers';\nimport {getXsrfCookieName} from '../../../../../utils';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport Link from '../../../../../components/Link/Link';\nimport {docsUrl, getConfigUploadTable} from '../../../../../config';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport UIFactory from '../../../../../UIFactory';\n\nconst block = cn('upload-manager');\n\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\ntype Props = PropsFromRedux & WithVisibleProps;\n\nfunction trimXLSX(fileName = '') {\n for (const i of ['.xlsx', '.xls']) {\n if (fileName.toLowerCase().endsWith(i)) {\n return fileName.substr(0, fileName.length - i.length);\n }\n }\n return fileName;\n}\n\ninterface State {\n name: string;\n\n hasUpcomingFile: boolean;\n progress: ProgressState;\n error?: any;\n\n file: File | null;\n fileType: FileType;\n\n firstRowAsNames: boolean;\n secondRowAsTypes: boolean;\n}\n\ntype FileType = 'xlsx';\n\nconst FILE_TYPES: Array<{value: FileType; title: FileType}> = [{value: 'xlsx', title: 'xlsx'}];\n\ntype ProgressState =\n | {inProgress: false}\n | {inProgress: true; event: {total?: number; loaded: number}};\n\nconst getExcelBaseUrl = (payload: {cluster: string}) => {\n return getConfigUploadTable(payload);\n};\n\nclass UploadManagerCreate extends React.Component<Props, State> {\n state: State = {\n name: '',\n hasUpcomingFile: false,\n file: null,\n fileType: 'xlsx',\n progress: {inProgress: false},\n firstRowAsNames: true,\n secondRowAsTypes: true,\n };\n\n private cancelHelper = new CancelHelper();\n\n renderContent() {\n const {hasUpcomingFile, file, error} = this.state;\n return (\n <React.Fragment>\n <div\n className={block('drag-area', {\n dropable: hasUpcomingFile,\n empty: !file,\n })}\n onDrop={this.onDrop}\n onDragEnter={this.onDragEnter}\n onDragLeave={this.onDragLeave}\n onDragOver={this.onDragOver}\n >\n {file ? (\n this.renderFileContent(file)\n ) : (\n <div>\n <div>Drag a file here</div>\n or\n <div>\n <FilePicker onChange={this.onFile}>Pick a file</FilePicker>\n </div>\n </div>\n )}\n </div>\n {error && <Error error={error} message={'The file upload has failed'} />}\n </React.Fragment>\n );\n }\n\n renderFileContent(file: File) {\n return (\n <React.Fragment>\n {this.renderSettings(file)}\n {this.renderProgress()}\n </React.Fragment>\n );\n }\n\n renderSettings(file: File) {\n const {path} = this.props;\n const {name} = this.state;\n const inProgress = this.inProgress();\n return (\n <YTDFDialog\n onAdd={() => Promise.resolve()}\n onClose={() => {}}\n visible={true}\n modal={false}\n initialValues={{\n path,\n name: name,\n size: `${hammer.format['Bytes'](file.size)} / ${hammer.format['Number'](\n file.size,\n )} B`,\n fileType: this.state.fileType,\n firstRowAsNames: this.state.firstRowAsNames,\n secondRowAsTypes: this.state.secondRowAsTypes,\n }}\n fields={[\n {\n name: 'path',\n caption: 'Parent folder',\n type: 'plain',\n },\n {\n name: 'name',\n caption: 'Name',\n type: 'text',\n required: true,\n extras: {\n disabled: inProgress,\n },\n onChange: (name: string | Array<string> | undefined) => {\n this.setState({name: name as string});\n },\n },\n {\n name: 'size',\n caption: 'Size',\n type: 'plain',\n },\n {\n name: 'fileType',\n type: 'yt-select-single',\n caption: 'Type',\n extras: {\n items: FILE_TYPES,\n hideFilter: true,\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'firstRowAsNames',\n type: 'tumbler',\n caption: 'Column names',\n tooltip: 'Interpret first row as column names',\n onChange: (firstRowAsNames: boolean) => {\n this.setState({firstRowAsNames});\n },\n extras: {\n disabled: inProgress,\n },\n },\n {\n name: 'secondRowAsTypes',\n type: 'tumbler',\n caption: 'Types',\n tooltip: 'There is row with types right before data-rows',\n onChange: (secondRowAsTypes: boolean) => {\n this.setState({secondRowAsTypes});\n },\n extras: {\n disabled: inProgress,\n },\n },\n ]}\n />\n );\n }\n\n renderFooterContent() {\n const {file} = this.state;\n const inProgress = this.inProgress();\n const helpLink = docsUrl(<HelpLink url={UIFactory.docsUrls['storage:excel']} />);\n\n if (!file) {\n return helpLink;\n }\n return inProgress ? (\n <React.Fragment>\n <Button onClick={this.cancelUpload}>Cancel upload</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={this.onReset}>Reset</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n );\n }\n\n onReset = () => {\n this.onFile(null);\n this.setState({error: null});\n };\n\n renderProgress() {\n const {progress} = this.state;\n const event = progress.inProgress ? progress.event : {total: 1, loaded: 0};\n const {total, loaded} = event;\n const totalStr = hammer.format['Bytes'](total);\n const loadedStr = hammer.format['Bytes'](loaded);\n return (\n progress.inProgress && (\n <div\n className={block('progress', {\n hidden: !progress.inProgress,\n })}\n >\n <div className={block('progress-wrapper')}>\n <Progress\n text={`${loadedStr} / ${totalStr}`}\n stack={[\n {\n value: (100 * loaded) / ((total ?? loaded) || 1),\n theme: 'info',\n },\n ]}\n />\n </div>\n </div>\n )\n );\n }\n\n cancelUpload = () => {\n this.cancelHelper.removeAllRequests();\n };\n\n inProgress() {\n const {progress} = this.state;\n return progress.inProgress;\n }\n\n onDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n if (!this.state.hasUpcomingFile) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n const {files} = event.dataTransfer;\n if (!files) {\n return;\n }\n\n this.onFile(files);\n };\n\n onFile = (files: FileList | null) => {\n const file = files && files[0];\n this.setState({\n file,\n hasUpcomingFile: false,\n name: trimXLSX(file?.name) || '',\n });\n if (file) {\n const fileError = this.checkFile(file);\n if (fileError) {\n this.setState({error: {message: fileError}});\n }\n }\n };\n\n onDragEnter = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDragLeave = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: false});\n }\n };\n\n renderConfirm = () => {\n const fileError = this.checkFile(this.state.file);\n return (\n <Button\n className={block('confirm')}\n size=\"m\"\n view=\"action\"\n title=\"Upload\"\n disabled={Boolean(fileError) || this.inProgress()}\n onClick={this.onXlsxUpload}\n >\n Upload\n </Button>\n );\n };\n\n checkFile(file: State['file']): string | null {\n if (!file) {\n return 'file is not selected';\n }\n\n const {cluster} = this.props;\n\n const UPLOAD_CONFIG = getExcelBaseUrl({cluster});\n\n if (file.size > UPLOAD_CONFIG.uploadTableMaxSize) {\n return `File size must not be greater than ${format.Bytes(\n UPLOAD_CONFIG.uploadTableMaxSize,\n )}`;\n }\n\n return null;\n }\n\n renderClose = (className: string) => {\n return (\n <Button\n className={block('confirm', className)}\n size=\"m\"\n title=\"Close\"\n disabled={this.inProgress()}\n onClick={this.handleClose}\n >\n Close\n </Button>\n );\n };\n\n onStartUpload(size: number) {\n this.setState({\n progress: {inProgress: true, event: {loaded: 0, total: size}},\n error: undefined,\n });\n }\n\n onUploadProgress = (event: AxiosProgressEvent) => {\n this.setState({progress: {inProgress: true, event}});\n };\n\n onStopUpload(error?: State['error']) {\n this.setState({progress: {inProgress: false}});\n if (!error) {\n this.props.updateView();\n this.props.handleClose();\n } else if (!axios.isCancel(error) && (!error || error.code !== 'cancelled')) {\n error = error.response?.data || error;\n this.setState({error});\n }\n }\n\n onXlsxUpload = () => {\n const {file, fileType} = this.state;\n if (!file || fileType !== 'xlsx') {\n return;\n }\n\n const {path: parentDir, cluster} = this.props;\n const {name} = this.state;\n const path = `${parentDir}/${name}`;\n\n this.onStartUpload(file.size);\n\n const EXCEL_BASE_URL = getExcelBaseUrl({cluster}).uploadTableExcelBaseUrl;\n\n const readyUrl = `${EXCEL_BASE_URL}/${cluster}/api/ready`;\n const uploadUrl = `${EXCEL_BASE_URL}/${cluster}/api/upload`;\n\n this.cancelHelper.removeAllRequests();\n return axios.get(readyUrl).then(\n () => {\n const {firstRowAsNames, secondRowAsTypes} = this.state;\n const start_row = [firstRowAsNames, secondRowAsTypes].filter(Boolean).length + 1;\n const params = new URLSearchParams({\n create: String(true),\n path,\n header: String(firstRowAsNames),\n start_row: String(start_row),\n types: String(secondRowAsTypes),\n });\n const formData = new FormData();\n formData.append('uploadfile', file);\n return wrapApiPromiseByToaster(\n axios.post(`${uploadUrl}?${params}`, formData, {\n onUploadProgress: this.onUploadProgress,\n withCredentials: true,\n withXSRFToken: true,\n xsrfCookieName: getXsrfCookieName(cluster),\n xsrfHeaderName: 'X-Csrf-Token',\n cancelToken: this.cancelHelper.generateNextToken(),\n }),\n {\n toasterName: 'upload_xlsx' + path,\n successTitle: 'Table is created',\n errorTitle: 'Failed to create table',\n successContent: (\n <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link>\n ),\n },\n ).then(\n () => {\n this.onStopUpload();\n },\n (e) => {\n this.onStopUpload(e);\n },\n );\n },\n (e) => {\n this.onStopUpload({\n message: `${readyUrl} responded with error`,\n inner_errors: [e],\n });\n },\n );\n };\n\n handleClose = () => {\n if (this.inProgress()) {\n return;\n }\n this.props.handleClose();\n };\n\n render() {\n const {visible} = this.props;\n return (\n <React.Fragment>\n {visible && (\n <Modal\n size=\"m\"\n title=\"Upload xlsx\"\n visible={visible}\n onCancel={this.handleClose}\n confirmText=\"Upload\"\n content={this.renderContent()}\n footerContent={this.renderFooterContent()}\n renderCustomConfirm={this.renderConfirm}\n renderCustomCancel={this.renderClose}\n contentClassName={block()}\n />\n )}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const path: string = getPath(state);\n\n return {\n path,\n cluster: getCluster(state),\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(withVisible, connector)(UploadManagerCreate);\n","import React, {Component} from 'react';\nimport {useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport orderBy_ from 'lodash/orderBy';\nimport reduce_ from 'lodash/reduce';\nimport slice_ from 'lodash/slice';\n\nimport './NodesTypes.scss';\nimport {\n getNodesInfo,\n getSelectedNodes,\n} from '../../../../../store/selectors/navigation/content/map-node';\nimport MultipleActions from '../MultipleActions';\n\nconst b = block('nodes-types');\nconst DISPLAYED_NODES = 3;\n\nclass NodesTypes extends Component {\n static propTypes = {\n nodes: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string.isRequired,\n count: PropTypes.number.isRequired,\n }),\n ).isRequired,\n selectedNodes: PropTypes.array.isRequired,\n };\n\n _prepareNodes(nodes) {\n const sortedNodes = orderBy_(nodes, (node) => node.count, 'desc');\n\n return slice_(sortedNodes, 0, DISPLAYED_NODES);\n }\n\n _getSumCount(nodes) {\n return reduce_(nodes, (sum, node) => sum + node.count, 0);\n }\n\n renderItem(node) {\n return (\n <li className={b('item')} key={node.type}>\n <span className={b('type')}>{node.type}</span>\n <span className={b('count')}>{node.count}</span>\n </li>\n );\n }\n\n renderItems(nodes) {\n return map_(nodes, (node) => this.renderItem(node));\n }\n\n renderSelected() {\n const {selectedNodes} = this.props;\n if (!selectedNodes.length) {\n return null;\n }\n return (\n <li className={b('item')}>\n <span className={b('type')}>Selected</span>\n <span className={b('count')}>{selectedNodes.length}</span>\n <MultipleActions className={b('actions')} />\n </li>\n );\n }\n\n render() {\n const {nodes} = this.props;\n\n const displayedNodes = this._prepareNodes(nodes);\n const allNodesCount = this._getSumCount(nodes);\n const displayedNodesCount = this._getSumCount(displayedNodes);\n const otherNodesCount = allNodesCount - displayedNodesCount;\n\n return (\n <ul className={b('list')}>\n {this.renderItem({type: 'All', count: allNodesCount})}\n {this.renderItems(displayedNodes)}\n {otherNodesCount > 0 && this.renderItem({type: 'Other', count: otherNodesCount})}\n {this.renderSelected()}\n </ul>\n );\n }\n}\n\nfunction NodesInfo() {\n const nodesInfo = useSelector(getNodesInfo);\n const selectedNodes = useSelector(getSelectedNodes);\n\n return <NodesTypes nodes={nodesInfo} selectedNodes={selectedNodes} />;\n}\n\nexport default React.memo(NodesInfo);\n","import {ThunkAction} from 'redux-thunk';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {CREATE_ACO_MODAL} from '../../../../constants/navigation/modals';\nimport {CreateACOModalAction} from '../../../../store/reducers/navigation/modals/create-aco';\nimport {RootState} from '../../../reducers';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {updateView} from '../index';\n\ntype CreateAcoModalThunkAction<R = any> = ThunkAction<R, RootState, unknown, CreateACOModalAction>;\n\nexport function openCreateACOModal(\n params: {path?: string; namespace?: string} = {},\n): CreateAcoModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: CREATE_ACO_MODAL,\n data: {...params, visible: true},\n });\n };\n}\n\nexport function closeCreateACOModal(): CreateAcoModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: CREATE_ACO_MODAL,\n data: {path: undefined, target: undefined, visible: false},\n });\n };\n}\n\ntype CreateACOActionParams = {path: string; name: string; namespace: string};\n\nexport function createACO(params: CreateACOActionParams): CreateAcoModalThunkAction {\n return (dispatch) => {\n const {path, name, namespace} = params;\n\n return ytApiV3\n .create({\n path,\n type: 'access_control_object',\n attributes: {name, namespace},\n })\n .then(() => {\n dispatch(closeCreateACOModal());\n dispatch(updateView());\n\n const toast = new Toaster();\n\n toast.add({\n name: 'create-aco',\n theme: 'success',\n title: 'ACO created',\n content: '',\n });\n });\n };\n}\n","import {DropdownMenu} from '@gravity-ui/uikit';\nimport React, {Component} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport {Sticky, StickyContainer} from 'react-sticky';\n\nimport map_ from 'lodash/map';\n\nimport {getConfigUploadTable} from '../../../../config/index';\n\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport RadioButton from '../../../../components/RadioButton/RadioButton';\nimport Button from '../../../../components/Button/Button';\nimport Filter from '../../../../components/Filter/Filter';\nimport {SelectSingle} from '../../../../components/Select/Select';\nimport Error from '../../../../components/Error/Error';\nimport Icon from '../../../../components/Icon/Icon';\nimport TTLInfo from '../../../../components/TTLInfo/TTLInfo';\nimport CreateTableModal from '../../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {isCreateTableModalVisible} from '../../../../store/selectors/navigation/modals/create-table';\n\nimport MapNodesTable from './MapNodesTable';\n\nimport {openCreateTableModal} from '../../../../store/actions/navigation/modals/create-table';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {getNavigationPathAttributes} from '../../../../store/selectors/navigation/navigation';\nimport {getMediumList} from '../../../../store/selectors/thor';\nimport {\n getContentMode,\n getError,\n getFilterState,\n getLoadState,\n getMapNodeResourcesLoading,\n getMediumType,\n isRootNode,\n} from '../../../../store/selectors/navigation/content/map-node';\n\nimport {OPEN_CREATE_DIRECTORY_POPUP} from '../../../../constants/navigation/modals/create-directory';\nimport {HEADER_HEIGHT, LOADING_STATUS} from '../../../../constants/index';\nimport {ContentMode} from '../../../../constants/navigation';\n\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {\n fetchNodes,\n setContentMode,\n setFilter,\n setMediumType,\n updateResourceUsage,\n} from '../../../../store/actions/navigation/content/map-node';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nimport hammer from '../../../../common/hammer';\nimport UploadManagerCreate from '../Table/UploadManager/UploadManagerCreate';\nimport NodesTypes from './NodesTypes/NodesTypes';\n\nimport {NoWrap} from '../../../../components/Text/Text';\nimport {showLinkToModal} from '../../../../store/actions/navigation/modals/link-to-modal';\nimport {openCreateACOModal} from '../../../../store/actions/navigation/modals/create-aco';\nimport NavigationExtraActions from '../../../../containers/NavigationExtraActions/NavigationExtraActions';\nimport UIFactory from '../../../../UIFactory';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport './MapNode.scss';\n\nconst block = cn('map-node');\nconst tbBlock = cn('elements-toolbar');\n\nclass MapNode extends Component {\n static TYPE = 'map_node';\n\n static CONTENT_MODE_OPTIONS = [ContentMode.DEFAULT, ContentMode.RESOURCES];\n\n static propTypes = {\n error: PropTypes.object,\n loadState: PropTypes.string,\n contentMode: PropTypes.oneOf(MapNode.CONTENT_MODE_OPTIONS),\n path: PropTypes.string.isRequired,\n transaction: PropTypes.string,\n mediumList: PropTypes.arrayOf(PropTypes.string),\n mediumType: PropTypes.string.isRequired,\n filterState: PropTypes.string.isRequired,\n\n setFilter: PropTypes.func.isRequired,\n setContentMode: PropTypes.func.isRequired,\n fetchNodes: PropTypes.func.isRequired,\n setMediumType: PropTypes.func.isRequired,\n openEditingPopup: PropTypes.func.isRequired,\n openCreateTableModal: PropTypes.func.isRequired,\n openCreateACOModal: PropTypes.func.isRequired,\n showACOCreateButton: PropTypes.bool.isRequired,\n cluster: PropTypes.bool.isRequired,\n };\n\n componentDidMount() {\n this.props.fetchNodes();\n }\n\n componentDidUpdate(prevProps) {\n const {path, transaction, fetchNodes} = this.props;\n const {path: prevPath, transaction: prevTransaction} = prevProps;\n if (path !== prevPath || transaction !== prevTransaction) {\n fetchNodes();\n }\n }\n\n renderToolbar() {\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={tbBlock({sticky: isSticky})}>\n <MapNodeToolbarConnected />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderError() {\n const {\n error: {message, details},\n } = this.props;\n return (\n <div className={block('error')}>\n <Error message={message} error={details} />\n </div>\n );\n }\n\n renderView() {\n return (\n <StickyContainer>\n {this.renderToolbar()}\n\n <div className={block('content')}>\n <MapNodesTable />\n </div>\n </StickyContainer>\n );\n }\n\n render() {\n const {loadState} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block()}>\n {loadState === LOADING_STATUS.ERROR ? this.renderError() : this.renderView()}\n </div>\n <CreateTableModal />\n </ErrorBoundary>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const path = getPath(state);\n\n return {\n path,\n showACOCreateButton: path === '//sys/access_control_object_namespaces/queries',\n loadState: getLoadState(state),\n error: getError(state),\n contentMode: getContentMode(state),\n filterState: getFilterState(state),\n transaction: getTransaction(state),\n mediumList: getMediumList(state),\n mediumType: getMediumType(state),\n showCreateTableModal: isCreateTableModalVisible(state),\n attributes: getNavigationPathAttributes(state),\n cluster: getCluster(state),\n };\n}\n\nconst mapDispatchToProps = {\n setFilter,\n setContentMode,\n fetchNodes,\n setMediumType,\n openEditingPopup,\n openCreateTableModal,\n showLinkToModal,\n openCreateACOModal,\n};\n\nconst MapNodeConnected = connect(mapStateToProps, mapDispatchToProps)(MapNode);\n\nexport default function MapNodeWithRum() {\n const loadState = useSelector(getLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return loadState === LOADING_STATUS.LOADING;\n },\n });\n return <MapNodeConnected />;\n}\n\nclass MapNodeToolbar extends React.PureComponent {\n uploadXlsRef = React.createRef();\n\n createDirectoryButtonClick = () => {\n const {path, openEditingPopup} = this.props;\n openEditingPopup(null, path + '/', OPEN_CREATE_DIRECTORY_POPUP);\n };\n\n createTableButtonClick = () => {\n const {path} = this.props;\n this.props.openCreateTableModal(path);\n };\n\n uploadTableButtonClick = () => {\n if (this.uploadXlsRef.current) {\n this.uploadXlsRef.current.handleShow();\n }\n };\n\n createLinkButtonClick = () => {\n const {path} = this.props;\n this.props.showLinkToModal({path: `${path}/New link`});\n };\n\n createACOButtonClick = () => {\n const {path} = this.props;\n\n this.props.openCreateACOModal({path, namespace: 'queries'});\n };\n\n render() {\n const {\n setFilter,\n contentMode,\n setContentMode,\n mediumList,\n mediumType,\n setMediumType,\n filterState,\n path,\n attributes,\n showACOCreateButton,\n cluster,\n } = this.props;\n\n const {uploadTableExcelBaseUrl} = getConfigUploadTable({cluster});\n\n const {menuItems, renderModals} = UIFactory.getMapNodeExtraCreateActions([\n {\n action: this.createTableButtonClick,\n text: <NoWrap>Table</NoWrap>,\n icon: <Icon awesome={'table'} face={'solid'} />,\n },\n {\n action: this.createDirectoryButtonClick,\n text: <NoWrap>Directory</NoWrap>,\n icon: <Icon awesome={'folder'} face={'solid'} />,\n },\n ...(!uploadTableExcelBaseUrl\n ? []\n : [\n {\n action: this.uploadTableButtonClick,\n text: <NoWrap>Upload xlsx</NoWrap>,\n icon: <Icon awesome={'upload'} />,\n },\n ]),\n {\n action: this.createLinkButtonClick,\n text: <NoWrap>Link</NoWrap>,\n icon: <Icon awesome={'link'} />,\n },\n showACOCreateButton && {\n action: this.createACOButtonClick,\n text: <NoWrap>ACO</NoWrap>,\n icon: <Icon awesome={'acl-object'} />,\n },\n ]);\n\n return (\n <React.Fragment>\n <div className={tbBlock('container')}>\n <div className={block('filter', tbBlock('component'))}>\n <Filter\n size=\"m\"\n key={path}\n debounce={300}\n value={filterState}\n onChange={setFilter}\n qa=\"map-node-filter\"\n />\n </div>\n\n <TTLInfo attributes={attributes} size={'m'} className={tbBlock('component')} />\n\n <div className={block('content-mode', tbBlock('component'))}>\n <RadioButton\n size=\"m\"\n name=\"navigation-map-node-content-mode\"\n value={contentMode}\n items={map_(\n MapNode.CONTENT_MODE_OPTIONS,\n RadioButton.prepareSimpleValue,\n )}\n onChange={(event) => setContentMode(event.target.value)}\n />\n </div>\n\n <div className={block('show-resources', tbBlock('component'))}>\n <ShowResourcesButton />\n </div>\n\n {mediumList?.length && (\n <div className={block('medium-type', tbBlock('component'))}>\n <SelectSingle\n label=\"Medium:\"\n placeholder=\"All\"\n value={mediumType}\n items={map_(mediumList, (type) => ({\n value: type,\n text: hammer.format['ReadableField'](type),\n }))}\n onChange={setMediumType}\n width=\"max\"\n hideFilter={true}\n />\n </div>\n )}\n\n <NavigationExtraActions\n className={block('copy-to-remote', tbBlock('component'))}\n />\n\n <div className={block('create-object', tbBlock('component'))}>\n <DropdownMenu\n menuSize={'n'}\n popupClass={block('create-popup')}\n items={menuItems}\n switcher={\n <Button size=\"m\" title=\"Create object\">\n Create object\n </Button>\n }\n />\n </div>\n </div>\n <div className=\"nodes-types\">\n <NodesTypes />\n </div>\n <UploadManagerCreate ref={this.uploadXlsRef} />\n {renderModals()}\n </React.Fragment>\n );\n }\n}\n\nfunction ShowResourcesButton() {\n const dispatch = useDispatch();\n const isRoot = useSelector(isRootNode);\n const loading = useSelector(getMapNodeResourcesLoading);\n return (\n <Button\n size=\"m\"\n title=\"Show all nodes resource usage [Shift+S]\"\n disabled={isRoot}\n loading={loading}\n onClick={() => dispatch(updateResourceUsage())}\n hotkey={[{keys: 'shift+s', handler: updateResourceUsage, scope: 'all'}]}\n >\n Show resources\n </Button>\n );\n}\n\nconst MapNodeToolbarConnected = connect(mapStateToProps, mapDispatchToProps)(MapNodeToolbar);\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {getPath} from '../../../selectors/navigation';\nimport {\n GET_DOCUMENT,\n SET_DOCUMENT_EDIT_MODE,\n} from '../../../../constants/navigation/content/document';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../reducers';\nimport {NavigationDocumentAction} from '../../../reducers/navigation/content/document';\nimport {wrapApiPromiseByToaster} from '../../../../utils/utils';\n\nconst requests = new CancelHelper();\n\ntype DocumentThunkAction = ThunkAction<void, RootState, any, NavigationDocumentAction>;\n\nexport const getDocument = (): DocumentThunkAction => (dispatch, getState) => {\n const state = getState();\n const path = getPath(state) as string;\n\n dispatch({type: GET_DOCUMENT.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationGetDocument, {\n parameters: {\n path,\n output_format: {$value: 'json', $attributes: {}},\n },\n cancellation: requests.saveCancelToken,\n })\n .then((document) => {\n dispatch({\n type: GET_DOCUMENT.SUCCESS,\n data: {document},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_DOCUMENT.CANCELLED});\n } else {\n dispatch({\n type: GET_DOCUMENT.FAILURE,\n data: {error},\n });\n }\n });\n};\n\nexport const saveDocument =\n ({path, documentString}: {path: string; documentString: string}): DocumentThunkAction =>\n async (dispatch) => {\n const document = documentString === '' ? null : JSON.parse(documentString);\n try {\n await wrapApiPromiseByToaster(yt.v3.set({path}, document), {\n toasterName: 'navigation-save-document',\n errorTitle: 'Failed to save document',\n successTitle: 'Document successfully saved',\n });\n\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: false});\n dispatch({\n type: GET_DOCUMENT.SUCCESS,\n data: {document: document},\n });\n\n return Promise.resolve();\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\nexport const abortAndReset = (): DocumentThunkAction => (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_DOCUMENT.CANCELLED});\n};\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getNavigationDocumentLoadingStatus = createSelector(\n [\n (store: RootState) => store.navigation.content.document.loading,\n (store: RootState) => store.navigation.content.document.loaded,\n (store: RootState) => store.navigation.content.document.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const selectNavigationDocument = (store: RootState) => store.navigation.content.document;\n","import React, {FC, Fragment} from 'react';\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 {Alert, Button} from '@gravity-ui/uikit';\nimport {UnipikaSettings} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport Icon from '../../../../components/Icon/Icon';\n\ntype Props = {\n attributes: Record<any, any>;\n document: any;\n settings: UnipikaSettings;\n onEditClick: () => void;\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\nconst DocumentBody: FC<Props> = ({attributes, settings, onEditClick, document = null}) => {\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={<EditButton onEditClick={onEditClick} />}\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 />\n <DocumentEditModal\n settings={settings}\n open={editMode}\n onCancel={handleOnCancel}\n onSave={handleOnDocumentSave}\n document={document}\n />\n </>\n )}\n </div>\n </LoadDataHandler>\n );\n};\n\nexport default Document;\n","import React, {FC} from 'react';\nimport Document from './Document';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {getNavigationDocumentLoadingStatus} from '../../../../store/selectors/navigation/content/document';\nimport {useSelector} from 'react-redux';\n\nconst DocumentWithRum: FC = () => {\n const loadState = useSelector(getNavigationDocumentLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_DOCUMENT,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_DOCUMENT,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Document />;\n};\n\nexport default DocumentWithRum;\n","import CancelHelper from '../../../../utils/cancel-helper';\nimport {navigateParent} from '../../../../store/actions/navigation';\nimport {ABORT_TRANSACTION} from '../../../../constants/navigation/content/transaction';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function abortTransaction(id) {\n return (dispatch) => {\n dispatch({type: ABORT_TRANSACTION.REQUEST});\n\n return ytApiV3\n .abortTransaction({\n parameters: {transaction_id: id},\n cancellation: requests.saveCancelToken,\n })\n .then(() => {\n dispatch(navigateParent());\n dispatch({type: ABORT_TRANSACTION.SUCCESS});\n })\n .catch((error) => {\n dispatch({\n type: ABORT_TRANSACTION.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function resetStore() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: ABORT_TRANSACTION.CANCELLED});\n };\n}\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {main} from '../../../../components/MetaTable/presets';\nimport Button from '../../../../components/Button/Button';\nimport Modal from '../../../../components/Modal/Modal';\n\nimport {\n abortTransaction,\n resetStore,\n} from '../../../../store/actions/navigation/content/transaction';\nimport {getAttributes, getLoadState} from '../../../../store/selectors/navigation';\nimport withVisible from '../../../../hocs/withVisible';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport Yson from '../../../../components/Yson/Yson';\n\nconst block = cn('navigation-transaction');\n\nTransaction.propTypes = {\n // from withVisible hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n};\n\nfunction Transaction({visible, handleClose, handleShow}) {\n const dispatch = useDispatch();\n const attributes = useSelector(getAttributes);\n\n const [title, startTime, timeout, id] = ypath.getValues(attributes, [\n '/title',\n '/start_time',\n '/timeout',\n '/id',\n ]);\n const {loading, error, errorData} = useSelector(\n (state) => state.navigation.content.transaction,\n );\n\n const handleTransactionAbort = useCallback(() => dispatch(abortTransaction(id)), [dispatch]);\n const handleModalClose = useCallback(() => {\n handleClose();\n dispatch(resetStore());\n }, [dispatch, handleClose]);\n\n const modalContent = (\n <LoadDataHandler loaded={false} error={error} errorData={errorData}>\n About to abort transaction <span className=\"elements-monospace\">{id}</span>\n </LoadDataHandler>\n );\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n main(attributes),\n [\n {\n key: 'title',\n value: <Yson value={title} />,\n visible: Boolean(title),\n },\n {\n key: 'start_time',\n value: startTime,\n visible: Boolean(startTime),\n },\n {\n key: 'timeout',\n value: timeout,\n visible: Boolean(timeout),\n },\n ],\n ]}\n />\n\n <Button onClick={handleShow}>Abort</Button>\n <Modal\n title=\"Abort\"\n visible={visible}\n loading={loading}\n confirmTheme=\"danger\"\n confirmText=\"Abort\"\n content={modalContent}\n onConfirm={handleTransactionAbort}\n onCancel={handleModalClose}\n />\n </div>\n );\n}\n\nconst TransactionConnected = withVisible(Transaction);\n\nexport default function TransactionWithRum() {\n const loadState = useSelector(getLoadState);\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TransactionConnected />;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {prepareNavigationState} from '../../../../utils/navigation';\n\nexport default class Transaction {\n constructor(transaction, parentParsedPath) {\n this.id = ypath.getValue(transaction, '');\n this.attributes = ypath.getValue(transaction, '/@');\n\n this.type = this.attributes.type;\n this.title = this.attributes.title;\n this.owner = this.attributes.owner;\n this.started = this.attributes.start_time;\n\n this.parsedPath = ypath.YPath.clone(parentParsedPath).concat(\n '/' + ypath.YPath.fragmentFromYSON(this.id),\n );\n this.pathState = prepareNavigationState(this.parsedPath);\n this.path = this.parsedPath.stringify();\n }\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport map_ from 'lodash/map';\n\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getParsedPath, getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport Transaction from '../../../../utils/navigation/content/transaction-map/transaction';\nimport {\n CHANGE_FILTER,\n LOAD_TRANSACTIONS,\n} from '../../../../constants/navigation/content/transaction-map';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function loadTransactions() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const parsedPath = getParsedPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_TRANSACTIONS.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .list(YTApiId.navigationListTransactions, {\n parameters: prepareRequest('/', {\n path,\n transaction,\n attributes: ['type', 'title', 'start_time', 'owner'],\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((rawTransactions) => {\n const transactions = ypath.getValue(rawTransactions, '');\n\n dispatch({\n type: LOAD_TRANSACTIONS.SUCCESS,\n data: {\n transactions: map_(\n transactions,\n (transaction) => new Transaction(transaction, parsedPath),\n ),\n },\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_TRANSACTIONS.CANCELLED});\n } else {\n dispatch({\n type: LOAD_TRANSACTIONS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function changeFilter(filter) {\n return {\n type: CHANGE_FILTER,\n data: {filter},\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_TRANSACTIONS.CANCELLED});\n };\n}\n","export const tableItems = {\n icon: {\n sort: false,\n caption: '',\n align: 'center',\n },\n id: {\n align: 'left',\n sort(transaction) {\n return transaction.id;\n },\n },\n owner: {\n align: 'left',\n sort(transaction) {\n return transaction.owner;\n },\n },\n title: {\n align: 'left',\n sort(transaction) {\n return transaction.title;\n },\n },\n start_time: {\n align: 'right',\n sort(transaction) {\n return transaction.started;\n },\n },\n actions: {\n caption: '',\n align: 'center',\n sort: false,\n },\n};\n","import hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {tableItems} from '../../../../utils/navigation/content/transaction-map/table';\nimport {NAVIGATION_TRANSACTION_MAP_TABLE_ID} from '../../../../constants/navigation/content/transaction-map';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nconst getRawTransactions = (state) => state.navigation.content.transactionMap.transactions;\nconst getSortState = (state) => state.tables[NAVIGATION_TRANSACTION_MAP_TABLE_ID];\nconst getFilter = (state) => state.navigation.content.transactionMap.filter;\n\nconst getFilteredTransactions = createSelector(\n [getRawTransactions, getFilter],\n (rawTransactions, filter) =>\n hammer.filter.filter({\n data: rawTransactions,\n input: filter,\n factors: ['id', 'title'],\n }),\n);\n\nexport const getTransactions = createSelector(\n [getFilteredTransactions, getSortState],\n (filteredTransactions, sortState) =>\n hammer.utils.sort(filteredTransactions, sortState, tableItems),\n);\n\nexport const getNavigationTransactionMapLoadingStatus = createSelector(\n [\n (store) => store.navigation.content.transactionMap.loading,\n (store) => store.navigation.content.transactionMap.loaded,\n (store) => store.navigation.content.transactionMap.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import React, {Component} from 'react';\nimport {Sticky, StickyContainer} from 'react-sticky';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {FormattedText, FormattedTextOrLink} from '../../../../components/formatters';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport Filter from '../../../../components/Filter/Filter';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {NAVIGATION_TRANSACTION_MAP_TABLE_ID} from '../../../../constants/navigation/content/transaction-map';\nimport {\n changeFilter,\n loadTransactions,\n} from '../../../../store/actions/navigation/content/transaction-map';\nimport {\n getNavigationTransactionMapLoadingStatus,\n getTransactions,\n} from '../../../../store/selectors/navigation/content/transaction-map';\nimport {tableItems} from '../../../../utils/navigation/content/transaction-map/table';\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {itemNavigationAllowed} from '../../../../pages/navigation/Navigation/ContentViewer/helpers';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './TransactionMap.scss';\n\nconst block = cn('navigation-transaction-map');\n\nclass TransactionMap extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n filter: PropTypes.string.isRequired,\n transactions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n transaction: PropTypes.string,\n\n changeFilter: PropTypes.func.isRequired,\n loadTransactions: PropTypes.func.isRequired,\n };\n\n static renderIcon(item) {\n const iconName = getIconNameForType(item.type);\n\n return <Icon awesome={iconName} />;\n }\n\n static renderId(item) {\n const isLink = itemNavigationAllowed(item);\n\n return <FormattedTextOrLink state={item.pathState} asLink={isLink} text={item.id} />;\n }\n\n static renderOwner(item) {\n return <FormattedText text={item.owner} />;\n }\n\n static renderStartTime(item) {\n return hammer.format['DateTime'](item.started, {format: 'full'});\n }\n\n static renderTitle(item) {\n return <FormattedText text={item.title} />;\n }\n\n static renderActions(item) {\n return (\n <ClickableAttributesButton\n title={item.id}\n path={`//sys/transactions/${item.id}`}\n withTooltip\n />\n );\n }\n\n componentDidMount() {\n this.props.loadTransactions();\n }\n\n componentDidUpdate(prevProps) {\n const {path, transaction, loadTransactions} = this.props;\n\n if (prevProps.path !== path || prevProps.transaction !== transaction) {\n loadTransactions();\n }\n }\n\n get tableSettings() {\n return {\n css: block(),\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: NAVIGATION_TRANSACTION_MAP_TABLE_ID,\n columns: {\n items: tableItems,\n sets: {\n default: {\n items: ['icon', 'id', 'title', 'owner', 'start_time', 'actions'],\n },\n },\n mode: 'default',\n },\n templates: {\n icon: TransactionMap.renderIcon,\n id: TransactionMap.renderId,\n owner: TransactionMap.renderOwner,\n start_time: TransactionMap.renderStartTime,\n title: TransactionMap.renderTitle,\n actions: TransactionMap.renderActions,\n },\n computeKey(item) {\n return item.id;\n },\n };\n }\n\n handleFilterChange = (value) => this.props.changeFilter(value);\n\n render() {\n const {filter, loading, transactions} = this.props;\n\n return (\n <div className={block()}>\n <StickyContainer>\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n })}\n >\n <Filter\n hasClear\n size=\"m\"\n value={filter}\n debounce={300}\n className={block('filter')}\n onChange={this.handleFilterChange}\n placeholder=\"Filter transactions...\"\n />\n </div>\n )}\n </Sticky>\n\n <LoadDataHandler {...this.props}>\n <ElementsTable\n {...this.tableSettings}\n items={transactions}\n isLoading={loading}\n />\n </LoadDataHandler>\n </StickyContainer>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {filter, loading, loaded, error, errorData} = state.navigation.content.transactionMap;\n const path = getPath(state);\n const transaction = getTransaction(state);\n const transactions = getTransactions(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n transaction,\n filter,\n transactions,\n };\n};\n\nconst mapDispatchToProps = {\n loadTransactions,\n changeFilter,\n};\n\nconst TransactionMapConnected = connect(mapStateToProps, mapDispatchToProps)(TransactionMap);\n\nexport default function TranscationMapWithRum() {\n const loadState = useSelector(getNavigationTransactionMapLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION_MAP,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION_MAP,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TransactionMapConnected />;\n}\n","import {AccessAclTab} from '../../../tabs/ACL/ACL';\nimport ReplicatedTable from '../../../../../pages/navigation/content/ReplicatedTable/ReplicatedTable';\nimport ReplicatedTableMeta from '../../../content/ReplicatedTable/ReplicatedTableMeta';\n\nimport Link from '../../../../../pages/navigation/content/Link/Link';\nimport File from '../../../../../pages/navigation/content/File/File';\nimport Table from '../../../../../pages/navigation/content/Table/Table';\nimport MapNode from '../../../../../pages/navigation/content/MapNode/MapNode';\nimport Document from '../../../content/Document/DocumentWithRum';\nimport Transaction from '../../../../../pages/navigation/content/Transaction/Transaction';\nimport TransactionMap from '../../../../../pages/navigation/content/TransactionMap/TransactionMap';\n\nconst supportedContentTypes = {\n map_node: MapNode,\n portal_entrance: MapNode,\n portal_exit: MapNode,\n rootstock: MapNode,\n scion: MapNode,\n cell_node_map: MapNode,\n sys_node: MapNode,\n access_control_object_namespace_map: MapNode,\n access_control_object_namespace: MapNode,\n access_control_object: AccessAclTab,\n tablet_cell: MapNode,\n scheduler_pool_tree_map: MapNode,\n scheduler_pool: MapNode,\n document: Document,\n string_node: Document,\n int64_node: Document,\n uint64_node: Document,\n double_node: Document,\n boolean_node: Document,\n link: Link,\n file: File,\n table: Table,\n replicated_table: ReplicatedTable,\n chaos_replicated_table: ReplicatedTable,\n replication_log_table: ReplicatedTableMeta,\n transaction: Transaction,\n nested_transaction: Transaction,\n topmost_transaction_map: TransactionMap,\n transaction_map: TransactionMap,\n};\n\nexport default (type: string) => supportedContentTypes[type as keyof typeof supportedContentTypes];\n","import {createSelector} from 'reselect';\n\nimport type {RootState} from '../../../../store/reducers';\nimport type {YtQueueStatus} from '../../../../store/reducers/navigation/tabs/queue/types';\n\nconst metaMock = {cell_id: '890', host: 'lbk-vla-249.search.yandex.net'};\nexport const emptyRate = {'1m': 0, '1h': 0, '1d': 0};\n\nexport const getFamily = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.family;\n\nexport const getPartitionCount = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.partition_count;\n\nexport const getReadDataWeightRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.read_data_weight_rate ?? emptyRate;\n\nexport const getReadRowCountRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.read_row_count_rate ?? emptyRate;\n\nexport const getWriteDataWeightRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.write_data_weight_rate ?? emptyRate;\n\nexport const getWriteRowCountRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.write_row_count_rate ?? emptyRate;\n\nexport const getStatusError = (state: RootState) => state.navigation.tabs.queue.status.statusError;\n\nexport const getStatusLoading = (state: RootState) =>\n state.navigation.tabs.queue.status.statusLoading;\n\nexport const getStatusLoaded = (state: RootState) =>\n state.navigation.tabs.queue.status.statusLoaded;\n\nexport const getQueueStatusDataAlerts = (state: RootState): YtQueueStatus['alerts'] =>\n state.navigation.tabs.queue.status?.statusData?.alerts;\n\nexport const getQueueMode = (state: RootState) => state.navigation.tabs.queue.filters.queueMode;\n\nexport const getQueuePartitionIndex = (state: RootState) =>\n state.navigation.tabs.queue.filters.queuePartitionIndex;\n\nexport const getQueuePartitionsColumns = (state: RootState) =>\n state.navigation.tabs.queue.filters.partitionsColumns;\n\nexport const getQueueTabletCellHost = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTabletCellHost;\n\nexport const getQueueTabletCellId = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTabletCellId;\n\nexport const getQueueConsumerName = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueConsumerName;\n\nexport const getQueueOwner = (state: RootState) => state.navigation.tabs.queue.filters.queueOwner;\n\nexport const getQueueRateMode = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueRateMode;\n\nexport const getQueueTimeWindow = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTimeWindow;\n\nconst getPartitionsData = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsData;\n\nexport const getPartitions = createSelector(\n [getQueuePartitionIndex, getQueueTabletCellHost, getQueueTabletCellId, getPartitionsData],\n (queuePartitionIndex, queueTabletCellHost, queueTabletCellId, partitionsData) =>\n partitionsData\n ?.map((partition, index) => ({\n ...partition,\n meta: partition.meta ?? metaMock,\n partition_index: index,\n write_data_weight_rate: partition.write_data_weight_rate ?? emptyRate,\n write_row_count_rate: partition.write_row_count_rate ?? emptyRate,\n }))\n ?.filter(\n (partition) =>\n partition.partition_index.toString(10).includes(queuePartitionIndex) &&\n partition.meta.host.includes(queueTabletCellHost) &&\n partition.meta.cell_id.includes(queueTabletCellId),\n ) ?? [],\n);\n\nexport type SelectedPartition = NonNullable<ReturnType<typeof getPartitions>>[0];\n\nexport const getPartitionsError = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsError;\n\nexport const getPartitionsLoading = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsLoading;\n\nexport const getPartitionsLoaded = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsLoaded;\n\nconst getRawConsumers = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.registrations;\n\nexport const getConsumers = createSelector(\n [getQueueConsumerName, getRawConsumers],\n (queueConsumerName, consumers) =>\n (consumers ? consumers : [])\n ?.map((consumer) => ({\n ...consumer,\n read_data_weight_rate: emptyRate,\n read_row_count_rate: emptyRate,\n }))\n ?.filter((item) => item.consumer.includes(queueConsumerName)),\n);\n\nexport type SelectedConsumer = NonNullable<ReturnType<typeof getConsumers>>[0];\n","import {createSelector} from 'reselect';\nimport type {RootState} from '../../../../store/reducers';\nimport {emptyRate} from './queue';\n\nexport const getConsumerPartitionIndex = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerPartitionIndex;\n\nexport const getConsumerRateMode = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerRateMode;\n\nexport const getConsumerPartitionsColumns = (state: RootState) =>\n state.navigation.tabs.consumer.filters.partitionsColumns;\n\nexport const getConsumerTimeWindow = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerTimeWindow;\n\nexport const getTargetQueue = (state: RootState) =>\n state.navigation.tabs.consumer.filters.targetQueue;\n\nexport const getConsumerRegisteredQueues = (state: RootState) =>\n state.navigation.tabs.consumer.status.consumerData?.registrations;\n\nconst getStatusData = (state: RootState) => state.navigation.tabs.consumer.status.consumerData;\n\nconst getTargetQueueStatusData = (state: RootState) => {\n const statusData = getStatusData(state);\n const {queue = ''} = getTargetQueue(state) ?? {};\n\n return statusData?.queues?.[queue];\n};\n\nexport const getOwner = (state: RootState) => getTargetQueueStatusData(state)?.owner;\n\nexport const getPartitionCount = (state: RootState) =>\n getTargetQueueStatusData(state)?.partition_count;\n\nexport const getReadDataWeightRate = (state: RootState) =>\n getTargetQueueStatusData(state)?.read_data_weight_rate ?? emptyRate;\n\nexport const getReadRowCountRate = (state: RootState) =>\n getTargetQueueStatusData(state)?.read_row_count_rate ?? emptyRate;\n\nexport const getTargetQueueError = (state: RootState) => {\n const targetQueueStatusData = getTargetQueueStatusData(state);\n return targetQueueStatusData?.error;\n};\n\nexport const getStatusError = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusError;\n\nexport const getStatusLoading = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusLoading;\n\nexport const getStatusLoaded = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusLoaded;\n\nexport const getConsumerMode = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerMode;\n\nconst getPartitionsData = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsData;\n\nexport const getPartitions = createSelector(\n [getConsumerPartitionIndex, getPartitionsData],\n (consumerPartitionIndex, partitionsData) =>\n partitionsData\n ?.map((partition, index) => ({\n ...partition,\n partition_index: index,\n read_data_weight_rate: partition.read_data_weight_rate ?? emptyRate,\n read_row_count_rate: partition.read_row_count_rate ?? emptyRate,\n }))\n ?.filter((partition) =>\n partition.partition_index.toString(10).includes(consumerPartitionIndex),\n ) ?? [],\n);\n\nexport type SelectedPartition = NonNullable<ReturnType<typeof getPartitions>>[0];\n\nexport const getPartitionsError = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsError;\n\nexport const getPartitionsLoading = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsLoading;\n\nexport const getPartitionsLoaded = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsLoaded;\n","import type {ChangeEvent} from 'react';\n\nimport {\n CONSUMER_CHANGE_FILTERS,\n CONSUMER_MODE,\n CONSUMER_RATE_MODE,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport type {\n ConsumerFiltersAction,\n ConsumerFiltersState,\n ConsumerPartitionsColumns,\n PartitionColumn,\n} from '../../../../../store/reducers/navigation/tabs/consumer/filters';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\n\nexport function changeConsumerMode(evt: ChangeEvent<HTMLInputElement>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerMode: evt.target.value as CONSUMER_MODE},\n };\n}\n\nexport function changeConsumerPartitionIndex(value: string): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerPartitionIndex: value},\n };\n}\n\nexport function changeConsumerRateMode(evt: ChangeEvent<HTMLInputElement>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerRateMode: evt.target.value as CONSUMER_RATE_MODE},\n };\n}\n\ninterface CompactColumnSelectorPayload {\n items: Array<PartitionColumn<ConsumerPartitionsColumns>>;\n}\nexport function changeConsumerPartitionsColumns({\n items,\n}: CompactColumnSelectorPayload): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {partitionsColumns: items},\n };\n}\n\nexport function changeConsumerTimeWindow(\n evt: ChangeEvent<HTMLInputElement>,\n): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerTimeWindow: evt.target.value as keyof TPerformanceCounters},\n };\n}\n\nexport function changeConsumerFilters(data: Partial<ConsumerFiltersState>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data,\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getConsumerRegisteredQueues,\n getTargetQueue,\n getTargetQueueError,\n} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport ErrorBlock from '../../../../../components/Block/Block';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Link from '../../../../../components/Link/Link';\nimport {findCommonPathParent, genNavigationUrl} from '../../../../../utils/navigation/navigation';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport {Item, SelectSingle} from '../../../../../components/Select/Select';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {changeConsumerFilters} from '../../../../../store/actions/navigation/tabs/consumer/filters';\n\nimport './TargetQueue.scss';\n\nconst block = cn('target-queue');\n\nexport default function TargetQueue() {\n const {queue} = useSelector(getTargetQueue) ?? {};\n const error = useSelector(getTargetQueueError);\n\n let clusterQueueUrl;\n if (queue) {\n const firstColon = queue.indexOf(':');\n if (firstColon === -1) {\n throw new Error(\n 'Unexpected behavior: queue should be formatted like \"${cluster}:${path}\"',\n );\n }\n const cluster = queue.slice(0, firstColon);\n const path = queue.slice(firstColon + 1);\n clusterQueueUrl = genNavigationUrl({cluster, path});\n }\n\n return (\n <div className={block()}>\n <div className=\"elements-heading elements-heading_size_xs\">Target queue</div>\n <ConsumerQueueSelector>\n {queue && (\n <Link theme=\"secondary\" url={clusterQueueUrl} routed>\n <Icon awesome=\"link\" />\n </Link>\n )}\n </ConsumerQueueSelector>\n {error && <ErrorBlock error={error} topMargin=\"half\" />}\n </div>\n );\n}\n\ninterface ConsumerQueueSelectorProps {\n className?: string;\n\n children?: React.ReactNode;\n}\n\nexport function ConsumerQueueSelector({className, children}: ConsumerQueueSelectorProps) {\n const dispatch = useDispatch();\n const registrations = useSelector(getConsumerRegisteredQueues);\n\n const handleSelect = (value?: string) => {\n const item = value ? registrations?.find(({queue}) => queue === value) : undefined;\n dispatch(changeConsumerFilters({targetQueue: item}));\n };\n\n const {prefix, items, renderItem} = React.useMemo(() => {\n const pref = reduce_(\n registrations,\n (acc, {queue}) => {\n return findCommonPathParent(acc, queue);\n },\n registrations?.[0]?.queue ?? '',\n );\n\n const options = map_(registrations, ({queue}) => {\n return {\n value: `${queue}`,\n text: queue,\n };\n });\n\n if (options.length === 1) {\n const [{value}] = options;\n requestAnimationFrame(() => {\n handleSelect(value);\n });\n }\n\n return {\n prefix: pref,\n items: options,\n renderItem: (item: Item) => {\n return item.value.slice(pref.length);\n },\n };\n }, [registrations, dispatch]);\n\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n return (\n <div className={block('selector', className)}>\n {items.length > 1 ? (\n <>\n <Prefix text={prefix} />{' '}\n <SelectSingle\n value={queue}\n items={items}\n className={block('queue-selector-value')}\n renderItem={renderItem}\n width=\"auto\"\n onChange={handleSelect}\n placeholder=\"Select queue... \"\n />\n </>\n ) : (\n <Prefix text={queue ?? ''} />\n )}\n {queue && <ClipboardButton text={queue} view=\"clear\" />}\n {children}\n </div>\n );\n}\n\nfunction Prefix({text}: {text: string}) {\n const parts = text.split('/');\n\n return (\n <Tooltip className={block('prefix')} content={text}>\n {parts.map((item, index) => {\n return (\n <React.Fragment key={index}>\n {item && <span className={block('prefix-item')}>{item}</span>}\n {index !== parts.length - 1 ? '/' : null}\n </React.Fragment>\n );\n })}\n </Tooltip>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './BarChart.scss';\n\nconst block = cn('multimeter');\n\ninterface Props {\n values: number[];\n size?: number;\n}\n\nconst BarChart: React.VFC<Props> = ({values, size = 20}) => {\n let min = Math.min(0, ...values);\n let max = Math.max(0, ...values);\n\n if (min === max) {\n min = 0;\n max = 1;\n }\n\n const width = Math.floor((size * 3) / (4 * values.length - 1));\n\n return (\n <div className={block('barchart')} style={{width: size, height: size}}>\n {values.map((v, i) => {\n const marginRight = Math.floor(\n i === values.length - 1 ? 0 : size / (4 * values.length - 1),\n );\n const style = {\n height: `${Math.abs(v * 100) / (max - min)}%`,\n width: `${width}px`,\n marginBottom: `${(100 * (Math.min(0, v) - min)) / (max - min)}%`,\n marginRight: `max(1px,${marginRight}px)`,\n } as any;\n if (!v) {\n style.height = '100%';\n // if there is no bar, make full height, but transparent bar so that it height is the same as full\n // bar's one\n style.backgroundColor = 'inherit';\n }\n return <div key={i} className={block('barchart-bar')} style={style} />;\n })}\n </div>\n );\n};\n\nexport default BarChart;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport hummerFormat from '../../common/hammer/format';\nimport type {TPerformanceCounters} from '../../store/reducers/navigation/tabs/queue/types';\nimport BarChart from './BarChart';\nimport {Tooltip} from '../Tooltip/Tooltip';\nimport MetaTable from '../MetaTable/MetaTable';\n\nimport './Multimeter.scss';\n\nconst block = cn('multimeter');\n\ninterface Props extends Partial<TPerformanceCounters> {\n show: keyof TPerformanceCounters;\n showTooltip?: boolean;\n format?: (value: number) => React.ReactNode;\n}\n\nconst Multimeter: React.VFC<Props> = ({show, format, ...counters}) => {\n const formatter = format || hummerFormat.Number;\n\n const counterNames = ['1d', '1h', '1m'] as const;\n const content = (\n <MetaTable\n className={block('tooltip')}\n items={counterNames.map((key) => {\n return {key, value: formatter(counters[key] ?? 0)};\n })}\n />\n );\n\n return (\n <div className={block()}>\n <Tooltip content={content}>\n <BarChart values={counterNames.map((key) => counters[key] ?? 0)} />\n </Tooltip>\n <div className={block('value')}>{formatter(counters[show] ?? 0)}</div>\n </div>\n );\n};\n\nexport default Multimeter;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\n\nimport format from '../../../../../common/hammer/format';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport Label from '../../../../../components/Label/Label';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport {SubjectCard} from '../../../../../components/SubjectLink/SubjectLink';\n\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {isNull} from '../../../../../utils';\nimport {getTargetQueue} from '../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Meta.scss';\n\nconst block = cn('consumer-meta');\n\ninterface Props {\n targetQueue?: string;\n owner?: string;\n partitionCount?: number;\n readDataWeightRate?: TPerformanceCounters;\n readRowCountRate?: TPerformanceCounters;\n}\n\nconst Meta: React.FC<Props> = ({owner, partitionCount, readDataWeightRate, readRowCountRate}) => {\n const {vital} = useSelector(getTargetQueue) ?? {};\n\n return (\n <ErrorBoundary>\n <div className={block('header')}>\n <div className={block('header-title', 'elements-heading elements-heading_size_xs')}>\n Meta\n </div>\n </div>\n <MetaTable\n className={block()}\n items={[\n [\n {\n key: 'owner',\n label: 'Owner',\n value: owner && <SubjectCard name={owner} />,\n visible: !isNull(owner),\n },\n ],\n [\n {\n key: 'vital',\n label: 'Vital',\n value: <Label theme=\"default\" text={vital ? 'True' : 'False'} />,\n visible: !isNull(vital),\n },\n {\n key: 'partition_count',\n label: 'Partition count',\n value: partitionCount,\n visible: !isNull(partitionCount),\n },\n ],\n [\n {\n key: 'read-data-weight-rate',\n label: 'Data weight read rate',\n value: (\n <Multimeter\n {...readDataWeightRate}\n show=\"1m\"\n format={format.BytesPerSecond}\n />\n ),\n visible: !isNull(readDataWeightRate),\n },\n {\n key: 'read-row-count-rate',\n label: 'Rows read rate',\n value: (\n <Multimeter\n {...readRowCountRate}\n show=\"1m\"\n format={format.RowsPerSecond}\n />\n ),\n visible: !isNull(readRowCountRate),\n },\n ],\n ]}\n />\n </ErrorBoundary>\n );\n};\n\nexport default React.memo(Meta);\n","import React, {ComponentType} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {CONSUMER_MODE} from '../../../../../constants/navigation/tabs/consumer';\nimport {changeConsumerMode} from '../../../../../store/actions/navigation/tabs/consumer/filters';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getConsumerMode} from '../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Toolbar.scss';\n\nconst block = cn('consumer-toolbar');\n\ninterface Props extends PropsFromRedux {\n extras: ComponentType;\n}\n\nconst tabItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: CONSUMER_MODE.METRICS,\n text: 'Metrics',\n },\n {\n value: CONSUMER_MODE.PARTITIONS,\n text: 'Partitions',\n },\n];\n\nconst Toolbar: React.VFC<Props> = ({extras: Extras, consumerMode, changeConsumerMode}) => {\n return (\n <div className={block()}>\n <RadioButton value={consumerMode} onChange={changeConsumerMode} items={tabItems} />\n <Extras />\n </div>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n consumerMode: getConsumerMode(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeConsumerMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Toolbar);\n","import React from 'react';\nimport moment from 'moment';\nimport type {Column} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../common/hammer/format';\nimport Label from '../../../../../components/Label/Label';\nimport Link from '../../../../../components/Link/Link';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport {SubjectCard} from '../../../../../components/SubjectLink/SubjectLink';\nimport WarningIcon from '../../../../../components/WarningIcon/WarningIcon';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {Host} from '../../../../../containers/Host/Host';\nimport type {YTError} from '../../../../../types';\nimport {genNavigationUrl} from '../../../../../utils/navigation/navigation';\nimport {ClickableText} from '../../../../../components/ClickableText/ClickableText';\nimport {showErrorPopup} from '../../../../../utils/utils';\n\nconst DISPLAY_FORMAT = 'DD-MM-YYYY HH:mm:ss';\n\nexport function bool<T>(name: string, getter: (row: T) => boolean): Column<T> {\n return {\n name,\n render({row}) {\n return <Label theme=\"default\" text={getter(row) ? 'True' : 'False'} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function datetime<T>(name: string, getter: (row: T) => string | null): Column<T> {\n return {\n name,\n render({row}) {\n return moment(getter(row)).format(DISPLAY_FORMAT);\n },\n sortAccessor(row) {\n return moment(getter(row)).valueOf();\n },\n };\n}\n\nexport function error<T>(\n name: string,\n getter: (row: T) => YTError | undefined,\n className?: string,\n): Column<T> {\n return {\n name,\n render({row}) {\n const error = getter(row);\n if (!error) return null;\n\n return (\n <WarningIcon\n className={className}\n color=\"danger\"\n hoverContent={<HoverContent error={error} />}\n >\n Error\n </WarningIcon>\n );\n },\n sortAccessor: getter,\n };\n}\n\nfunction HoverContent({error}: {error: YTError}) {\n return (\n <span>\n {error.message ?? 'Error'}{' '}\n <ClickableText onClick={() => showErrorPopup(error)}>Details</ClickableText>\n </span>\n );\n}\n\nexport function host<T>(name: string, getter: (row: T) => string, classNames: string): Column<T> {\n return {\n name,\n render({row}) {\n const host = getter(row);\n return <Host asTabletNode address={host} copyBtnClassName={classNames} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function multimeter<T>(\n name: string,\n getter: (row: T) => TPerformanceCounters,\n show: keyof TPerformanceCounters,\n valueFormat: (value: number) => React.ReactNode = format.Number,\n): Column<T> {\n return {\n name,\n render({row}) {\n const counters = getter(row);\n return <Multimeter {...counters} show={show} format={valueFormat} />;\n },\n sortAccessor(row) {\n const counters = getter(row);\n return counters['1m'];\n },\n };\n}\n\nexport function number<T>(name: string, getter: (row: T) => number | null): Column<T> {\n return {\n name,\n align: 'right',\n render({row}) {\n return format.Number(getter(row));\n },\n sortAccessor: getter,\n };\n}\n\nexport function string<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n return getter(row);\n },\n sortAccessor: getter,\n };\n}\n\nexport function user<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n return <SubjectCard name={getter(row)} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function ypath<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n const consumer = getter(row);\n if (!consumer) return null;\n\n const [cluster, path] = consumer.split(':');\n const url = genNavigationUrl({cluster, path});\n\n return (\n <Link url={url} routed>\n {consumer}\n </Link>\n );\n },\n sortAccessor: getter,\n };\n}\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../../components/Block/Block';\nimport {NoContent} from '../../../../../../components/NoContent/NoContent';\nimport {CONSUMER_RATE_MODE} from '../../../../../../constants/navigation/tabs/consumer';\nimport {\n datetime,\n error,\n multimeter,\n number,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport {loadConsumerPartitions} from '../../../../../../store/actions/navigation/tabs/consumer/partitions';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedPartition,\n getConsumerPartitionsColumns,\n getConsumerRateMode,\n getConsumerTimeWindow,\n getPartitions,\n getPartitionsError,\n getPartitionsLoaded,\n getPartitionsLoading,\n getTargetQueue,\n} from '../../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Partitions.scss';\n\nconst block = cn('consumer-partitions');\n\nconst readRateName: Record<CONSUMER_RATE_MODE, string> = {\n [CONSUMER_RATE_MODE.ROWS]: 'Read rate',\n [CONSUMER_RATE_MODE.DATA_WEIGHT]: 'Read rate',\n};\nconst readRateGetter: Record<CONSUMER_RATE_MODE, (row: SelectedPartition) => TPerformanceCounters> =\n {\n [CONSUMER_RATE_MODE.ROWS]: (x) => x.read_row_count_rate,\n [CONSUMER_RATE_MODE.DATA_WEIGHT]: (x) => x.read_data_weight_rate,\n };\n\nconst getColumns = createSelector(\n [getConsumerRateMode, getConsumerTimeWindow, getConsumerPartitionsColumns],\n (rateMode, timeWindow, columns): Array<Column<SelectedPartition>> => {\n return columns\n .filter((column) => column.checked)\n .map(({name, caption}) => {\n if (name === 'error') {\n return error<SelectedPartition>(caption, (x) => x[name], block('error'));\n } else if (name === 'read_rate') {\n return multimeter<SelectedPartition>(\n readRateName[rateMode],\n readRateGetter[rateMode],\n timeWindow,\n rateMode === CONSUMER_RATE_MODE.ROWS\n ? format.RowsPerSecond\n : format.BytesPerSecond,\n );\n } else if (name === 'next_row_commit_time') {\n return datetime<SelectedPartition>(caption, (x) => x[name]);\n } else {\n return number<SelectedPartition>(caption, (x) => x[name]);\n }\n });\n },\n);\n\nconst settings: Settings = {displayIndices: false};\n\nconst Partitions: React.VFC<PropsFromRedux> = ({\n loadConsumerPartitions,\n columns,\n partitions,\n partitionsError,\n partitionsLoading,\n partitionsLoaded,\n}) => {\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n useEffect(() => {\n if (queue) {\n loadConsumerPartitions(queue);\n }\n }, [queue]);\n\n if (!queue) {\n return (\n <NoContent\n hint={'Please select a queue'}\n warning={\"You don't have any selected queues\"}\n />\n );\n }\n\n if (partitionsError) {\n return <ErrorBlock error={partitionsError} topMargin=\"half\" />;\n }\n\n return (\n <DataTableYT\n className={block('table-row')}\n columns={columns}\n data={partitions}\n loading={partitionsLoading}\n loaded={partitionsLoaded}\n useThemeYT\n settings={settings}\n />\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n columns: getColumns(state),\n partitions: getPartitions(state),\n partitionsError: getPartitionsError(state),\n partitionsLoading: getPartitionsLoading(state),\n partitionsLoaded: getPartitionsLoaded(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadConsumerPartitions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Partitions);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n CONSUMER_PARTITIONS_LOAD_FAILURE,\n CONSUMER_PARTITIONS_LOAD_REQUEST,\n CONSUMER_PARTITIONS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {ConsumerPartitionsAction} from '../../../../../store/reducers/navigation/tabs/consumer/partitions';\nimport type {YtConsumerPartition} from '../../../../../store/reducers/navigation/tabs/consumer/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype ConsumerThunkAction = ThunkAction<void, RootState, unknown, ConsumerPartitionsAction>;\n\nexport function loadConsumerPartitions(queue: string): ConsumerThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: CONSUMER_PARTITIONS_LOAD_REQUEST});\n return ytApiV3Id\n .get(\n YTApiId.queueConsumerPartitions,\n prepareRequest(`/@queue_consumer_partitions/${queue.replace(/\\//g, '\\\\/')}`, {\n path,\n transaction,\n }),\n )\n .then((data: YtConsumerPartition[]) => {\n dispatch({\n type: CONSUMER_PARTITIONS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: CONSUMER_PARTITIONS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport Filter from '../../../../../../components/Filter/Filter';\nimport ColumnSelector from '../../../../../../components/ColumnSelector/ColumnSelector';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {CONSUMER_RATE_MODE} from '../../../../../../constants/navigation/tabs/consumer';\nimport {\n changeConsumerPartitionIndex,\n changeConsumerPartitionsColumns,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/consumer/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n getConsumerPartitionIndex,\n getConsumerPartitionsColumns,\n getConsumerRateMode,\n getConsumerTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/consumer';\nimport Button from '../../../../../../components/Button/Button';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport Dropdown from '../../../../../../components/Dropdown/Dropdown';\n\nimport './PartitionsExtraControls.scss';\nimport {PartitionColumn} from '../../../../../../store/reducers/navigation/tabs/consumer/filters';\n\nconst block = cn('consumer-partitions');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: CONSUMER_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: CONSUMER_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nexport const timeItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: '1m' as keyof TPerformanceCounters,\n text: '1m',\n },\n {\n value: '1h' as keyof TPerformanceCounters,\n text: '1h',\n },\n {\n value: '1d' as keyof TPerformanceCounters,\n text: '1d',\n },\n];\n\nexport interface CompactColumnSelectorProps<Names> {\n items: Array<PartitionColumn<Names>>;\n onChange: Function;\n}\nexport function CompactColumnSelector<Names>({items, onChange}: CompactColumnSelectorProps<Names>) {\n return (\n <Dropdown\n className={block('filters-item')}\n trigger=\"click\"\n directions={['bottom']}\n button={\n <Button pin={'round-round'}>\n <Icon awesome=\"table\" face=\"light\" />\n Columns\n </Button>\n }\n template={\n <ColumnSelector\n items={items}\n onChange={onChange}\n className={block('custom-column-selector')}\n />\n }\n />\n );\n}\n\nconst PartitionsExtraControls: React.VFC<Props> = ({\n consumerPartitionIndex,\n consumerRateMode,\n consumerTimeWindow,\n partitionsColumns,\n changeConsumerPartitionIndex,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n changeConsumerPartitionsColumns,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={consumerPartitionIndex}\n onChange={changeConsumerPartitionIndex}\n placeholder=\"Partition index...\"\n />\n <div className={block('divider')} />\n <RadioButton\n value={consumerRateMode}\n onChange={changeConsumerRateMode}\n items={rateItems}\n />\n <RadioButton\n value={consumerTimeWindow}\n onChange={changeConsumerTimeWindow}\n items={timeItems}\n />\n <CompactColumnSelector\n onChange={changeConsumerPartitionsColumns}\n items={partitionsColumns}\n />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n consumerPartitionIndex: getConsumerPartitionIndex(state),\n consumerRateMode: getConsumerRateMode(state),\n consumerTimeWindow: getConsumerTimeWindow(state),\n partitionsColumns: getConsumerPartitionsColumns(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeConsumerPartitionIndex,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n changeConsumerPartitionsColumns,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(PartitionsExtraControls);\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ErrorBlock from '../../../../components/Block/Block';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {CONSUMER_MODE} from '../../../../constants/navigation/tabs/consumer';\nimport {loadConsumerStatus} from '../../../../store/actions/navigation/tabs/consumer/status';\nimport type {RootState} from '../../../../store/reducers';\nimport {\n getConsumerMode,\n getOwner,\n getPartitionCount,\n getReadDataWeightRate,\n getReadRowCountRate,\n getStatusError,\n} from '../../../../store/selectors/navigation/tabs/consumer';\n\nimport TargetQueue from './TargetQueue/TargetQueue';\nimport Meta from './Meta/Meta';\nimport Toolbar from './Toolbar/Toolbar';\nimport ConsumerMetrics from './views/ConsumerMetrics/ConsumerMetrics';\nimport Partitions from './views/Partitions/Partitions';\nimport PartitionsExtraControls from './views/Partitions/PartitionsExtraControls';\n\nconst views: Record<CONSUMER_MODE, {ExtraControls: ComponentType; View: ComponentType}> = {\n [CONSUMER_MODE.METRICS]: {ExtraControls: () => null, View: ConsumerMetrics},\n [CONSUMER_MODE.PARTITIONS]: {ExtraControls: PartitionsExtraControls, View: Partitions},\n};\n\nconst emptyView: {ExtraControls: ComponentType; View: ComponentType} = {\n ExtraControls: () => null,\n View: () => null,\n};\n\nfunction useViewByMode(mode: CONSUMER_MODE): {ExtraControls: ComponentType; View: ComponentType} {\n return views[mode] || emptyView;\n}\n\nconst Consumer: React.VFC<PropsFromRedux> = ({\n loadConsumerStatus,\n owner,\n partitionCount,\n readDataWeightRate,\n readRowCountRate,\n consumerMode,\n statusError,\n}) => {\n useEffect(() => {\n loadConsumerStatus();\n }, []);\n\n const {ExtraControls, View} = useViewByMode(consumerMode);\n\n if (statusError) {\n return <ErrorBlock error={statusError} topMargin=\"none\" />;\n }\n\n return (\n <ErrorBoundary>\n <TargetQueue />\n <Meta\n owner={owner}\n partitionCount={partitionCount}\n readDataWeightRate={readDataWeightRate}\n readRowCountRate={readRowCountRate}\n />\n <WithStickyToolbar toolbar={<Toolbar extras={ExtraControls} />} content={<View />} />\n </ErrorBoundary>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n owner: getOwner(state),\n partitionCount: getPartitionCount(state),\n readDataWeightRate: getReadDataWeightRate(state),\n readRowCountRate: getReadRowCountRate(state),\n consumerMode: getConsumerMode(state),\n statusError: getStatusError(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadConsumerStatus,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Consumer);\n","import React from 'react';\n\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {getPath} from '../../../../../../store/selectors/navigation';\nimport {getTargetQueue} from '../../../../../../store/selectors/navigation/tabs/consumer';\nimport {useSelector} from 'react-redux';\nimport ErrorBoundary from '../../../../../../components/ErrorBoundary/ErrorBoundary';\nimport {NoContent} from '../../../../../../components/NoContent/NoContent';\nimport UIFactory from '../../../../../../UIFactory';\n\nexport default function ConsumerMetrics() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n const MetricsComponent = UIFactory.getComponentForConsumerMetrics()!;\n\n if (!MetricsComponent) {\n return <NoContent warning={'Metrics are not supported for the installation'} />;\n }\n\n if (!queue) {\n return (\n <NoContent\n hint={'Please select a queue'}\n warning={\"You don't have any selected queues\"}\n />\n );\n }\n\n return (\n <ErrorBoundary>\n <MetricsComponent {...{cluster, path, targetQueue: queue}} />{' '}\n </ErrorBoundary>\n );\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n CONSUMER_STATUS_LOAD_FAILURE,\n CONSUMER_STATUS_LOAD_REQUEST,\n CONSUMER_STATUS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {ConsumerStatusAction} from '../../../../../store/reducers/navigation/tabs/consumer/status';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {ConsumerFiltersAction} from '../../../../../store/reducers/navigation/tabs/consumer/filters';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport {\n getConsumerRegisteredQueues,\n getTargetQueue,\n} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport {changeConsumerFilters} from './filters';\n\ntype ConsumerThunkAction = ThunkAction<\n void,\n RootState,\n unknown,\n ConsumerStatusAction | ConsumerFiltersAction\n>;\n\nexport function loadConsumerStatus(): ConsumerThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: CONSUMER_STATUS_LOAD_REQUEST});\n return ytApiV3Id\n .get(\n YTApiId.queueConsumerStatus,\n prepareRequest('/@queue_consumer_status', {path, transaction}),\n )\n .then((data) => {\n if (data.error) {\n throw data.error;\n }\n dispatch({\n type: CONSUMER_STATUS_LOAD_SUCCESS,\n data,\n });\n\n const state2 = getState();\n const targetQueue = getTargetQueue(state2);\n const queues = getConsumerRegisteredQueues(state2);\n if (targetQueue && !queues?.find(({queue}) => targetQueue.queue === queue)) {\n dispatch(changeConsumerFilters({targetQueue: undefined}));\n }\n })\n .catch((error: Error) => {\n dispatch({\n type: CONSUMER_STATUS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../../common/hammer/format';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {isNull} from '../../../../../utils';\n\nimport './Meta.scss';\n\nconst block = cn('queue-meta');\n\ninterface Props {\n partitionCount?: number;\n family?: string;\n writeDataWeightRate?: TPerformanceCounters;\n writeRowCountRate?: TPerformanceCounters;\n}\n\nconst Meta: React.VFC<Props> = ({\n partitionCount,\n family,\n writeDataWeightRate,\n writeRowCountRate,\n}) => {\n return (\n <ErrorBoundary>\n <div className=\"elements-heading elements-heading_size_xs\">Meta</div>\n <MetaTable\n className={block()}\n items={[\n [\n {\n key: 'partition-count',\n label: 'Partition count',\n value: partitionCount,\n visible: !isNull(partitionCount),\n },\n {\n key: 'family',\n label: 'Family',\n value: family,\n visible: !isNull(family),\n },\n ],\n [\n {\n key: 'write-row-count-rate',\n label: 'Rows write rate',\n value: (\n <Multimeter\n {...writeRowCountRate}\n show=\"1m\"\n format={format.RowsPerSecond}\n />\n ),\n visible: !isNull(writeRowCountRate),\n },\n {\n key: 'write-data-weight-rate',\n label: 'Data weight write rate',\n value: (\n <Multimeter\n {...writeDataWeightRate}\n show=\"1m\"\n format={format.BytesPerSecond}\n />\n ),\n visible: !isNull(writeDataWeightRate),\n },\n ],\n ]}\n />\n </ErrorBoundary>\n );\n};\n\nexport default React.memo(Meta);\n","import type {ChangeEvent} from 'react';\n\nimport {\n QUEUE_CHANGE_PARTITIONS_COLUMNS,\n QUEUE_CHANGE_PERSISTED_STATE,\n QUEUE_MODE,\n QUEUE_RATE_MODE,\n} from '../../../../../constants/navigation/tabs/queue';\nimport type {\n QueueFiltersAction,\n QueuePartitionsColumns,\n} from '../../../../../store/reducers/navigation/tabs/queue/filters';\nimport {PartitionColumn} from '../../../../reducers/navigation/tabs/consumer/filters';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\n\nexport function changeQueueMode(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueMode: evt.target.value as QUEUE_MODE},\n };\n}\n\nexport function changeQueuePartitionIndex(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queuePartitionIndex: value},\n };\n}\n\nexport function changeQueueTabletCellHost(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTabletCellHost: value},\n };\n}\n\nexport function changeQueueTabletCellId(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTabletCellId: value},\n };\n}\n\nexport function changeQueueConsumerName(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueConsumerName: value},\n };\n}\n\nexport function changeQueueOwner(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueOwner: value},\n };\n}\n\nexport function changeQueueRateMode(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueRateMode: evt.target.value as QUEUE_RATE_MODE},\n };\n}\n\nexport function changeQueueTimeWindow(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTimeWindow: evt.target.value as keyof TPerformanceCounters},\n };\n}\n\ninterface CompactColumnSelectorPayload {\n items: Array<PartitionColumn<QueuePartitionsColumns>>;\n}\nexport function changeQueuePartitionsColumns({\n items,\n}: CompactColumnSelectorPayload): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PARTITIONS_COLUMNS,\n data: {partitionsColumns: items},\n };\n}\n","import React, {ComponentType} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_MODE} from '../../../../../constants/navigation/tabs/queue';\nimport {changeQueueMode} from '../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getQueueMode} from '../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Toolbar.scss';\n\nconst block = cn('queue-toolbar');\n\ninterface Props extends PropsFromRedux {\n extras: ComponentType;\n}\n\nconst tabItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_MODE.METRICS,\n text: 'Metrics',\n },\n {\n value: QUEUE_MODE.PARTITIONS,\n text: 'Partitions',\n },\n {\n value: QUEUE_MODE.CONSUMERS,\n text: 'Consumers',\n },\n];\n\nconst Toolbar: React.VFC<Props> = ({extras: Extras, queueMode, changeQueueMode}) => {\n return (\n <div className={block()}>\n <RadioButton value={queueMode} onChange={changeQueueMode} items={tabItems} />\n <Extras />\n </div>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queueMode: getQueueMode(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueueMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Toolbar);\n","import React from 'react';\n\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {getPath} from '../../../../../../store/selectors/navigation';\nimport {useSelector} from 'react-redux';\nimport ErrorBoundary from '../../../../../../components/ErrorBoundary/ErrorBoundary';\nimport UIFactory from '../../../../../../UIFactory';\n\nexport default function QueueMetrics() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n\n const MetricsComponent = UIFactory.getComonentForQueueMetrics()!;\n\n return (\n <ErrorBoundary>\n <MetricsComponent {...{cluster, path}} />\n </ErrorBoundary>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n bool,\n error,\n multimeter,\n ypath,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedConsumer,\n getConsumers,\n getQueueRateMode,\n getQueueTimeWindow,\n getStatusLoaded,\n getStatusLoading,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Consumers.scss';\n\nconst block = cn('queue-consumers');\n\nconst readRateName: Record<QUEUE_RATE_MODE, string> = {\n [QUEUE_RATE_MODE.ROWS]: 'Read rate',\n [QUEUE_RATE_MODE.DATA_WEIGHT]: 'Read rate',\n};\nconst readRateGetter: Record<QUEUE_RATE_MODE, (row: SelectedConsumer) => TPerformanceCounters> = {\n [QUEUE_RATE_MODE.ROWS]: (x) => x.read_row_count_rate,\n [QUEUE_RATE_MODE.DATA_WEIGHT]: (x) => x.read_data_weight_rate,\n};\n\nconst getColumns = createSelector(\n [getQueueRateMode, getQueueTimeWindow],\n (rateMode, timeWindow): Array<Column<SelectedConsumer>> => [\n ypath<SelectedConsumer>('Consumer', (x) => x.consumer),\n error<SelectedConsumer>('Error', (x) => x.error),\n multimeter<SelectedConsumer>(\n readRateName[rateMode],\n readRateGetter[rateMode],\n timeWindow,\n rateMode === QUEUE_RATE_MODE.ROWS ? format.RowsPerSecond : format.BytesPerSecond,\n ),\n bool<SelectedConsumer>('Vital', (x) => x.vital),\n ],\n);\n\nconst settings: Settings = {displayIndices: false};\n\nexport default function Consumers() {\n const columns = useSelector(getColumns);\n const consumers = useSelector(getConsumers);\n const consumersLoading = useSelector(getStatusLoading);\n const consumersLoaded = useSelector(getStatusLoaded);\n\n return (\n <DataTableYT\n className={block('table-row')}\n columns={columns}\n data={consumers}\n loading={consumersLoading}\n loaded={consumersLoaded}\n useThemeYT\n settings={settings}\n />\n );\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport Filter from '../../../../../../components/Filter/Filter';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n changeQueueConsumerName,\n changeQueueOwner,\n changeQueueRateMode,\n changeQueueTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport {\n getQueueConsumerName,\n getQueueOwner,\n getQueueRateMode,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './ConsumersExtraControls.scss';\n\nconst block = cn('queue-consumers');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: QUEUE_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nconst ConsumersExtraControls: React.VFC<Props> = ({\n queueConsumerName,\n queueRateMode,\n changeQueueConsumerName,\n changeQueueRateMode,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={queueConsumerName}\n onChange={changeQueueConsumerName}\n placeholder=\"Consumer name...\"\n />\n <RadioButton value={queueRateMode} onChange={changeQueueRateMode} items={rateItems} />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queueConsumerName: getQueueConsumerName(state),\n queueOwner: getQueueOwner(state),\n queueRateMode: getQueueRateMode(state),\n queueTimeWindow: getQueueTimeWindow(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueueConsumerName,\n changeQueueOwner,\n changeQueueRateMode,\n changeQueueTimeWindow,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(ConsumersExtraControls);\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../../components/Block/Block';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n datetime,\n error,\n host,\n multimeter,\n number,\n string,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport {loadQueuePartitions} from '../../../../../../store/actions/navigation/tabs/queue/partitions';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedPartition,\n getPartitions,\n getPartitionsError,\n getPartitionsLoaded,\n getPartitionsLoading,\n getQueuePartitionsColumns,\n getQueueRateMode,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Partitions.scss';\n\nconst block = cn('queue-partitions');\n\nconst writeRateName: Record<QUEUE_RATE_MODE, string> = {\n [QUEUE_RATE_MODE.ROWS]: 'Write rate',\n [QUEUE_RATE_MODE.DATA_WEIGHT]: 'Write rate',\n};\n\nconst writeRateGetter: Record<QUEUE_RATE_MODE, (row: SelectedPartition) => TPerformanceCounters> = {\n [QUEUE_RATE_MODE.ROWS]: (x) => x.write_row_count_rate,\n [QUEUE_RATE_MODE.DATA_WEIGHT]: (x) => x.write_data_weight_rate,\n};\n\nconst getColumns = createSelector(\n [getQueueRateMode, getQueueTimeWindow, getQueuePartitionsColumns],\n (rateMode, timeWindow, columns): Array<Column<SelectedPartition>> => {\n return columns\n .filter((column) => column.checked)\n .map(({name, caption}) => {\n if (name === 'error') {\n return error<SelectedPartition>(caption, (x) => x[name], block('error'));\n } else if (name === 'host') {\n return host<SelectedPartition>(\n caption,\n (x) => x.meta?.host,\n block('hover-action'),\n );\n } else if (name === 'cell_id') {\n return string<SelectedPartition>(caption, (x) => x.meta?.cell_id);\n } else if (name === 'write_rate') {\n return multimeter<SelectedPartition>(\n writeRateName[rateMode],\n writeRateGetter[rateMode],\n timeWindow,\n rateMode === QUEUE_RATE_MODE.ROWS\n ? format.RowsPerSecond\n : format.BytesPerSecond,\n );\n } else if (name === 'last_row_commit_time') {\n return datetime<SelectedPartition>(caption, (x) => x[name]);\n } else {\n return number<SelectedPartition>(caption, (x) => x[name]);\n }\n });\n },\n);\n\nconst settings: Settings = {displayIndices: false};\n\nconst Partitions: React.VFC<PropsFromRedux> = ({\n loadQueuePartitions,\n columns,\n partitions,\n partitionsError,\n partitionsLoading,\n partitionsLoaded,\n}) => {\n useEffect(() => {\n loadQueuePartitions();\n }, []);\n\n if (partitionsError) {\n return <ErrorBlock error={partitionsError} topMargin=\"half\" />;\n }\n\n return (\n <DataTableYT\n className={block()}\n columns={columns}\n data={partitions}\n loading={partitionsLoading}\n loaded={partitionsLoaded}\n useThemeYT\n settings={settings}\n />\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n columns: getColumns(state),\n partitions: getPartitions(state),\n partitionsError: getPartitionsError(state),\n partitionsLoading: getPartitionsLoading(state),\n partitionsLoaded: getPartitionsLoaded(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadQueuePartitions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Partitions);\n","import type {ThunkAction} from 'redux-thunk';\nimport {\n QUEUE_PARTITIONS_LOAD_FAILURE,\n QUEUE_PARTITIONS_LOAD_REQUEST,\n QUEUE_PARTITIONS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/queue';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {QueuePartitionsAction} from '../../../../../store/reducers/navigation/tabs/queue/partitions';\nimport type {YtQueuePartition} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype QueueThunkAction = ThunkAction<void, RootState, unknown, QueuePartitionsAction>;\n\nexport function loadQueuePartitions(): QueueThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: QUEUE_PARTITIONS_LOAD_REQUEST});\n\n return ytApiV3Id\n .get(YTApiId.queuePartitions, prepareRequest('/@queue_partitions', {path, transaction}))\n .then(async (data: YtQueuePartition[]) => {\n dispatch({\n type: QUEUE_PARTITIONS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: QUEUE_PARTITIONS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {\n CompactColumnSelector,\n timeItems,\n} from '../../../Consumer/views/Partitions/PartitionsExtraControls';\nimport Filter from '../../../../../../components/Filter/Filter';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n changeQueuePartitionIndex,\n changeQueuePartitionsColumns,\n changeQueueRateMode,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport {\n getQueuePartitionIndex,\n getQueuePartitionsColumns,\n getQueueRateMode,\n getQueueTabletCellHost,\n getQueueTabletCellId,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './PartitionsExtraControls.scss';\n\nconst block = cn('queue-partitions');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: QUEUE_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nconst PartitionsExtraControls: React.VFC<Props> = ({\n queuePartitionIndex,\n queueTabletCellHost,\n queueTabletCellId,\n queueRateMode,\n queueTimeWindow,\n queuePartitionsColumns,\n changeQueuePartitionIndex,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueRateMode,\n changeQueueTimeWindow,\n changeQueuePartitionsColumns,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={queuePartitionIndex}\n onChange={changeQueuePartitionIndex}\n placeholder=\"Partition index...\"\n />\n <Filter\n className={block('filter')}\n value={queueTabletCellHost}\n onChange={changeQueueTabletCellHost}\n placeholder=\"Tablet cell host...\"\n />\n <Filter\n className={block('filter')}\n value={queueTabletCellId}\n onChange={changeQueueTabletCellId}\n placeholder=\"Tablet cell ID...\"\n />\n <div className={block('divider')} />\n <RadioButton value={queueRateMode} onChange={changeQueueRateMode} items={rateItems} />\n <RadioButton\n value={queueTimeWindow}\n onChange={changeQueueTimeWindow}\n items={timeItems}\n />\n <CompactColumnSelector\n items={queuePartitionsColumns}\n onChange={changeQueuePartitionsColumns}\n />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queuePartitionIndex: getQueuePartitionIndex(state),\n queueTabletCellHost: getQueueTabletCellHost(state),\n queueTabletCellId: getQueueTabletCellId(state),\n queueRateMode: getQueueRateMode(state),\n queueTimeWindow: getQueueTimeWindow(state),\n queuePartitionsColumns: getQueuePartitionsColumns(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueuePartitionIndex,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueRateMode,\n changeQueueTimeWindow,\n changeQueuePartitionsColumns,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(PartitionsExtraControls);\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport {Alerts} from '../../../../components/Alerts/Alerts';\nimport ErrorBlock from '../../../../components/Block/Block';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {QUEUE_MODE} from '../../../../constants/navigation/tabs/queue';\nimport {loadQueueStatus} from '../../../../store/actions/navigation/tabs/queue/status';\nimport type {RootState} from '../../../../store/reducers';\nimport {\n getFamily,\n getPartitionCount,\n getQueueMode,\n getQueueStatusDataAlerts,\n getStatusError,\n getWriteDataWeightRate,\n getWriteRowCountRate,\n} from '../../../../store/selectors/navigation/tabs/queue';\n\nimport Meta from './Meta/Meta';\nimport Toolbar from './Toolbar/Toolbar';\nimport QueueMetrics from './views/QueueMetrics/QueueMetrics';\nimport Consumers from './views/Consumers/Consumers';\nimport ConsumersExtraControls from './views/Consumers/ConsumersExtraControls';\nimport Partitions from './views/Partitions/Partitions';\nimport PartitionsExtraControls from './views/Partitions/PartitionsExtraControls';\nimport UIFactory from '../../../../UIFactory';\n\nconst emptyView = {ExtraControls: () => null, View: () => null};\n\nconst views: Record<QUEUE_MODE, {ExtraControls: ComponentType; View: ComponentType}> = {\n [QUEUE_MODE.METRICS]: {ExtraControls: () => null, View: () => null},\n [QUEUE_MODE.PARTITIONS]: {ExtraControls: PartitionsExtraControls, View: Partitions},\n [QUEUE_MODE.CONSUMERS]: {ExtraControls: ConsumersExtraControls, View: Consumers},\n};\n\nfunction useViewByMode(mode: QUEUE_MODE) {\n const component = UIFactory.getComonentForQueueMetrics();\n if (component && mode === QUEUE_MODE.METRICS) {\n return {ExtraControls: () => null, View: QueueMetrics};\n }\n\n return views[mode] || emptyView;\n}\n\nconst Queue: React.VFC<PropsFromRedux> = ({\n loadQueueStatus,\n family,\n partitionCount,\n writeDataWeightRate,\n writeRowCountRate,\n queueMode,\n statusError,\n}) => {\n useEffect(() => {\n loadQueueStatus();\n }, []);\n\n const {ExtraControls, View} = useViewByMode(queueMode);\n\n const items = useSelector(getQueueStatusDataAlerts);\n\n if (statusError) {\n return <ErrorBlock error={statusError} topMargin=\"none\" />;\n }\n\n return (\n <ErrorBoundary>\n <Alerts items={items} />\n <Meta\n family={family}\n partitionCount={partitionCount}\n writeDataWeightRate={writeDataWeightRate}\n writeRowCountRate={writeRowCountRate}\n />\n <WithStickyToolbar toolbar={<Toolbar extras={ExtraControls} />} content={<View />} />\n </ErrorBoundary>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n family: getFamily(state),\n partitionCount: getPartitionCount(state),\n writeDataWeightRate: getWriteDataWeightRate(state),\n writeRowCountRate: getWriteRowCountRate(state),\n queueMode: getQueueMode(state),\n statusError: getStatusError(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadQueueStatus,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Queue);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n QUEUE_STATUS_LOAD_FAILURE,\n QUEUE_STATUS_LOAD_REQUEST,\n QUEUE_STATUS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/queue';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {QueueStatusAction} from '../../../../../store/reducers/navigation/tabs/queue/status';\nimport type {YtQueueStatus} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype QueueThunkAction = ThunkAction<void, RootState, unknown, QueueStatusAction>;\n\nexport function loadQueueStatus(): QueueThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: QUEUE_STATUS_LOAD_REQUEST});\n return ytApiV3Id\n .get(YTApiId.queueStatus, prepareRequest('/@queue_status', {path, transaction}))\n .then((data: YtQueueStatus) => {\n if (data.error) {\n throw data.error;\n }\n dispatch({\n type: QUEUE_STATUS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: QUEUE_STATUS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport map_ from 'lodash/map';\nimport slice_ from 'lodash/slice';\n\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {\n GET_LOCKS,\n IS_PARTIAL,\n MAX_TRANSACTIONS_REQUESTS,\n} from '../../../../constants/navigation/tabs/locks';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {splitBatchResults} from '../../../../utils/utils';\n\nconst requests = new CancelHelper();\n\nfunction prepareData(locks, transactions = []) {\n return map_(locks, (lock, index) => {\n const item = {...lock};\n item.transaction = transactions[index] || {};\n item.transaction.id = item.transaction_id;\n item.index = index;\n\n return item;\n });\n}\n\nfunction getTransactions(rowLocks) {\n return (dispatch) => {\n const requests = map_(slice_(rowLocks, 0, MAX_TRANSACTIONS_REQUESTS), (lock) => {\n return {\n command: 'get',\n parameters: {\n path: '//sys/transactions/' + lock.transaction_id + '/@',\n attributes: ['title', 'start_time', 'operation_id'],\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTransactions, {requests})\n .then((data) => {\n const {error, results: transactions} = splitBatchResults(\n data,\n 'Failed to get transactions',\n );\n if (error) {\n return Promise.reject(error);\n }\n\n const locks = prepareData(rowLocks, transactions);\n const isPartial = locks.length > MAX_TRANSACTIONS_REQUESTS;\n\n dispatch({\n type: IS_PARTIAL,\n data: {isPartial},\n });\n\n dispatch({\n type: GET_LOCKS.SUCCESS,\n data: {locks},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_LOCKS.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function getLocks() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_LOCKS.REQUEST});\n requests.removeAllRequests();\n\n ytApiV3Id\n .get(YTApiId.navigationLocks, {\n parameters: prepareRequest('/@locks', {path, transaction}),\n cancellation: requests.saveCancelToken,\n })\n .then((locks) => dispatch(getTransactions(locks)))\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_LOCKS.CANCELLED});\n } else {\n dispatch({\n type: GET_LOCKS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_LOCKS.CANCELLED});\n };\n}\n\nexport function setLocksModeFilter(modeFilter) {\n return {type: GET_LOCKS.PARTITION, data: {modeFilter}};\n}\n","import find_ from 'lodash/find';\n\nimport {rumLogError} from '../rum/rum-counter';\nimport YT from '../config/yt-config';\n\nconst {clusters} = YT;\n\nexport function findClusterConfigByOperationId(operationId: string) {\n try {\n const cellTag = Number.parseInt(operationId?.split('-')[2], 16) >> 16; // eslint-disable-line no-bitwise\n return find_(clusters, (clusterConfig) => clusterConfig.primaryMaster?.cellTag === cellTag);\n } catch (error) {\n rumLogError(\n {\n message: 'Cannot find cluster config for operation',\n additional: {\n operationId,\n },\n },\n error as any,\n );\n }\n return null;\n}\n","import filter_ from 'lodash/filter';\n\nimport {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nconst getLocks = (state: RootState) => state.navigation.tabs.locks.locks;\nconst getLocksLoading = (state: RootState) => state.navigation.tabs.locks.loading;\nconst getLocksLoaded = (state: RootState) => state.navigation.tabs.locks.loaded;\nconst getLocksError = (state: RootState) => state.navigation.tabs.locks.error;\nexport const getLocksModeFilter = (state: RootState) => state.navigation.tabs.locks.modeFilter;\n\nexport const getLocksLoadStatus = createSelector(\n [getLocksLoading, getLocksLoaded, getLocksError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getLocksFiltered = createSelector(\n [getLocksModeFilter, getLocks],\n (modeFilter, items) => {\n if (!modeFilter) {\n return items;\n }\n return filter_(items, ({mode}) => mode === modeFilter);\n },\n);\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport unipika from '../../../../common/thor/unipika';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {FormattedLink, FormattedText} from '../../../../components/formatters';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable, {TemplateTime} from '../../../../components/MetaTable/MetaTable';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {Loader} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\nimport {Linkify} from '../../../../components/Linkify/Linkify';\n\nimport {MAX_TRANSACTIONS_REQUESTS} from '../../../../constants/navigation/tabs/locks';\nimport {\n abortAndReset,\n getLocks,\n setLocksModeFilter,\n} from '../../../../store/actions/navigation/tabs/locks';\nimport {Page} from '../../../../constants/index';\nimport {findClusterConfigByOperationId} from '../../../../utils/clusters';\n\nimport {\n getLocksFiltered,\n getLocksLoadStatus,\n getLocksModeFilter,\n} from '../../../../store/selectors/navigation/tabs/locks';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport Yson from '../../../../components/Yson/Yson';\nimport CustomRadioButton from '../../../../components/RadioButton/RadioButton';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\n\nimport './Locks.scss';\n\nconst block = cn('navigation-locks');\nconst messageBlock = cn('elements-message');\n\nclass Locks extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n isPartial: PropTypes.bool.isRequired,\n locks: PropTypes.arrayOf(\n PropTypes.shape({\n child_key: PropTypes.string,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n mode: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n transaction_id: PropTypes.string.isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.string.isRequired,\n start_time: PropTypes.string,\n title: PropTypes.string,\n operation_id: PropTypes.string,\n }).isRequired,\n }),\n ).isRequired,\n\n getLocks: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n };\n\n static renderIndex({index}) {\n return <FormattedText text={index + 1} />;\n }\n\n static renderLock(item) {\n return (\n <MetaTable\n qa=\"lock-meta-table\"\n items={[\n {key: 'id', value: item.id, className: block('id')},\n {key: 'mode', value: item.mode},\n {key: 'state', value: item.state},\n {\n key: 'child_key',\n value: item.child_key,\n visible: Boolean(item.child_key),\n },\n {\n key: 'attribute_key',\n value: item.attribute_key,\n visible: Boolean(item.attribute_key),\n },\n ]}\n />\n );\n }\n\n componentDidMount() {\n this.props.getLocks();\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n tableSettings = {\n theme: 'light',\n itemHeight: 100,\n columns: {\n items: {\n index: {\n sort: false,\n caption: '#',\n align: 'center',\n },\n lock: {\n sort: false,\n align: 'left',\n },\n transaction: {\n sort: false,\n align: 'left',\n },\n },\n sets: {\n default: {\n items: ['index', 'lock', 'transaction'],\n },\n },\n mode: 'default',\n },\n computeKey(item) {\n return item.id;\n },\n };\n\n renderTransaction = ({transaction}) => {\n const operationId = transaction.operation_id;\n const {id: clusterId} = findClusterConfigByOperationId(operationId) || {};\n if (operationId && !clusterId) {\n console.error(new Error(`Cannot find cluster by operation id ${operationId}`));\n }\n const operationIdUrl = `/${clusterId}/operations/${operationId}`;\n\n const title = unipika.decode(String(transaction.title));\n\n return (\n <MetaTable\n items={[\n {\n key: 'id',\n value: (\n <FormattedLink\n text={transaction.id}\n state={{\n page: Page.NAVIGATION,\n path: '//sys/transactions/' + transaction.id,\n }}\n />\n ),\n className: block('id'),\n },\n {\n key: 'title',\n value: (\n <Tooltip\n content={<Yson value={transaction.title} />}\n to={['top-center', 'bottom-center']}\n >\n <div className={block('title-tooltip')}>\n <div className={block('title', 'unipika')}>\n <Linkify className={'string'} text={title} />\n </div>\n </div>\n </Tooltip>\n ),\n visible: Boolean(transaction.title),\n },\n {\n key: 'start_time',\n value: (\n <TemplateTime time={transaction.start_time} valueFormat=\"DateTime\" />\n ),\n visible: Boolean(transaction.start_time),\n className: block('start-time'),\n },\n {\n key: 'operation_id',\n value: <Link url={operationIdUrl}>{operationId}</Link>,\n visible: Boolean(operationId) || Boolean(clusterId),\n },\n ]}\n />\n );\n };\n\n get templates() {\n return {\n index: Locks.renderIndex,\n lock: Locks.renderLock,\n transaction: this.renderTransaction,\n };\n }\n\n renderMessage() {\n return (\n <div className={messageBlock({theme: 'info'})}>\n <p className=\"elements-message__paragraph\">\n Transaction information was only loaded for first {MAX_TRANSACTIONS_REQUESTS}{' '}\n locks.\n </p>\n </div>\n );\n }\n\n onModeFilter = (e) => {\n const mode = e.target.value;\n this.props.setLocksModeFilter(mode);\n };\n\n renderModeFilter() {\n const {modeFilter} = this.props;\n return (\n <Toolbar\n className={block('toolbar')}\n itemsToWrap={[\n {\n name: 'buttons',\n node: (\n <CustomRadioButton\n qa=\"locks-type-filter\"\n onChange={this.onModeFilter}\n value={modeFilter}\n items={[\n {\n text: 'All',\n value: '',\n },\n {\n text: 'Exclusive',\n value: 'exclusive',\n },\n {\n text: 'Shared',\n value: 'shared',\n },\n {\n text: 'Snapshot',\n value: 'snapshot',\n },\n ]}\n />\n ),\n },\n ]}\n />\n );\n }\n\n renderContent() {\n const {isPartial, locks} = this.props;\n const toolbar = this.renderModeFilter();\n\n return (\n <WithStickyToolbar\n toolbar={toolbar}\n content={\n <Fragment>\n {isPartial && this.renderMessage()}\n <ElementsTable\n {...this.tableSettings}\n templates={this.templates}\n items={locks}\n css={block()}\n />\n </Fragment>\n }\n />\n );\n }\n\n render() {\n const {loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...this.props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? <Loader /> : this.renderContent()}\n </div>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, isPartial} = state.navigation.tabs.locks;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n modeFilter: getLocksModeFilter(state),\n locks: getLocksFiltered(state),\n isPartial,\n };\n};\nconst mapDispatchToProps = {\n getLocks,\n abortAndReset,\n setLocksModeFilter,\n};\n\nconst LocksConnected = connect(mapStateToProps, mapDispatchToProps)(Locks);\n\nexport default function LocksWithRum() {\n const loadState = useSelector(getLocksLoadStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_LOCKS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_LOCKS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <LocksConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Icon from '../Icon/Icon';\nimport {Button} from '@gravity-ui/uikit';\n\nimport './ErrorIcon.scss';\nimport {showErrorPopup} from '../../utils/utils';\n\nconst b = cn('yt-error-icon');\n\ninterface Props {\n className?: string;\n error?: any;\n}\n\nexport default function ErrorIcon(props: Props) {\n const {className, error} = props;\n return (\n <span className={b(null, className)}>\n <Button view=\"flat\" size=\"s\" pin=\"circle-circle\" onClick={() => showErrorPopup(error)}>\n <Icon className={b('icon')} awesome=\"exclamation-circle\" />\n </Button>\n </span>\n );\n}\n","import React, {useState} from 'react';\nimport {Text} from '@gravity-ui/uikit';\nimport Button from '../Button/Button';\nimport Icon from '../Icon/Icon';\nimport Modal from '../Modal/Modal';\nimport cn from 'bem-cn-lite';\n\nimport {useMarkdown} from '../Markdown/Markdown';\nimport './MarkdownLinePreview.scss';\n\nconst block = cn('one-line-text-preview');\nconst mdBlock = cn('yt-markdown');\n\ninterface Props {\n text: string;\n title: string;\n className?: string;\n allowHTML?: boolean;\n}\n\nexport function MarkdownLinePreview({text, title, className, allowHTML = false}: Props) {\n const [visible, setVisible] = useState(false);\n\n const showModal = () => {\n setVisible(true);\n };\n\n const hideModal = () => {\n setVisible(false);\n };\n\n const {result} = useMarkdown({text, allowHTML});\n\n const {plainText, html} = React.useMemo(() => {\n const {html} = result ?? {};\n const div = document.createElement('div');\n div.innerHTML = html ?? '';\n const plainText = div.innerText;\n return {html, plainText};\n }, [result]);\n\n return (\n <div className={block(null, className)}>\n <Text className={block('preview-text')} color={'primary'} ellipsis>\n {plainText}\n </Text>\n <Button onClick={showModal} view={'flat-secondary'} size={'m'} width={'auto'}>\n <Icon awesome=\"window-maximize\"></Icon>\n </Button>\n {visible ? (\n <Modal\n visible={visible}\n title={title}\n onOutsideClick={hideModal}\n onCancel={hideModal}\n footer={false}\n content={\n <div\n className={mdBlock(null, 'yfm')}\n dangerouslySetInnerHTML={{__html: html ?? ''}}\n />\n }\n />\n ) : null}\n </div>\n );\n}\n","import React from 'react';\nimport {Popover, Text} from '@gravity-ui/uikit';\nimport Icon from '../../../../../components/Icon/Icon';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {MarkdownLinePreview} from '../../../../../components/MarkdownLinePreview/MarkdownLinePreview';\nimport cn from 'bem-cn-lite';\n\nimport './ExternalDescription.scss';\n\nconst block = cn('external-description');\n\nexport interface ExternalSchemaDescription {\n name: string;\n type: string;\n glossaryEntity: {\n description: string;\n title: string;\n };\n}\n\ninterface Props {\n type: string;\n data: ExternalSchemaDescription;\n column: keyof ExternalSchemaDescription['glossaryEntity'];\n}\n\nexport function ExternalDescription({type, data, column}: Props) {\n const hasWarning = type !== data.type;\n const {[column]: markdown} = data.glossaryEntity ?? {};\n\n const typeMismatchElement = (\n <>\n <Text color={'warning'}>\n <Icon awesome=\"exclamation-triangle\" face=\"solid\" />\n There might be a type mismatch\n </Text>\n <MetaTable\n className={block('meta')}\n items={[\n {\n key: 'type',\n value: type,\n },\n {\n key: 'external type',\n value: data.type,\n },\n ]}\n />\n </>\n );\n return (\n <div className={block()}>\n {hasWarning ? (\n <Popover\n className={block('warning')}\n content={typeMismatchElement}\n placement={'left'}\n disabled={!hasWarning}\n >\n <Icon className={block('icon')} awesome=\"exclamation-triangle\" face=\"solid\" />\n </Popover>\n ) : null}\n {markdown ? (\n <MarkdownLinePreview\n className={block('preview')}\n text={markdown}\n title={data.name}\n allowHTML={true}\n />\n ) : (\n <Text className={block('preview')} color={'hint'} ellipsis>\n {'no description'}\n </Text>\n )}\n </div>\n );\n}\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport omit_ from 'lodash/omit';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport HelpLink from '../../../../components/HelpLink/HelpLink';\nimport Link from '../../../../components/Link/Link';\nimport {FormattedText} from '../../../../components/formatters';\nimport Filter from '../../../../components/Filter/Filter';\nimport Icon from '../../../../components/Icon/Icon';\nimport ErrorIcon from '../../../../components/ErrorIcon/ErrorIcon';\nimport SchemaDataType from '../../../../components/SchemaDataType/SchemaDataType';\nimport UIFactory from '../../../../UIFactory';\nimport {\n ExternalDescription,\n ExternalSchemaDescription,\n} from './ExternalDescription/ExternalDescription';\n\nimport {\n getComputedColumns,\n getFilteredSchema,\n getSchema,\n getSchemaMeta,\n} from '../../../../store/selectors/navigation/tabs/schema';\nimport {updateSchemaFilter} from '../../../../store/actions/navigation/tabs/schema';\nimport {getCluster} from '../../../../store/selectors/global';\nimport hammer from '../../../../common/hammer';\n\nimport './Schema.scss';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {getAttributesPath, getLoadState} from '../../../../store/selectors/navigation';\nimport {isFinalLoadingStatus, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {docsUrl} from '../../../../config';\nimport {YTError} from '../../../../../@types/types';\nimport {RootState} from '../../../../store/reducers';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst block = cn('navigation-schema');\nconst elementsBlock = cn('elements-message');\n\nconst COLUMNS_TO_HIDE: Partial<Record<SchemaColumnNames, boolean>> = {\n required: true,\n type: true,\n};\n\nexport type SchemaColumnNames = keyof SchemaItem | 'description' | 'title';\n\nexport type SchemaProps = {\n cluster: string;\n column?: string;\n path: string;\n schema: Array<SchemaItem>;\n filteredSchema?: Array<SchemaItem>;\n meta: Array<SchemaMetaItem>;\n computedColumns: SchemaComputedColumns<SchemaColumnNames>;\n\n updateFilter: (filter: string) => void;\n};\n\ntype SchemaItem = {\n index: number;\n name: string;\n required: boolean;\n type: string;\n type_v3: unknown;\n};\n\ntype SchemaMetaItem = {\n value: 'strong' | boolean;\n key: 'schema_mode' | 'strict' | 'unique_keys' | string;\n};\n\ntype SchemaComputedColumns<ColumnName extends string = string> = {\n items: Partial<Record<ColumnName, ColumnInfo>>;\n set: Array<ColumnName>;\n};\n\ntype SchemaState = {\n externalSchema?: Map<string, ExternalSchemaDescription>;\n externalSchemaUrl?: string;\n externalSchemaError?: YTError;\n};\n\nclass Schema extends Component<SchemaProps> {\n state: SchemaState;\n\n constructor(props: SchemaProps) {\n super(props);\n this.state = {\n externalSchemaUrl: undefined,\n externalSchema: undefined,\n externalSchemaError: undefined,\n };\n }\n\n componentDidMount() {\n this.loadExternalSchemaData();\n }\n\n get templates() {\n return {\n __default__(\n item: SchemaItem,\n column: Exclude<keyof SchemaItem, 'type_v3' | 'name' | 'required'>,\n ) {\n return <FormattedText text={item[column]} />;\n },\n name(item: Record<string, string>, column: string) {\n const {sort_order} = item;\n return (\n <span>\n {Boolean(sort_order) && (\n <Icon\n className={block('sort-icon')}\n awesome={\n sort_order === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n <FormattedText text={item[column]} />\n </span>\n );\n },\n required(item: SchemaItem) {\n const {required} = item;\n return (\n <span>\n {typeof required === 'boolean' ? String(required) : hammer.format.NO_VALUE}\n </span>\n );\n },\n type_v3(item: SchemaItem) {\n const {type_v3} = item;\n return <SchemaDataType type_v3={type_v3} />;\n },\n description: (item: SchemaItem) => {\n return this.renderExternalColumn(item, 'description');\n },\n title: (item: SchemaItem) => {\n return this.renderExternalColumn(item, 'title');\n },\n };\n }\n\n renderExternalColumn(item: SchemaItem, column: 'description' | 'title') {\n const {externalSchema} = this.state;\n const {type, name} = item;\n const data = externalSchema?.get(name);\n return data ? <ExternalDescription type={type} data={data} column={column} /> : null;\n }\n\n get tableSettings() {\n const {externalSchema, externalSchemaUrl, externalSchemaError} = this.state;\n const {items, set} = this.props.computedColumns;\n\n const preparedSet = set.filter((col) => !COLUMNS_TO_HIDE[col]);\n\n const preparedItems = omit_(items, 'type_v2');\n\n if (externalSchema) {\n (['title', 'description'] as const).forEach((column) => {\n const {columns} = UIFactory.externalSchemaDescriptionSetup;\n const caption = columns?.[column] ?? `External ${column}`;\n preparedItems[column] = {\n caption,\n sort: false,\n align: 'left',\n renderHeader: () => (\n <div className={block('description')}>\n <div className={block('table-item')}>{caption}</div>\n {externalSchemaUrl ? (\n <Link className={block('icon')} url={externalSchemaUrl}>\n <Icon awesome=\"external-link\" />\n </Link>\n ) : null}\n {externalSchemaError ? (\n <ErrorIcon className={block('icon')} error={externalSchemaError} />\n ) : null}\n </div>\n ),\n };\n preparedSet.push(column);\n });\n }\n\n return {\n templates: this.templates,\n columns: {\n items: preparedItems,\n sets: {\n default: {\n items: preparedSet,\n },\n },\n mode: 'default',\n },\n virtualType: 'simple',\n theme: 'light',\n striped: false,\n computeKey(item: SchemaItem) {\n return item.name;\n },\n };\n }\n\n async loadExternalSchemaData() {\n const {cluster, path} = this.props;\n const truePath = await wrapApiPromiseByToaster(\n ytApiV3.get({\n parameters: {\n path: `${path}/@path`,\n },\n }),\n {\n skipSuccessToast: true,\n toasterName: 'get_true_path',\n errorTitle: 'Failed to load true path',\n },\n );\n\n try {\n const {url, externalSchema} = await UIFactory.externalSchemaDescriptionSetup.load(\n cluster,\n truePath || path,\n );\n\n this.setState({\n externalSchemaUrl: url,\n externalSchema: externalSchema,\n });\n } catch (err) {\n this.setState({\n externalSchema: new Map(),\n externalSchemaError: err,\n });\n }\n }\n\n renderContent() {\n const {column, filteredSchema, updateFilter} = this.props;\n return (\n <Fragment>\n <Filter\n placeholder=\"Filter by name...\"\n className={block('filter')}\n onChange={updateFilter}\n value={column ?? ''}\n size=\"m\"\n />\n\n <ElementsTable {...this.tableSettings} items={filteredSchema} css={block()} />\n </Fragment>\n );\n }\n\n renderPlaceholder() {\n return (\n <div className={elementsBlock({theme: 'warning'})}>\n <p className={elementsBlock('paragraph')}>Schema is empty.</p>\n </div>\n );\n }\n\n render() {\n const {meta, schema} = this.props;\n\n return (\n <div className={block()}>\n {docsUrl(\n <div className={block('help')}>\n <HelpLink url={UIFactory.docsUrls['storage:static_schema']} />\n </div>,\n )}\n\n <MetaTable items={meta} />\n\n {schema?.length > 0 ? this.renderContent() : this.renderPlaceholder()}\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {column} = state.navigation.tabs.schema;\n\n const cluster = getCluster(state);\n const path = getAttributesPath(state);\n const schema = getSchema(state);\n const meta = getSchemaMeta(state);\n const filteredSchema = getFilteredSchema(state);\n const computedColumns = getComputedColumns(state);\n\n return {column, meta, schema, filteredSchema, computedColumns, cluster, path};\n};\n\nconst mapDispatchToProps = {\n updateFilter: updateSchemaFilter,\n};\n\nconst SchemaConnected = connect(mapStateToProps, mapDispatchToProps)(Schema);\n\nexport default function SchemaWithRum() {\n const loadState = useSelector(getLoadState);\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_SCHEMA,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_SCHEMA,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n return <SchemaConnected />;\n}\n","import {SCHEMA_UPDATE_FILTER} from '../../../../constants/navigation/tabs/schema';\n\nexport function updateSchemaFilter(column) {\n return {\n type: SCHEMA_UPDATE_FILTER,\n data: {column},\n };\n}\n","import filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\n\nimport ypath from '../../../common/thor/ypath';\nimport hammer from '../../../common/hammer';\nimport {tableItems} from '../../../utils/navigation/tabs/tables';\n\nfunction prepareFlatColumns(columns, flatColumns = {}, prefix) {\n const correctPrefix = prefix ? prefix + '_' : '';\n\n forEach_(columns, (column, columnName) => {\n if (column.group) {\n prepareFlatColumns(column.items, flatColumns, columnName);\n } else {\n const flatColumnName = correctPrefix + columnName;\n flatColumns[flatColumnName] = column;\n }\n });\n\n return flatColumns;\n}\n\nexport function prepareDataForColumns(collection) {\n const preparedColumns = prepareFlatColumns(tableItems);\n\n return map_(collection, (item) => {\n return mapValues_(preparedColumns, (column) => {\n return typeof column.get === 'function' ? column.get(item) : undefined;\n });\n });\n}\n\nexport function prepareAggregation(preparedCollection) {\n let preparedColumns = map_(prepareFlatColumns(tableItems), (column, columnName) => ({\n name: columnName,\n type: column.overall,\n }));\n preparedColumns = filter_(preparedColumns, 'type');\n\n const aggregation = hammer.aggregation.prepare(preparedCollection, preparedColumns)[0];\n aggregation['index'] = 'aggregation';\n\n return aggregation;\n}\n\nexport function getStorePreloadValues(tablet) {\n return {\n completed: Number(ypath.getValue(tablet, '/statistics/preload_completed_store_count')),\n failed: Number(ypath.getValue(tablet, '/statistics/preload_failed_store_count')),\n pending: Number(ypath.getValue(tablet, '/statistics/preload_pending_store_count')),\n };\n}\n","import ypath from '../../../common/thor/ypath';\nimport {getStorePreloadValues} from '../../../utils/navigation/tabs/tablets';\nimport {DESC_ASC_UNORDERED} from '../../sort-helpers';\n\nexport const tableItems = {\n name_tablet_id: {\n caption: 'Node / Tablet id',\n sort(item) {\n return item.name;\n },\n },\n name_cell_id: {\n caption: 'Cell id / Tablet id',\n sort(item) {\n return item.name;\n },\n },\n index: {\n sort: true,\n caption: 'Tablet index',\n align: 'left',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/index'));\n },\n },\n tablet_id: {\n sort: true,\n align: 'left',\n get(tablet) {\n return ypath.getValue(tablet, '/tablet_id');\n },\n },\n cell_leader_address: {\n sort: true,\n align: 'left',\n caption: 'Node',\n get(item) {\n return ypath.getValue(item, '/cell_leader_address');\n },\n },\n state: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getValue(tablet, '/state');\n },\n },\n cell_id: {\n sort: true,\n align: 'left',\n get(tablet) {\n return ypath.getValue(tablet, '/cell_id');\n },\n },\n error_count: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getNumberDeprecated(tablet, '/error_count', NaN);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n overall: 'sum',\n },\n replication_error_count: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getNumberDeprecated(tablet, '/replication_error_count', NaN);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n overall: 'sum',\n },\n pivot_key: {\n sort: false,\n align: 'left',\n caption: 'Pivot Key',\n get(tablet) {\n return ypath.getValue(tablet, '/pivot_key');\n },\n },\n // Structure\n chunk_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/chunk_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n partition_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/partition_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n store_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/store_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n overlapping_store_count: {\n sort: true,\n align: 'right',\n overall: 'max',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/overlapping_store_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n store_preload: {\n align: 'center',\n sort(tablet) {\n const storePreload = getStorePreloadValues(tablet);\n const completed = storePreload.completed;\n const failed = storePreload.failed;\n const pending = storePreload.pending;\n const total = completed + failed + pending;\n\n return [total > 0 ? completed / total : 0, total > 0 ? failed / total : 0, total];\n },\n overall(aggregation, tablet, name) {\n const aggregatedStorePreload = (aggregation[name] = aggregation[name] || {\n completed: 0,\n failed: 0,\n pending: 0,\n });\n const currentStorePreload = tablet[name];\n\n aggregatedStorePreload.completed += currentStorePreload.completed;\n aggregatedStorePreload.failed += currentStorePreload.failed;\n aggregatedStorePreload.pending += currentStorePreload.pending;\n },\n get(tablet) {\n return getStorePreloadValues(tablet);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n // Data\n unmerged_row_count: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/unmerged_row_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n uncompressed_data_size: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/uncompressed_data_size'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n compressed_data_size: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/compressed_data_size'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n disk_space: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/disk_space'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n // Performance\n static_chunk: {\n group: true,\n items: {\n read: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/static_chunk_row_read_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n lookup: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(\n tablet,\n '/performance_counters/static_chunk_row_lookup_rate',\n ),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n },\n set: ['read', 'lookup'],\n },\n dynamic: {\n group: true,\n items: {\n read: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_read_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n lookup: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_lookup_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n write: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_write_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n delete: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_delete_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n },\n set: ['read', 'lookup', 'write', 'delete'],\n },\n unmerged_row_read_rate: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/performance_counters/unmerged_row_read_rate'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n merged_row_read_rate: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/performance_counters/merged_row_read_rate'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n actions: {\n align: 'right',\n caption: '',\n },\n};\n\nexport const histogramItems = {\n unmerged_row_count: {\n format: 'Number',\n },\n uncompressed_data_size: {\n dataName: 'bytes',\n format: 'Bytes',\n },\n compressed_data_size: {\n dataName: 'bytes',\n format: 'Bytes',\n },\n store_count: {\n format: 'Number',\n },\n partition_count: {\n format: 'Number',\n },\n chunk_count: {\n format: 'Number',\n },\n overlapping_store_count: {\n format: 'Number',\n },\n static_chunk_read: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['static_chunk'].items['read'].get(tablet);\n },\n },\n static_chunk_lookup: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['static_chunk'].items['lookup'].get(tablet);\n },\n },\n unmerged_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n },\n merged_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n },\n dynamic_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['read'].get(tablet);\n },\n },\n dynamic_row_lookup_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['lookup'].get(tablet);\n },\n },\n dynamic_row_write_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['write'].get(tablet);\n },\n },\n dynamic_row_delete_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['delete'].get(tablet);\n },\n },\n};\n","import mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\n\nimport hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {histogramItems, tableItems} from '../../../../utils/navigation/tabs/tables';\nimport {NAVIGATION_TABLETS_TABLE_ID} from '../../../../constants/navigation/tabs/tablets';\nimport {prepareAggregation, prepareDataForColumns} from '../../../../utils/navigation/tabs/tablets';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getTabletsMode = (state) => state.navigation.tabs.tablets.tabletsMode;\n\nconst getRawTablets = (state) => state.navigation.tabs.tablets.tablets;\n/** @returns { OldSortState } */\nexport const getTabletsSortState = (state) => state.tables[NAVIGATION_TABLETS_TABLE_ID];\nconst getTabletsFilter = (state) => state.navigation.tabs.tablets.tabletsFilter;\nexport const getActiveHistogram = (state) => state.navigation.tabs.tablets.histogramType;\n\nconst getSortedTablets = createSelector(\n [getRawTablets, getTabletsSortState],\n (rawTablets, sortState) => hammer.utils.sort(rawTablets, sortState, tableItems),\n);\n\nconst getFilteredTablets = createSelector(\n [getSortedTablets, getTabletsFilter],\n (sortedTablets, tabletsFilter) =>\n hammer.filter.filter({\n data: sortedTablets,\n input: tabletsFilter,\n factors: [\n function (item) {\n return tableItems['tablet_id'].get(item);\n },\n function (item) {\n return tableItems['cell_id'].get(item);\n },\n function (item) {\n return tableItems['state'].get(item);\n },\n function (item) {\n return tableItems['cell_leader_address'].get(item);\n },\n ],\n }),\n);\n\nexport const getPreparedDataForColumns = createSelector([getFilteredTablets], (items) => {\n /** @type {Array<TabletInfo>} */\n const res = prepareDataForColumns(items);\n return res;\n});\n\nexport const getTablets = createSelector(getPreparedDataForColumns, (filteredTablets) => {\n const aggregation = prepareAggregation(filteredTablets);\n return [aggregation, ...filteredTablets];\n});\n\nconst getHistograms = createSelector(getRawTablets, (tablets) => {\n return mapValues_(histogramItems, (histogramItem, key) => {\n const get = histogramItem.get || tableItems[key].get;\n\n return {\n ...histogramItem,\n data: map_(tablets, get),\n dataFormat: histogramItem.format,\n dataName: histogramItem.dataName || hammer.format['ReadableField'](key, {caps: 'none'}),\n };\n });\n});\n\nexport const getHistogram = createSelector(\n [getHistograms, getActiveHistogram],\n (histograms, activeHistogram) => histograms[activeHistogram],\n);\n\nexport const getNavigationTabletsLoadingStatus = createSelector(\n [\n (state) => state.navigation.tabs.tablets.loading,\n (state) => state.navigation.tabs.tablets.loaded,\n (state) => state.navigation.tabs.tablets.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport max_ from 'lodash/max';\nimport reduce_ from 'lodash/reduce';\nimport toArray_ from 'lodash/toArray';\n\nimport {createSelector} from 'reselect';\nimport {getPreparedDataForColumns, getTabletsMode, getTabletsSortState} from './tablets';\nimport {\n FieldDescr,\n TreeItem,\n TreeNode,\n flattenTree,\n sortTree,\n} from '../../../../common/hammer/tree-list';\nimport {OldSortState, TypedKeys} from '../../../../types';\nimport {RootState} from '../../../reducers';\n\nexport const getTabletsExpandedHosts = (state: RootState): Array<string> =>\n state.navigation.tabs.tablets.expandedHosts;\n\ninterface TabletInfo {\n name: string;\n level?: number;\n tablet_id: string;\n cell_id: string;\n cell_leader_address: string;\n unmerged_row_count: number;\n uncompressed_data_size: number;\n compressed_data_size: number;\n disk_space: number;\n childrenCount?: number;\n}\n\nconst SUM_FIELDS: Array<TypedKeys<TabletInfo, number>> = [\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n];\n\nfunction addHostItem(\n dst: TreeNode<TabletInfo, TabletInfo>,\n item: TabletInfo,\n maxDst: Pick<TabletInfo, TypedKeys<TabletInfo, number>>,\n) {\n dst.children.push({\n name: item.tablet_id,\n parent: dst.name,\n attributes: {\n ...item,\n name: item.tablet_id,\n level: 1,\n },\n leaves: [],\n children: [],\n });\n\n forEach_(SUM_FIELDS, (k) => {\n dst.attributes[k] += item[k];\n\n maxDst[k] = max_([maxDst[k], item[k]])!;\n });\n}\n\nexport const getTabletsMax = createSelector([getPreparedDataForColumns], (items) => {\n const max = {\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n };\n forEach_(items, (item) => {\n forEach_(SUM_FIELDS, (k) => {\n max[k] = max_([max[k], item[k]])!;\n });\n });\n return max;\n});\n\nconst getTabletsByNameRoot = createSelector(\n [getPreparedDataForColumns, getTabletsSortState, getTabletsMode],\n (sortedAndFilteredItems, sortState, mode) => {\n const groupByKey = mode === 'by_host' ? 'cell_leader_address' : 'cell_id';\n\n const maxDst = {\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n };\n const maxHost = {...maxDst};\n const mapByName: Record<string, TreeNode<TabletInfo, TabletInfo>> = {};\n forEach_(sortedAndFilteredItems, (item) => {\n const {[groupByKey]: groupBy, cell_leader_address, cell_id} = item;\n const dst = (mapByName[groupBy] = mapByName[groupBy] || {\n name: groupBy,\n children: [],\n leaves: [],\n attributes: {\n isTopLevel: true,\n name: groupBy,\n cell_leader_address,\n cell_id,\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n level: 0,\n },\n });\n addHostItem(dst, item, maxDst);\n });\n\n const root = {\n name: '',\n children: toArray_(mapByName),\n leaves: [],\n attributes: {} as any,\n };\n\n forEach_(root.children, (item) => {\n item.attributes.childrenCount = item.children.length;\n forEach_(SUM_FIELDS, (k) => {\n maxHost[k] = max_([maxHost[k], item.attributes[k]])!;\n });\n });\n\n sortTreeInPlace(root, sortState);\n return {\n maxByLevel: [maxHost, maxDst] as const,\n root,\n };\n },\n);\n\nexport const getTabletsByName = createSelector(\n [getTabletsByNameRoot, getTabletsExpandedHosts],\n ({root, maxByLevel}, expandedHosts) => {\n const expanded = new Set(expandedHosts);\n const children = map_(root.children, (item) => {\n const {name} = item;\n const isCollapsed = !expanded.has(name);\n return {\n ...item,\n attributes: {\n ...item.attributes,\n isCollapsed,\n },\n children: isCollapsed ? [] : item.children,\n };\n });\n\n return {\n maxByLevel,\n items: map_(flattenTree({...root, children}), 'attributes'),\n };\n },\n);\n\nfunction sortTreeInPlace(root: TreeNode<TabletInfo, TabletInfo>, sortState?: OldSortState) {\n if (!sortState?.field) {\n return;\n }\n\n sortTree(root, sortState, {\n name_tablet_id: {\n get(item) {\n return item.attributes.name;\n },\n },\n name_cell_id: {\n get(item) {\n return item.attributes.name;\n },\n },\n ...reduce_(\n Object.keys(root.children[0]?.attributes! || {}) as Array<keyof TabletInfo>,\n (acc, k) => {\n acc[k] = {\n get(item: TreeItem<TabletInfo, TabletInfo>) {\n return item.attributes[k];\n },\n };\n return acc;\n },\n {} as Record<string, FieldDescr<TabletInfo, TabletInfo>>,\n ),\n });\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants/index';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {\n CHANGE_ACTIVE_HISTOGRAM,\n CHANGE_TABLETS_MODE,\n GET_TABLETS,\n TABLETS_STATE_PARTIAL,\n TOGGLE_HISTOGRAM,\n} from '../../../../constants/navigation/tabs/tablets';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {getTabletsExpandedHosts} from '../../../../store/selectors/navigation/tabs/tablets-ts';\n\nconst requests = new CancelHelper();\n\nexport function loadTablets() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_TABLETS.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationTablets, {\n parameters: prepareRequest('/@tablets', {\n path,\n transaction,\n output_format: TYPED_OUTPUT_FORMAT,\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((tablets) => {\n dispatch({\n type: GET_TABLETS.SUCCESS,\n data: {tablets},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLETS.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLETS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function changeTabletsFilter(tabletsFilter) {\n return {\n type: TABLETS_STATE_PARTIAL,\n data: {tabletsFilter},\n };\n}\n\nexport function changeTabletsMode(evt) {\n return {\n type: CHANGE_TABLETS_MODE,\n data: {tabletsMode: evt.target.value},\n };\n}\n\nexport function toggleExpandedHost(name) {\n return (dispatch, getState) => {\n const expandedHosts = getTabletsExpandedHosts(getState()).slice();\n const index = expandedHosts.indexOf(name);\n if (index >= 0) {\n expandedHosts.splice(index, 1);\n } else {\n expandedHosts.push(name);\n }\n dispatch({type: TABLETS_STATE_PARTIAL, data: {expandedHosts}});\n };\n}\n\nexport function changeActiveHistogram(histogramType) {\n return {\n type: CHANGE_ACTIVE_HISTOGRAM,\n data: {histogramType},\n };\n}\n\nexport function toggleHistogram() {\n return {\n type: TOGGLE_HISTOGRAM,\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_TABLETS.CANCELLED});\n };\n}\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport RadioButton from '../../../../components/RadioButton/RadioButton';\nimport {Loader, Progress} from '@gravity-ui/uikit';\nimport Histogram from '../../../../components/Histogram/Histogram';\nimport Filter from '../../../../components/Filter/Filter';\nimport Label from '../../../../components/Label/Label';\nimport Link from '../../../../components/Link/Link';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {getPath, getType} from '../../../../store/selectors/navigation';\n\nimport {\n getActiveHistogram,\n getHistogram,\n getNavigationTabletsLoadingStatus,\n getTablets,\n} from '../../../../store/selectors/navigation/tabs/tablets';\n\nimport {NAVIGATION_TABLETS_TABLE_ID} from '../../../../constants/navigation/tabs/tablets';\nimport {HEADER_HEIGHT, Page} from '../../../../constants/index';\n\nimport {\n abortAndReset,\n changeActiveHistogram,\n changeTabletsFilter,\n changeTabletsMode,\n loadTablets,\n toggleExpandedHost,\n toggleHistogram,\n} from '../../../../store/actions/navigation/tabs/tablets';\n\nimport {histogramItems, tableItems} from '../../../../utils/navigation/tabs/tables';\nimport {asNumber} from '../../../../components/templates/utils';\nimport hammer from '../../../../common/hammer';\nimport ypath from '../../../../common/thor/ypath';\nimport unipika from '../../../../common/thor/unipika';\n\nimport {genTabletCellBundlesCellUrl} from '../../../../utils/tablet_cell_bundles';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {Host} from '../../../../containers/Host/Host';\nimport {\n getTabletsByName,\n getTabletsMax,\n} from '../../../../store/selectors/navigation/tabs/tablets-ts';\nimport {getProgressBarColorByIndex} from '../../../../constants/colors';\n\nimport './Tablets.scss';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../constants/global';\n\nconst block = cn('navigation-tablets');\n\nclass Tablets extends Component {\n static typedValueProps = PropTypes.shape({\n $type: PropTypes.string.isRequired,\n $value: PropTypes.string.isRequired,\n });\n\n static tabletProps = PropTypes.shape({\n index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n cell_id: PropTypes.string,\n error_count: PropTypes.number,\n last_commit_timestamp: PropTypes.number,\n replication_error_count: PropTypes.number,\n state: PropTypes.string,\n tablet_id: PropTypes.string,\n\n performance_counters: PropTypes.object,\n statistics: PropTypes.object,\n\n pivot_key: PropTypes.arrayOf(Tablets.typedValueProps),\n });\n\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n tabletsMode: PropTypes.string.isRequired,\n tabletsFilter: PropTypes.string.isRequired,\n activeHistogram: PropTypes.string.isRequired,\n histogramCollapsed: PropTypes.bool.isRequired,\n tablets: PropTypes.arrayOf(Tablets.tabletProps).isRequired,\n histogram: PropTypes.shape({\n data: PropTypes.array.isRequired,\n format: PropTypes.string.isRequired,\n dataName: PropTypes.string.isRequired,\n dataFormat: PropTypes.string.isRequired,\n }).isRequired,\n\n loadTablets: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n toggleHistogram: PropTypes.func.isRequired,\n changeTabletsMode: PropTypes.func.isRequired,\n changeTabletsFilter: PropTypes.func.isRequired,\n changeActiveHistogram: PropTypes.func.isRequired,\n };\n\n static prepareStorePreloadProgress(storePreload) {\n const completed = storePreload?.completed || 0;\n const failed = storePreload?.failed || 0;\n const pending = storePreload?.pending || 0;\n const total = completed + failed + pending;\n\n return {\n text: hammer.format['Number'](completed) + ' / ' + hammer.format['Number'](total),\n value: total > 0 ? ((failed + completed) / total) * 100 : 0,\n stack: [\n {\n value: total > 0 ? (completed / total) * 100 : 0,\n theme: 'info',\n },\n {\n value: total > 0 ? (failed / total) * 100 : 0,\n theme: 'danger',\n },\n ],\n };\n }\n\n static rowClassName(item) {\n const {level} = item;\n return block('row', {top: level === 0});\n }\n\n static renderName(item) {\n const {name, level, isCollapsed, cell_leader_address} = item;\n const content =\n level === 0 ? (\n <React.Fragment>\n <Button view={'flat-secondary'}>\n <Icon awesome={isCollapsed ? 'angle-down' : 'angle-up'} />\n </Button>{' '}\n {name === cell_leader_address\n ? Tablets.renderHost(item)\n : Tablets.renderCellId(item)}\n </React.Fragment>\n ) : (\n Tablets.renderTabletId(item)\n );\n\n return <div className={block('name', {level})}>{content}</div>;\n }\n\n static isTopLevel(item) {\n const {level, name, cell_leader_address, cell_id} = item;\n return level === 0 && (name === cell_leader_address || name === cell_id);\n }\n\n static renderIndex(item, columnName) {\n if (Tablets.isTopLevel(item) && item.childrenCount) {\n return `(total ${item.childrenCount})`;\n }\n if (Tablets)\n if (item.index === 'aggregation') {\n return hammer.format['ReadableField'](item.index);\n } else {\n return hammer.format['Number'](item[columnName]);\n }\n }\n\n static renderTabletId(item) {\n const id = item.tablet_id;\n const url = `${Page.TABLET}/${id}`;\n\n return Tablets.renderIdWithLink(id, url);\n }\n\n static renderCellId(item) {\n const id = item.cell_id;\n const url = genTabletCellBundlesCellUrl(id);\n\n return Tablets.renderIdWithLink(id, url);\n }\n\n static renderHost(item) {\n const host = item.cell_leader_address;\n return (\n <Host\n asTabletNode\n address={host}\n className={block('host')}\n copyBtnClassName={block('copy-btn')}\n />\n );\n }\n\n static renderIdWithLink(id, url) {\n return id ? (\n <div className={block('id-link')}>\n <Link url={url}>{id}</Link>\n <ClipboardButton className={block('copy-btn')} view={'flat-secondary'} text={id} />\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderState(item, columnName) {\n const state = item[columnName];\n const theme = {\n none: 'default',\n unmounted: 'default',\n mounted: 'info',\n frozen: 'info',\n freezing: 'warning',\n unfreezing: 'warning',\n mounting: 'warning',\n unmounting: 'warning',\n mixed: 'danger',\n }[state];\n\n return typeof state !== 'undefined' ? (\n <Label theme={theme} text={state} />\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderPivotKey(item, columnName) {\n const pivotKey = item[columnName];\n\n const text = unipika.prettyprint(pivotKey, {\n break: false,\n indent: 0,\n asHTML: false,\n });\n const title = text.split(',').join(',\\n');\n\n return typeof pivotKey !== 'undefined' ? (\n <div className=\"elements-column_with-hover-button unipika navigation-tablets__pivot-key\">\n [\n <span title={title} className=\"uint64 elements-ellipsis\">\n {text.slice(1, -1)}\n </span>\n ]\n <ClipboardButton\n text={text}\n view=\"flat-secondary\"\n size=\"s\"\n title=\"Copy Pivot Key\"\n />\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderActions(item) {\n if (item.index === 'aggregation' || Tablets.isTopLevel(item)) {\n return null;\n } else {\n const tablet = ypath.getValue(item, '/tablet_id');\n\n return (\n <ClickableAttributesButton\n title={item.tablet_id}\n path={`//sys/tablets/${tablet}`}\n withTooltip\n />\n );\n }\n }\n\n static renderStorePreload(item, columnName) {\n const storePreload = item[columnName];\n const storePreloadProgress = Tablets.prepareStorePreloadProgress(storePreload);\n\n return <Progress {...storePreloadProgress} />;\n }\n\n componentDidMount() {\n this.props.loadTablets();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.path !== this.props.path) {\n this.props.loadTablets();\n }\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n get defaultItems() {\n const {type} = this.props;\n\n const newDefaultItemsForReplicatedTable = [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'state',\n 'cell_id',\n 'error_count',\n 'replication_error_count',\n 'pivot_key',\n 'actions',\n ];\n const newDefaultItemsForTable = [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'state',\n 'cell_id',\n 'error_count',\n 'pivot_key',\n 'actions',\n ];\n\n const newDefaultItems =\n type === 'replicated_table'\n ? newDefaultItemsForReplicatedTable\n : newDefaultItemsForTable;\n\n return newDefaultItems;\n }\n\n get tableSets() {\n return {\n default: {\n items: this.defaultItems,\n },\n data: {\n items: [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n structure: {\n items: [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'chunk_count',\n 'partition_count',\n 'store_count',\n 'overlapping_store_count',\n 'store_preload',\n 'actions',\n ],\n },\n performance: {\n items: [\n 'index',\n 'cell_leader_address',\n 'dynamic',\n 'static_chunk',\n 'unmerged_row_read_rate',\n 'merged_row_read_rate',\n 'actions',\n ],\n },\n by_host: {\n items: [\n 'name_tablet_id',\n 'index',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n by_cell: {\n items: [\n 'name_cell_id',\n 'index',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n };\n }\n\n get tableSettings() {\n const {tabletsMode} = this.props;\n\n return {\n css: block(),\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: NAVIGATION_TABLETS_TABLE_ID,\n columns: {\n items: tableItems,\n sets: this.tableSets,\n mode: tabletsMode,\n },\n templates: {\n name_tablet_id: Tablets.renderName,\n name_cell_id: Tablets.renderName,\n index: Tablets.renderIndex,\n tablet_id: Tablets.renderTabletId,\n cell_id: Tablets.renderCellId,\n cell_leader_address: Tablets.renderHost,\n state: Tablets.renderState,\n pivot_key: Tablets.renderPivotKey,\n actions: Tablets.renderActions,\n store_preload: Tablets.renderStorePreload,\n error_count: asNumber,\n replication_error_count: asNumber,\n chunk_count: asNumber,\n partition_count: asNumber,\n store_count: asNumber,\n overlapping_store_count: asNumber,\n unmerged_row_count: this.renderNumberProgress,\n uncompressed_data_size: this.renderBytesProgress,\n compressed_data_size: this.renderBytesProgress,\n disk_space: this.renderBytesProgress,\n static_chunk_read: asNumber,\n static_chunk_lookup: asNumber,\n dynamic_read: asNumber,\n dynamic_lookup: asNumber,\n dynamic_write: asNumber,\n dynamic_delete: asNumber,\n unmerged_row_read_rate: asNumber,\n merged_row_read_rate: asNumber,\n },\n computeKey(item) {\n return item.name || item.tablet_id;\n },\n itemMods(tablet) {\n return (\n tablet.index === 'aggregation' && {\n aggregation: 'yes',\n }\n );\n },\n };\n }\n\n renderProgress = (item, column, useBytes) => {\n const {maxByLevel = []} = this.props;\n const {level = 0, [column]: value, index} = item;\n if (value === undefined) {\n return hammer.format.NO_VALUE;\n }\n const {[column]: max} = maxByLevel[level] || {};\n if (!max || index === 'aggregation') {\n return asNumber(item, column);\n }\n\n const progress = (value / max) * 100;\n const text = hammer.format[useBytes ? 'Bytes' : 'Number'](value);\n\n if (level === 1) {\n return (\n <Progress\n stack={[\n {\n value: progress,\n color: getProgressBarColorByIndex(3),\n },\n ]}\n text={text}\n />\n );\n }\n\n return <Progress value={progress} text={text} theme={'info'} />;\n };\n\n renderBytesProgress = (item, column) => {\n return this.renderProgress(item, column, true);\n };\n\n renderNumberProgress = (item, column) => {\n return this.renderProgress(item, column, false);\n };\n\n renderOverview() {\n const {tabletsFilter, changeTabletsFilter, tabletsMode, changeTabletsMode} = this.props;\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={block('overview', {sticky: isSticky})}>\n <Filter\n size=\"m\"\n value={tabletsFilter}\n onChange={changeTabletsFilter}\n placeholder=\"Filter by Tablet Id/Cell Id/State/Host...\"\n className={block('tablets-filter')}\n />\n\n <RadioButton\n size=\"m\"\n value={tabletsMode}\n onChange={changeTabletsMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'default',\n text: 'Default',\n },\n {\n value: 'data',\n text: 'Data',\n },\n {\n value: 'by_host',\n text: 'Data by nodes',\n },\n {\n value: 'by_cell',\n text: 'Data by cells',\n },\n {\n value: 'structure',\n text: 'Structure',\n },\n {\n value: 'performance',\n text: 'Performance',\n },\n ]}\n />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderContent() {\n const {\n tablets,\n histogramCollapsed,\n toggleHistogram,\n histogram,\n activeHistogram,\n changeActiveHistogram,\n collapsibleSize,\n } = this.props;\n\n return (\n <Fragment>\n <CollapsibleSection\n name=\"Histogram\"\n collapsed={histogramCollapsed}\n onToggle={toggleHistogram}\n size={collapsibleSize}\n >\n <Histogram\n activeHistogram={activeHistogram}\n handleHistogramChange={changeActiveHistogram}\n histogramItems={histogramItems}\n histogram={histogram}\n />\n </CollapsibleSection>\n\n <CollapsibleSection name=\"Tablets\" size={collapsibleSize}>\n <StickyContainer>\n {this.renderOverview()}\n\n <ElementsTable\n {...this.tableSettings}\n items={tablets}\n rowClassName={Tablets.rowClassName}\n onItemClick={this.onRowClick}\n />\n </StickyContainer>\n </CollapsibleSection>\n </Fragment>\n );\n }\n\n onRowClick = (item) => {\n const {isTopLevel, name} = item;\n if (isTopLevel) {\n this.props.toggleExpandedHost(name);\n }\n };\n\n render() {\n const {loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...this.props}>\n <ErrorBoundary>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? <Loader /> : this.renderContent()}\n </div>\n </ErrorBoundary>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, tabletsMode, tabletsFilter, histogramCollapsed} =\n state.navigation.tabs.tablets;\n const path = getPath(state);\n let tablets;\n let maxByLevel = [];\n if (tabletsMode === 'by_host' || tabletsMode === 'by_cell') {\n const data = getTabletsByName(state);\n tablets = data.items;\n maxByLevel = data.maxByLevel;\n } else {\n tablets = getTablets(state);\n maxByLevel = [getTabletsMax(state)];\n }\n\n const histogram = getHistogram(state);\n const activeHistogram = getActiveHistogram(state);\n const type = getType(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n tablets,\n maxByLevel,\n tabletsMode,\n tabletsFilter,\n histogramCollapsed,\n activeHistogram,\n histogram,\n type,\n collapsibleSize: UI_COLLAPSIBLE_SIZE,\n };\n};\n\nconst mapDispatchToProps = {\n loadTablets,\n abortAndReset,\n toggleHistogram,\n changeTabletsMode,\n changeTabletsFilter,\n changeActiveHistogram,\n toggleExpandedHost,\n};\n\nconst TabletsConnected = connect(mapStateToProps, mapDispatchToProps)(Tablets);\n\nexport default function TabletsWithRum() {\n const loadState = useSelector(getNavigationTabletsLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLETS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLETS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TabletsConnected />;\n}\n","import React from 'react';\nimport unipika from '../../../../common/thor/unipika';\nimport PropTypes from 'prop-types';\nimport {connect, useSelector} from 'react-redux';\n\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {getAttributesWithTypes, getLoadState} from '../../../../store/selectors/navigation';\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\nfunction Attributes({attributes, settings}) {\n return <Yson settings={settings} value={attributes} folding />;\n}\n\nAttributes.propTypes = {\n attributes: PropTypes.object.isRequired,\n settings: Yson.settingsProps.isRequired,\n};\n\nconst mapStateToProps = (state) => ({\n attributes: getAttributesWithTypes(state),\n settings: unipika.prepareSettings(),\n});\n\nconst AttributesConnected = connect(mapStateToProps)(Attributes);\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 <AttributesConnected />;\n}\n","export {TimelinePicker} from './TimelinePicker/TimelinePicker';\n\nexport {convertTimeToRequestParams, formatInterval} from './util';\n\nfunction shortcut(time: string, title?: string) {\n return {time, title: title || time};\n}\n\nexport const TIMELINE_RANGE_PICKER_SHORTCUTS = [\n [shortcut('4h'), shortcut('8h'), shortcut('12h'), shortcut('24h')],\n [shortcut('2d'), shortcut('7d', 'Week'), shortcut('2w', '2 Weeks')],\n [shortcut('1M', 'Month'), shortcut('2M', '2 Months')],\n];\n","import isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getPath} from '../../../../store/selectors/navigation/index';\nimport {convertTimeToRequestParams} from '../../../../components/common/Timeline';\n\nconst getAccessLogFiltersState = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters;\n\nexport const getAccessLogFilterPagination = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.pagination;\n\nexport const getAccessLogFilterPathRegex = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.path_regex;\n\nexport const getAccessLogFilterUserRegex = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.user_regex;\n\nexport const getAccessLogFilterMethod = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.method_group;\n\nexport const getAccessLogFilterUserType = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.user_type;\n\nexport const getAccessLogFilterScope = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.scope;\n\nexport const getAccessLogFilterTime = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.time;\n\nexport const getAccessLogFilterFieldSelector = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.field_selector;\n\nexport const getAccessLogFilterMetadata = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.metadata;\n\nexport const getAccessLogFilterDistinctBy = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.distinct_by;\n\nexport const getAccessLogLoading = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.loading;\n\nexport const getAccessLogReady = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.ready;\n\nexport const getAccessLogLoaded = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.loaded;\n\nexport const getAccessLogError = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.error;\n\nexport const getAccessLogItems = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.accesses;\n\nexport const getAccessLogTotalRowCount = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.total_row_count;\n\nexport const getAccessLogAvailableTimeRange = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.availableTimeRange;\n\nexport const getAccessLogPagesCount = createSelector(\n [getAccessLogTotalRowCount, (state) => getAccessLogFilterPagination(state).size],\n (totalRowCount, size) => {\n return Math.ceil(totalRowCount / size);\n },\n);\n\nexport const getAccessLogLastLoadedParams = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.params;\n\nfunction skipEmpty<T>(v: T) {\n return isEmpty_(v) ? undefined : v;\n}\n\nexport const getAccessLogRequestParams = createSelector(\n [getCluster, getPath, getAccessLogFiltersState],\n (cluster, path, filters) => {\n const {time, field_selector, method_group, user_type, scope, ...rest} = filters;\n\n const {from, to} = convertTimeToRequestParams(time) || {};\n return {\n ...rest,\n begin: from === undefined ? undefined : from / 1000,\n end: to === undefined ? undefined : to / 1000,\n cluster,\n path,\n field_selector: skipEmpty(field_selector),\n method_group: skipEmpty(method_group),\n user_type: skipEmpty(user_type),\n scope: skipEmpty(scope),\n };\n },\n);\n\nexport const getAccessLogHasChangedFilters = createSelector(\n [getAccessLogLastLoadedParams, getAccessLogRequestParams],\n (lastLoaded, current) => {\n return Boolean(lastLoaded.path) && !isEqual_(lastLoaded, current);\n },\n);\n\nexport const getAccessLogLastLoadedFieldSelector = createSelector(\n [getAccessLogLastLoadedParams],\n (params) => {\n return params.field_selector;\n },\n);\n","import axios from 'axios';\nimport {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {\n AccessLogAction,\n AccessLogAvailableTimeRange,\n AccessLogData,\n} from '../../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport {\n ACCESS_LOG_FAILURE,\n ACCESS_LOG_FILTERS,\n ACCESS_LOG_PARTIAL,\n ACCESS_LOG_PATH_CHANGED,\n ACCESS_LOG_REQUEST,\n ACCESS_LOG_RESET_FILTERS,\n ACCESS_LOG_SUCCESS,\n} from '../../../../../constants/navigation/tabs/access-log';\nimport {\n getAccessLogFilterPagination,\n getAccessLogLastLoadedParams,\n getAccessLogRequestParams,\n} from '../../../../../store/selectors/navigation/tabs/access-log';\nimport {\n AccessLogFilterAction,\n AccessLogFiltersState,\n} from '../../../../../store/reducers/navigation/tabs/access-log/access-log-filters';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {getAccessLogBasePath} from '../../../../../config';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {getCluster} from '../../../../selectors/global';\n\ntype AccessLogThunkAction<Res = any> = ThunkAction<Res, RootState, any, AccessLogAction>;\ntype AccessLogFiltersThunkAction<Res = any> = ThunkAction<\n Res,\n RootState,\n any,\n AccessLogFilterAction\n>;\n\nexport function resetPaginationIfNeededAndCheckIfPathChanged(): AccessLogFiltersThunkAction<Boolean> {\n return (dispatch, getState) => {\n const state = getState();\n\n const lastLoadedParams = getAccessLogLastLoadedParams(state);\n const params = getAccessLogRequestParams(state);\n\n const result = params.path !== lastLoadedParams.path;\n\n if (result) {\n dispatch({type: ACCESS_LOG_PATH_CHANGED});\n }\n\n return result;\n };\n}\n\nconst accesLogCancelHelper = new CancelHelper();\n\nexport function fetchAccessLog(): AccessLogThunkAction {\n return (dispatch, getState) => {\n const pathChanged = dispatch(resetPaginationIfNeededAndCheckIfPathChanged());\n dispatch({type: ACCESS_LOG_REQUEST, data: pathChanged ? {loaded: false} : {}});\n\n const state = getState();\n const params = getAccessLogRequestParams(state);\n\n dispatch({type: ACCESS_LOG_PARTIAL, data: {params}});\n return Promise.all([\n axios.get(`${getAccessLogBasePath()}/ready`),\n axios\n .request<AccessLogAvailableTimeRange>({\n method: 'POST',\n url: `${getAccessLogBasePath()}/visible-time-range`,\n withCredentials: true,\n data: {cluster: params.cluster},\n cancelToken: accesLogCancelHelper.removeAllAndGenerateNextToken(),\n })\n .catch((e) => {\n console.log(e);\n return {data: {latest: undefined, erliest: undefined}};\n }),\n axios.request<AccessLogData>({\n method: 'POST',\n url: `${getAccessLogBasePath()}/access_log`,\n data: params,\n withCredentials: true,\n cancelToken: accesLogCancelHelper.generateNextToken(),\n }),\n ])\n .then(([{data: ready}, {data: availableTimeRange}, {data}]) => {\n dispatch({\n type: ACCESS_LOG_SUCCESS,\n data: {...data, ready, availableTimeRange, params},\n });\n })\n .catch((e: any) => {\n if (!isCancelled(e)) {\n const error = e?.response?.data || e;\n dispatch({type: ACCESS_LOG_FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport const fetchAccessLogQtId = (): AccessLogThunkAction => async (_, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const params = getAccessLogRequestParams(state);\n\n const newParams = {...params} as Partial<typeof params>;\n delete newParams.pagination;\n\n const {data} = await wrapApiPromiseByToaster(\n axios.request({\n method: 'POST',\n url: `${getAccessLogBasePath()}/qt_access_log`,\n withCredentials: true,\n data: newParams,\n }),\n {\n toasterName: 'getAccessLogQtId',\n errorTitle: 'Failed to load access log query id',\n skipSuccessToast: true,\n },\n );\n\n window.open(`/${cluster}/queries/${data.query_id}`);\n};\n\nexport function applyAccessLogFilters(): AccessLogFiltersThunkAction {\n return (dispatch) => {\n dispatch(setAccessLogFiltersPage(0));\n };\n}\n\nexport function setAccessLogFilters(\n data: Partial<AccessLogFiltersState>,\n): AccessLogFiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCESS_LOG_FILTERS, data});\n };\n}\n\nexport function setAccessLogFiltersPage(index: number): AccessLogFiltersThunkAction {\n return (dispatch, getState) => {\n const {size} = getAccessLogFilterPagination(getState());\n dispatch({type: ACCESS_LOG_FILTERS, data: {pagination: {index, size}}});\n dispatch(fetchAccessLog());\n };\n}\n\nexport function accessLogResetFilters(): AccessLogFiltersThunkAction {\n return (dispatch, getState) => {\n const lastLoadedParams = getAccessLogLastLoadedParams(getState());\n if (!lastLoadedParams.path) {\n // skip for initial loading\n return;\n }\n\n return dispatch({type: ACCESS_LOG_RESET_FILTERS});\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport Yson from '../../../../components/Yson/Yson';\nimport {AccessLogTransactionInfo} from '../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport './AccountsLogTransactionInfo.scss';\n\nconst block = cn('accounts-log-transaction-info');\n\ninterface Props {\n data: AccessLogTransactionInfo;\n}\n\nfunction TransactionInfo(props: Props) {\n const {data} = props;\n return (\n <MetaTable\n items={[\n {\n key: 'Id',\n value: <CopyText text={data.transaction_id} />,\n },\n {\n key: 'Title',\n value: <CopyText text={data.transaction_title || ''} />,\n visible: Boolean(data.transaction_title),\n },\n {\n key: 'Operation Id',\n value: <CopyText text={data.operation_id || ''} />,\n visible: Boolean(data.operation_id),\n },\n {\n key: 'Operation title',\n value: <CopyText text={data.operation_title || ''} />,\n visible: Boolean(data.operation_title),\n },\n {\n key: 'Parent',\n value: <Yson value={data.parent} />,\n visible: Boolean(data.parent),\n },\n ]}\n />\n );\n}\n\nfunction CopyText({text, copyText}: {text: string; copyText?: string}) {\n return (\n <div className={block('copy')}>\n <span className={block('copy-text')}>{text}</span>\n <ClipboardButton\n className={block('copy-btn')}\n view=\"flat-secondary\"\n text={copyText ?? text}\n />\n </div>\n );\n}\n\nexport default React.memo(TransactionInfo);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport compact_ from 'lodash/compact';\n\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../common/hammer/format';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport Label from '../../../../components/Label/Label';\nimport Link from '../../../../components/Link/Link';\nimport {Secondary, Warning} from '../../../../components/Text/Text';\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {STICKY_DOUBLE_TOOLBAR_BOTTOM} from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\n\nimport {\n getAccessLogFilterPagination,\n getAccessLogItems,\n getAccessLogLastLoadedFieldSelector,\n getAccessLogLoaded,\n getAccessLogLoading,\n getAccessLogPagesCount,\n getAccessLogReady,\n} from '../../../../store/selectors/navigation/tabs/access-log';\nimport {AccessLogItem} from '../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport {genNavigationUrl} from '../../../../utils/navigation/navigation';\n\nimport AccountsLogTransactionInfo from './AccountsLogTransactionInfo';\n\nimport './AccessLogTable.scss';\n\nconst block = cn('access-log-table');\n\nconst DateHeaderMemo = React.memo(DateHeader);\n\nconst TABLE_SETTINGS: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_DOUBLE_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n sortable: false,\n};\n\nfunction useColumns() {\n const cluster = useSelector(getCluster);\n const fieldSelector = useSelector(getAccessLogLastLoadedFieldSelector);\n const columns: Array<Column<AccessLogItem>> = React.useMemo(() => {\n const res: Array<Column<AccessLogItem>> = compact_([\n {\n name: 'Date',\n render({row}) {\n return <Secondary>{row.instant}</Secondary>;\n },\n header: <DateHeaderMemo />,\n },\n {\n name: 'Method',\n render({row}) {\n return row.method;\n },\n },\n {\n name: 'Path',\n render({row: {path, target_path, original_path}}) {\n if (!path) {\n return (\n <Secondary>\n Path is hidden due to access permission restrictions\n </Secondary>\n );\n }\n return (\n <div className={block('path')}>\n <span className={block('path-link')}>\n <Link\n url={genNavigationUrl({cluster, path})}\n className={block('path-link-link')}\n >\n {path}\n {''}\n </Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n </span>\n {target_path && (\n <PathTag text=\"target\" cluster={cluster} path={target_path} />\n )}\n {original_path && (\n <PathTag text=\"original\" cluster={cluster} path={original_path} />\n )}\n </div>\n );\n },\n },\n {\n name: 'User',\n render({row: {user}}) {\n return <SubjectCard name={user} />;\n },\n },\n {\n name: 'Type',\n render({row: {type}}) {\n return format.ReadableField(type);\n },\n },\n fieldSelector?.scope && {\n name: 'Scope',\n render({row: {scope}}) {\n return format.ReadableField(scope);\n },\n },\n fieldSelector?.user_type && {\n name: 'User type',\n render({row: {user_type}}) {\n return user_type;\n },\n },\n fieldSelector?.method_group && {\n name: 'Method group',\n render({row: {method_group}}) {\n return method_group;\n },\n },\n fieldSelector?.transaction_info && {\n name: 'Tx',\n headerTitle: 'Transaction info',\n render({row: {transaction_info}}) {\n if (!transaction_info) {\n return null;\n }\n return (\n <Tooltip\n placement={'left'}\n content={<AccountsLogTransactionInfo data={transaction_info} />}\n >\n <Label text=\"Tx\" />\n </Tooltip>\n );\n },\n },\n ]);\n return res;\n }, [cluster, fieldSelector]);\n return columns;\n}\n\nfunction AccessLogTable() {\n const items = useSelector(getAccessLogItems);\n const columns = useColumns();\n\n const loading = useSelector(getAccessLogLoading);\n const loaded = useSelector(getAccessLogLoaded);\n\n const ready = useSelector(getAccessLogReady);\n\n return ready ? (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={loaded ? items : []}\n useThemeYT\n settings={TABLE_SETTINGS}\n />\n ) : (\n <Warning>The service is under maintenance. Please try again later.</Warning>\n );\n}\n\nexport default React.memo(AccessLogTable);\n\nfunction DateHeader() {\n const loading = useSelector(getAccessLogLoading);\n const {index} = useSelector(getAccessLogFilterPagination);\n const pageCount = useSelector(getAccessLogPagesCount);\n\n return <ColumnHeader column=\"Date\" loading={loading} pageIndex={index} pageCount={pageCount} />;\n}\n\nfunction PathTag({\n text,\n path,\n cluster,\n}: {\n text: 'target' | 'original';\n path?: string;\n cluster: string;\n}) {\n const isTarget = text === 'target';\n return path ? (\n <Tooltip\n content={\n <div>\n <Link url={genNavigationUrl({cluster, path})}>{path}</Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n {isTarget ? (\n <div>\n The Target directs to the node/attribute that has been accessed by the\n link from the Path.\n </div>\n ) : (\n <div>The Path has been accessed by the link from the Original.</div>\n )}\n </div>\n }\n >\n <Label text={text} capitalize />\n </Tooltip>\n ) : null;\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport ErrorBlock from '../../../../components/Block/Block';\nimport {getAccessLogError} from '../../../../store/selectors/navigation/tabs/access-log';\n\nfunction AccessLogError() {\n const error = useSelector(getAccessLogError);\n\n return !error ? null : <ErrorBlock error={error} topMargin={'half'} />;\n}\n\nexport default React.memo(AccessLogError);\n","import reduce_ from 'lodash/reduce';\n\nimport type {\n AccessLogFieldSelectorType,\n AccessLogMethodType,\n AccessLogScopeType,\n AccessLogUserType,\n} from '../../../store/reducers/navigation/tabs/access-log/access-log-filters';\n\nexport function valueToSelection<KeyType extends string, V>(value: Record<KeyType, V>) {\n return reduce_(\n value,\n (acc, v, key) => {\n if (v) {\n acc.push(key as KeyType);\n }\n return acc;\n },\n [] as Array<KeyType>,\n );\n}\n\nfunction selectionToValue<KeyType extends string, EmptyValue>(\n selected: Array<KeyType>,\n emptyValue: EmptyValue,\n) {\n if (!selected.length) {\n return emptyValue;\n }\n return reduce_(\n selected,\n (acc, item) => {\n acc[item as KeyType] = true;\n return acc;\n },\n {} as Record<KeyType, boolean>,\n );\n}\n\nexport const ACCESS_LOG_FIELD_SELECTOR_ITEMS: Array<{\n text: string;\n value: AccessLogFieldSelectorType;\n}> = [\n {text: 'Scope', value: 'scope'},\n {text: 'User type', value: 'user_type'},\n {text: 'Method group', value: 'method_group'},\n {text: 'Transaction info', value: 'transaction_info'},\n];\n\nexport function accessLogFieldSelectorSelectionToValue<EmptyValue>(\n selection: Array<AccessLogFieldSelectorType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_METHOD_ITEMS: Array<{text: string; value: AccessLogMethodType}> = [\n {text: 'Read', value: 'read'},\n {text: 'Write', value: 'write'},\n {text: 'Lock', value: 'lock'},\n {text: 'Link', value: 'link'},\n {text: 'Copy/Move', value: 'copy_move'},\n {text: 'Dynamic table commands', value: 'dynamic_table_commands'},\n];\n\nexport function accessLogMethodSelectionToValue<EmptyValue>(\n selection: Array<AccessLogMethodType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_USER_TYPE_ITEMS: Array<{text: string; value: AccessLogUserType}> = [\n {text: 'Human', value: 'human'},\n {text: 'Robot', value: 'robot'},\n {text: 'System', value: 'system'},\n];\n\nexport function accessLogUserTypeSelectionToValue<EmptyValue>(\n selection: Array<AccessLogUserType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_SCOPE_ITEMS: Array<{text: string; value: AccessLogScopeType}> = [\n {text: 'Table', value: 'table'},\n {text: 'Directory', value: 'directory'},\n {text: 'File', value: 'file'},\n {text: 'Document', value: 'document'},\n {text: 'Other', value: 'other'},\n];\n\nexport function accessLogScopeSelectionToValue<EmptyValue>(\n selection: Array<AccessLogScopeType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n","const SvgAbbrSql = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#abbr-sql_svg__a)\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M13.5 4.75a.75.75 0 0 0-1.5 0v6.5c0 .414.336.75.75.75h2.5a.75.75 0 0 0 0-1.5H13.5zM11 8c0 1.32-.257 2.314-.709 2.98l.99.99a.75.75 0 1 1-1.061 1.06l-1.132-1.132a2.4 2.4 0 0 1-.713.102C6.8 12 5.75 10.667 5.75 8S6.8 4 8.375 4 11 5.333 11 8m-1.957 2.15c.222-.322.457-.98.457-2.149 0-1.168-.235-1.826-.457-2.149-.175-.254-.366-.35-.668-.35s-.493.096-.668.35c-.222.323-.457.981-.457 2.15 0 1.167.235 1.826.457 2.148.175.254.366.351.668.351s.493-.097.668-.351M2.562 4.002c-.689 0-1.285.249-1.702.713C.453 5.17.277 5.76.277 6.352c0 .732.326 1.28.759 1.658.41.358.908.561 1.305.684.398.122.684.217.89.372.147.113.27.266.27.625 0 .29-.109.469-.253.589a1.08 1.08 0 0 1-.686.222c-.202 0-.438-.093-.658-.293a1.4 1.4 0 0 1-.423-.684.75.75 0 1 0-1.462.333c.127.557.453 1.079.878 1.463.426.386 1.006.681 1.665.681.578 0 1.177-.18 1.647-.57.485-.405.791-1.006.791-1.74 0-.843-.352-1.433-.864-1.82-.434-.33-.962-.492-1.306-.597l-.047-.015c-.31-.095-.579-.221-.76-.38a.65.65 0 0 1-.246-.528c0-.304.09-.512.2-.635.099-.11.27-.215.585-.215.322 0 .498.099.612.206.13.123.233.313.3.56a.75.75 0 1 0 1.449-.386c-.113-.42-.325-.892-.719-1.263-.409-.387-.961-.617-1.642-.617\" clipRule=\"evenodd\" /></g><defs><clipPath id=\"abbr-sql_svg__a\"><path fill=\"currentColor\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgAbbrSql;","import React, {FC, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {fetchAccessLogQtId} from '../../../../store/actions/navigation/tabs/access-log/access-log';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport AbbrSqlIcon from '@gravity-ui/icons/svgs/abbr-sql.svg';\n\nexport const AccessLogOpenQtButton: FC = () => {\n const [loading, setLoading] = useState(false);\n const dispatch = useDispatch();\n\n const handleClick = async () => {\n try {\n setLoading(true);\n await dispatch(fetchAccessLogQtId());\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Button onClick={handleClick} loading={loading}>\n <Icon data={AbbrSqlIcon} size={16} />\n Open in QT\n </Button>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport SimplePagination from '../../../../components/Pagination/SimplePagination';\nimport TextInputWithDebounce from '../../../../components/TextInputWithDebounce/TextInputWithDebounce';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport Select from '../../../../components/Select/Select';\n\nimport {\n getAccessLogAvailableTimeRange,\n getAccessLogFilterDistinctBy,\n getAccessLogFilterFieldSelector,\n getAccessLogFilterMetadata,\n getAccessLogFilterMethod,\n getAccessLogFilterPagination,\n getAccessLogFilterPathRegex,\n getAccessLogFilterScope,\n getAccessLogFilterTime,\n getAccessLogFilterUserRegex,\n getAccessLogFilterUserType,\n getAccessLogHasChangedFilters,\n getAccessLogPagesCount,\n} from '../../../../store/selectors/navigation/tabs/access-log';\nimport {\n applyAccessLogFilters,\n setAccessLogFilters,\n setAccessLogFiltersPage,\n} from '../../../../store/actions/navigation/tabs/access-log/access-log';\nimport {\n AccessLogFieldSelectorType,\n AccessLogMethodType,\n AccessLogScopeType,\n AccessLogUserType,\n initialState,\n} from '../../../../store/reducers/navigation/tabs/access-log/access-log-filters';\n\nimport './AccessLogFilters.scss';\nimport {\n TIMELINE_RANGE_PICKER_SHORTCUTS,\n TimelinePicker,\n convertTimeToRequestParams,\n formatInterval,\n} from '../../../../components/common/Timeline';\nimport {EMPTY_OBJECT} from '../../../../constants/empty';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {\n ACCESS_LOG_FIELD_SELECTOR_ITEMS,\n ACCESS_LOG_METHOD_ITEMS,\n ACCESS_LOG_SCOPE_ITEMS,\n ACCESS_LOG_USER_TYPE_ITEMS,\n accessLogFieldSelectorSelectionToValue,\n accessLogMethodSelectionToValue,\n accessLogScopeSelectionToValue,\n accessLogUserTypeSelectionToValue,\n valueToSelection,\n} from '../../../../utils/navigation/tabs/access-log';\nimport {AccessLogOpenQtButton} from './AccessLogOpenQtButton';\n\nconst block = cn('access-log-filters');\n\nexport default React.memo(AccessLogFilters);\n\nfunction AccessLogFilters() {\n return (\n <React.Fragment>\n <Toolbar\n className={block()}\n itemsToWrap={[\n {node: <AccessLogPagination />},\n {node: <AccessLogTimeline />},\n {node: <AccessLogFieldselector />},\n {node: <AccessLogMetadata />},\n {node: <AccessLogDistictBy />},\n {node: <AccessLogOpenQtButton />},\n ]}\n />\n <Toolbar\n className={block()}\n itemsToWrap={[\n {\n node: <AccessLogPathRegexp />,\n growable: true,\n shrinkable: true,\n wrapperClassName: block('path-regex'),\n },\n {\n node: <AccessLogUserRegexp />,\n wrapperClassName: block('user-regex'),\n },\n {\n node: <AccessLogUserTypeFilter />,\n wrapperClassName: block('user-type'),\n },\n {\n node: <AccessLogScopeFilter />,\n wrapperClassName: block('scope'),\n },\n {\n node: <AccessLogMethod />,\n wrapperClassName: block('method-group'),\n },\n {node: <AccessLogApplyFilters />},\n ]}\n />\n </React.Fragment>\n );\n}\n\nfunction AccessLogApplyFilters() {\n const dispatch = useDispatch();\n const hasChanges = useSelector(getAccessLogHasChangedFilters);\n const handleApply = React.useCallback(() => {\n dispatch(applyAccessLogFilters());\n }, [dispatch]);\n return (\n <Button width=\"max\" disabled={!hasChanges} view=\"action\" onClick={handleApply}>\n Apply\n </Button>\n );\n}\n\nfunction AccessLogPagination() {\n const dispatch = useDispatch();\n\n const {index} = useSelector(getAccessLogFilterPagination);\n const pageCount = useSelector(getAccessLogPagesCount);\n\n const handleChange = React.useCallback(\n (value: number) => {\n dispatch(setAccessLogFiltersPage(value));\n },\n [dispatch],\n );\n\n return (\n <SimplePagination\n value={index}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={handleChange}\n />\n );\n}\n\nfunction AccessLogPathRegexp() {\n const dispatch = useDispatch();\n const filter = useSelector(getAccessLogFilterPathRegex);\n\n const handleChange = React.useCallback(\n (path_regex: string) => {\n dispatch(setAccessLogFilters({path_regex}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'Path regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction AccessLogUserRegexp() {\n const dispatch = useDispatch();\n const filter = useSelector(getAccessLogFilterUserRegex);\n\n const handleChange = React.useCallback(\n (user_regex: string) => {\n dispatch(setAccessLogFilters({user_regex}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'User regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nconst METADATA_ITEMS = [\n {\n text: 'Only attributes',\n value: 'only_attrs',\n },\n {\n text: 'Skip attributes',\n value: 'skip_attrs',\n },\n];\n\nfunction AccessLogMetadata() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterMetadata);\n const handleChange = React.useCallback(\n (v: string) => {\n const metadata = v ? v === 'only_attrs' : undefined;\n\n dispatch(setAccessLogFilters({metadata}));\n },\n [dispatch, value],\n );\n const valueStr = value === undefined ? '' : value ? 'only_attrs' : 'skip_attrs';\n return (\n <Select\n value={valueStr ? [valueStr] : undefined}\n items={METADATA_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n placeholder={'Attributes'}\n />\n );\n}\n\nconst DISTINCT_BY_ITEMS = [{text: 'By User', value: 'user'}];\nfunction AccessLogDistictBy() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterDistinctBy);\n const handleChange = React.useCallback(\n (v: string) => {\n dispatch(setAccessLogFilters({distinct_by: v as 'user'}));\n },\n [dispatch],\n );\n\n return (\n <Select\n value={value ? [value] : undefined}\n items={DISTINCT_BY_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n placeholder={'Distinct'}\n />\n );\n}\n\nfunction AccessLogFieldselector() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterFieldSelector);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const field_selector = accessLogFieldSelectorSelectionToValue(\n items as Array<AccessLogFieldSelectorType>,\n initialState.field_selector,\n );\n dispatch(setAccessLogFilters({field_selector}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n items={ACCESS_LOG_FIELD_SELECTOR_ITEMS}\n value={selected}\n multiple\n onUpdate={handleUpdate}\n placeholder={'Columns'}\n />\n );\n}\n\nfunction AccessLogMethod() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterMethod);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const method_group = accessLogMethodSelectionToValue(\n items as Array<AccessLogMethodType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({method_group}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_METHOD_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'Method group: All'}\n width=\"max\"\n />\n );\n}\n\nfunction AccessLogUserTypeFilter() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterUserType);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const user_type = accessLogUserTypeSelectionToValue(\n items as Array<AccessLogUserType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({user_type}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_USER_TYPE_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'User type: All'}\n width=\"max\"\n maxVisibleValues={2}\n />\n );\n}\n\nfunction AccessLogScopeFilter() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterScope);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const scope = accessLogScopeSelectionToValue(\n items as Array<AccessLogScopeType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({scope}));\n },\n [dispatch],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_SCOPE_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'Scope: All'}\n width=\"max\"\n />\n );\n}\n\nconst TIMELINE_SHOURCUTS = [\n {\n title: '1d',\n time: '1d',\n },\n {\n title: '1w',\n time: '1w',\n },\n {\n title: '1M',\n time: '1M',\n },\n {\n time: 'custom',\n },\n];\n\nfunction AccessLogTimeline() {\n const dispatch = useDispatch();\n const updateTime = React.useCallback(\n (time: {from?: number; to?: number}) => {\n const {from, to} = time;\n dispatch(setAccessLogFilters({time: {from, to}}));\n },\n [dispatch],\n );\n\n const updateShortcut = React.useCallback(\n (shortcutValue: string) => {\n dispatch(setAccessLogFilters({time: {shortcutValue}}));\n },\n [dispatch],\n );\n\n const time = useSelector(getAccessLogFilterTime);\n const now = Date.now();\n const {from = now - 24 * 12 * 1000, to = now} = convertTimeToRequestParams(time) || {};\n\n return (\n <React.Fragment>\n <TimelinePicker\n from={from || 0}\n to={to || 0}\n shortcut={time?.shortcutValue}\n onUpdate={updateTime}\n onShortcut={updateShortcut}\n topShortcuts={TIMELINE_SHOURCUTS}\n shortcuts={TIMELINE_RANGE_PICKER_SHORTCUTS}\n hasDatePicker\n />\n <AvailableTimeRange />\n </React.Fragment>\n );\n}\n\nfunction AvailableTimeRange() {\n const {earliest, latest} = useSelector(getAccessLogAvailableTimeRange);\n const hidden = earliest === undefined || latest === undefined;\n\n return (\n <Tooltip\n className={block('available-range')}\n content={\n <React.Fragment>\n Available range:{' '}\n {hidden\n ? 'Please until the range is loaded'\n : formatInterval((earliest ?? 0) * 1000, (latest ?? 0) * 1000)}\n </React.Fragment>\n }\n >\n <Icon awesome=\"question-circle\" />\n </Tooltip>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {\n accessLogResetFilters,\n fetchAccessLog,\n} from '../../../../store/actions/navigation/tabs/access-log/access-log';\n\nimport AccessLogTable from './AccessLogTable';\nimport AccessLogError from './AccessLogError';\nimport AccessLogFilters from './AccessLogFilters';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nfunction AccessLog() {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n\n React.useEffect(() => {\n dispatch(accessLogResetFilters());\n dispatch(fetchAccessLog());\n }, [dispatch, path]);\n\n return (\n <React.Fragment>\n <WithStickyToolbar\n doubleHeight\n toolbar={<AccessLogFilters />}\n content={\n <React.Fragment>\n <AccessLogError />\n <AccessLogTable />\n </React.Fragment>\n }\n />\n </React.Fragment>\n );\n}\n\nexport default React.memo(AccessLog);\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport capitalize_ from 'lodash/capitalize';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {Loader} from '@gravity-ui/uikit';\nimport Error from '../../../../components/Error/Error';\nimport Link from '../../../../components/Link/Link';\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport {Secondary} from '../../../../components/Text/Text';\n\nimport {getTabletErrors} from '../../../../store/actions/navigation/tabs/tablet-errors';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {\n getTabletErrorCountNoticeVisbile,\n getTabletErrorsLoadingStatus,\n getTabletErrorsReplicationErrors,\n} from '../../../../store/selectors/navigation/tabs/tablet-errors';\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 './TabletErrors.scss';\n\nconst block = cn('navigation-tablet-errors');\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.tabletErrors;\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(getTabletErrorCountNoticeVisbile);\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 const {cluster_name: cluster, mode, replica_path: path} = attrs;\n\n const link =\n cluster && path ? <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link> : id;\n\n return (\n <React.Fragment>\n {id}{' '}\n <Secondary>\n ({mode ? `${mode} replica to ` : 'Replica to '}\n {capitalize_(cluster)}, table path {link})\n </Secondary>\n </React.Fragment>\n );\n}\n\ninterface Props {\n cluster: string;\n items?: Record<string, Array<YTError>>;\n sectionClassName?: string;\n}\n\nfunction TabletErrorsBlock({items, cluster, sectionClassName}: Props) {\n if (isEmpty_(items)) {\n return null;\n }\n\n let counter = 0;\n return (\n <div className={block('items')}>\n {map_(items, (errors, id) => {\n return (\n <CollapsibleSection\n key={id}\n className={block('group', sectionClassName)}\n size=\"s\"\n name={<TabletErrorsHeader {...{id, cluster}} />}\n collapsed={0 < counter++}\n >\n {map_(errors, (error, index) => {\n return (\n <Error\n key={index}\n className={block('error')}\n topMargin=\"none\"\n error={error}\n disableLogger={true}\n />\n );\n })}\n </CollapsibleSection>\n );\n })}\n </div>\n );\n}\n","import CancelHelper, {isCancelled} from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants/index';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {GET_USER_ATTRIBUTE_KEYS} from '../../../../constants/navigation/tabs/user-attributes';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function getUserAttributeKeys() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_USER_ATTRIBUTE_KEYS.REQUEST});\n requests.removeAllRequests();\n\n ytApiV3Id\n .get(YTApiId.navigationUserAttributeKeys, {\n parameters: prepareRequest('/@user_attribute_keys', {\n path,\n transaction,\n output_format: TYPED_OUTPUT_FORMAT,\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((userAttributeKeys) => {\n dispatch({\n type: GET_USER_ATTRIBUTE_KEYS.SUCCESS,\n data: {userAttributeKeys},\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n dispatch({type: GET_USER_ATTRIBUTE_KEYS.CANCELLED});\n } else {\n dispatch({\n type: GET_USER_ATTRIBUTE_KEYS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_USER_ATTRIBUTE_KEYS.CANCELLED});\n };\n}\n","import reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\nimport {getAttributesWithTypes} from '../../../../store/selectors/navigation';\n\nconst getUserAttributeKeys = (state) => state.navigation.tabs.userAttributes.userAttributeKeys;\n\nexport const getUserAttributes = createSelector(\n [getAttributesWithTypes, getUserAttributeKeys],\n (attributes, userAttributeKeys) => {\n return reduce_(\n userAttributeKeys,\n (res, key) => {\n res[key.$value] = attributes[key.$value];\n return res;\n },\n {},\n );\n },\n);\n","import React, {useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport unipika from '../../../../common/thor/unipika';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {Loader} from '@gravity-ui/uikit';\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {\n abortAndReset,\n getUserAttributeKeys,\n} from '../../../../store/actions/navigation/tabs/user-attributes';\nimport {getUserAttributes} 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';\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './UserAttributes.scss';\n\nconst block = cn('navigation-user-attributes');\n\nfunction UserAttributes(props) {\n const {path, mode, getUserAttributeKeys, abortAndReset} = props;\n useEffect(() => {\n getUserAttributeKeys();\n return abortAndReset;\n }, [path, mode]);\n\n const {loading, loaded, userAttributes, settings} = props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <Yson value={userAttributes} settings={settings} folding />\n )}\n </div>\n </LoadDataHandler>\n );\n}\n\nUserAttributes.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 userAttributes: PropTypes.object.isRequired,\n settings: Yson.settingsProps.isRequired,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n\n getUserAttributeKeys: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData} = state.navigation.tabs.userAttributes;\n const userAttributes = getUserAttributes(state);\n const settings = unipika.prepareSettings();\n const path = getPath(state);\n const mode = getEffectiveMode(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n userAttributes,\n settings,\n path,\n mode,\n };\n};\n\nconst mapDispatchToProps = {\n getUserAttributeKeys,\n abortAndReset,\n};\n\nconst UserAttributesConnected = connect(mapStateToProps, mapDispatchToProps)(UserAttributes);\n\nexport default function UserAttributesWithRum() {\n const {loaded, error, loading} = useSelector((state) => state.navigation.tabs.userAttributes);\n const loadState = calculateLoadingStatus(loading, loaded, error);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_USER_ATTRIBUTES,\n startDeps: [loading],\n allowStart: ([loading]) => 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 <UserAttributesConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\nimport {getNavigationTableMountConfig} from '../../../../store/selectors/navigation/content/table-mount-config';\nimport ErrorBlock from '../../../../components/Error/Error';\nimport Yson from '../../../../components/Yson/Yson';\nimport {getNavigationMountConfigYsonSettings} from '../../../../store/selectors/thor/unipika';\n\nconst block = cn('table-mount-config');\n\nfunction TableMountConfig() {\n const {data, error} = useSelector(getNavigationTableMountConfig);\n\n const settings = useSelector(getNavigationMountConfigYsonSettings);\n\n return (\n <div className={block('table-mount-config')}>\n {error ? (\n <ErrorBlock error={error} topMargin={'none'} />\n ) : (\n <Yson value={data} settings={settings} folding />\n )}\n </div>\n );\n}\n\nexport default React.memo(TableMountConfig);\n","import React from 'react';\nimport withLazyLoading from '../../../../hocs/withLazyLoading';\n\nfunction importFlow() {\n return import(/* webpackChunkName: \"navigation-flow\" */ './Flow');\n}\n\nexport const Flow = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importFlow()).Flow};\n }),\n);\n","import React from 'react';\n\nimport Consumer from '../../../../../pages/navigation/tabs/Consumer/Consumer';\nimport Queue from '../../../../../pages/navigation/tabs/Queue/Queue';\nimport ACL from '../../../../../pages/navigation/tabs/ACL/ACL';\nimport Locks from '../../../../../pages/navigation/tabs/Locks/Locks';\nimport Schema from '../../../../../pages/navigation/tabs/Schema/Schema';\nimport Tablets from '../../../../../pages/navigation/tabs/Tablets/Tablets';\nimport Attributes from '../../../../../pages/navigation/tabs/Attributes/Attributes';\nimport AccessLog from '../../../../../pages/navigation/tabs/AccessLog/AccessLog';\nimport TabletErrors from '../../../../../pages/navigation/tabs/TabletErrors/TabletErrors';\nimport UserAttributes from '../../../../../pages/navigation/tabs/UserAttributes/UserAttributes';\nimport TableMountConfig from '../../../../../pages/navigation/tabs/TableMountConfig/TableMountConfig';\nimport {Flow} from '../../../../../pages/navigation/tabs/Flow';\n\nimport {Tab} from '../../../../../constants/navigation';\nimport UIFactory from '../../../../../UIFactory';\n\nconst getSupportedAttributeTypes = () => {\n const supportedAttributeTypes: Record<string, React.ComponentType> = {\n acl: ACL,\n locks: Locks,\n schema: Schema,\n tablets: Tablets,\n attributes: Attributes,\n tablet_errors: TabletErrors,\n user_attributes: UserAttributes,\n [Tab.ACCESS_LOG]: AccessLog,\n [Tab.AUTO]: React.Fragment,\n [Tab.CONSUMER]: Consumer,\n [Tab.MOUNT_CONFIG]: TableMountConfig,\n [Tab.QUEUE]: Queue,\n [Tab.FLOW]: Flow,\n };\n\n UIFactory.getNavigationExtraTabs().forEach((tab) => {\n supportedAttributeTypes[tab.value] = tab.component;\n });\n\n return supportedAttributeTypes;\n};\n\nexport default (mode: string) => {\n const supportedAttributeTypes = getSupportedAttributeTypes();\n\n return mode in supportedAttributeTypes\n ? supportedAttributeTypes[mode as keyof typeof supportedAttributeTypes]\n : undefined;\n};\n","import getComponentByContentType from './getComponentByContentType';\nimport {Tab} from '../../../../../constants/navigation';\nimport {YTError} from '../../../../../../@types/types';\nimport ypath from '../../../../../common/thor/ypath';\nimport getComponentByMode from './getComponentByMode';\n\nexport function checkContentIsSupported(type: string, mode: string) {\n if (mode === Tab.CONTENT) return Boolean(getComponentByContentType(type));\n return Boolean(getComponentByMode(mode));\n}\n\nfunction hasViewerForType(type: string): boolean {\n return checkContentIsSupported(type, Tab.CONTENT);\n}\n\nexport function itemNavigationAllowed(item: {\n type: string;\n targetPathBroken: unknown;\n parsedPathError?: YTError;\n}) {\n if (item) {\n if (\n item.parsedPathError ||\n (item.type === 'link' && ypath.getBoolean(item.targetPathBroken))\n ) {\n return false;\n }\n\n const noAccess = item.type === undefined;\n\n return hasViewerForType(item.type) || noAccess;\n }\n\n return false;\n}\n","import React, {Component, Fragment} from 'react';\nimport PropTypes from 'prop-types';\n\nimport Hotkey from '../../../components/Hotkey/Hotkey';\n\nimport {getDisplayName} from '../../../utils';\n\nimport '../ElementsTable.scss';\n\nexport default (ElementsTable) => {\n return class WithKeyboardNavigation extends Component {\n static displayName = `WithKeyboardNavigation(${getDisplayName(ElementsTable)})`;\n\n static propTypes = {\n // from parent\n hotkeys: PropTypes.array,\n onItemClick: PropTypes.func,\n selectedIndex: PropTypes.number,\n items: PropTypes.array.isRequired,\n };\n\n static defaultProps = {\n hotkeys: [],\n selectedIndex: 0,\n onItemClick: () => {},\n };\n\n state = {\n hoverSelectedIndex: this.props.selectedIndex,\n selectedIndex: this.props.selectedIndex,\n mode: 'mouse',\n };\n\n get hotkeys() {\n return [\n ...this.props.hotkeys.map(this.wrapHotkeyHandler),\n\n {keys: 'k, up', handler: this.selectPrev, scope: 'all'},\n {keys: 'up', handler: this.selectPrev, scope: 'filter'},\n\n {keys: 'j, down', handler: this.selectNext, scope: 'all'},\n {keys: 'down', handler: this.selectNext, scope: 'filter'},\n\n {\n keys: 'l, enter, ctrl+right',\n handler: this.handleItemKeyboardClick,\n scope: 'all',\n },\n {\n keys: 'enter',\n handler: this.handleItemKeyboardClick,\n scope: 'filter',\n },\n ];\n }\n\n wrapHotkeyHandler = (params) => {\n const {handler, ...rest} = params;\n return {\n ...rest,\n handler: (...args) => {\n const {items} = this.props;\n const {selectedIndex} = this.state;\n return handler(...args, {\n item: items[selectedIndex],\n index: selectedIndex,\n });\n },\n };\n };\n\n selectIndex = (index) => {\n const {items} = this.props;\n const maxIndex = Math.max(0, items.length - 1);\n\n let state;\n if (index > maxIndex) {\n state = {\n selectedIndex: maxIndex,\n hoverSelectedIndex: maxIndex,\n };\n } else if (index < 0) {\n state = {\n selectedIndex: 0,\n hoverSelectedIndex: 0,\n };\n } else {\n state = {\n selectedIndex: index,\n hoverSelectedIndex: index,\n };\n }\n\n this.setState({mode: 'keyboard', ...state});\n };\n\n selectNext = () => {\n const {hoverSelectedIndex} = this.state;\n\n this.selectIndex(hoverSelectedIndex + 1);\n };\n\n selectPrev = () => {\n const {hoverSelectedIndex} = this.state;\n\n this.selectIndex(hoverSelectedIndex - 1);\n };\n\n handleMouseMove = () => {\n const {mode} = this.state;\n\n if (mode !== 'mouse') {\n this.setState({mode: 'mouse'});\n }\n };\n\n handleItemHover = (item, index) => {\n const {mode} = this.state;\n\n if (mode === 'mouse') {\n this.setState({\n hoverSelectedIndex: index,\n });\n }\n };\n\n handleItemSelect = (item, index) => {\n const {mode} = this.state;\n const elem = document.querySelector(\n `.elements-table__row_selected_yes[data-index=\"${index}\"]`,\n );\n\n if (elem && mode === 'keyboard') {\n const windowHeight = document.documentElement.clientHeight;\n const bounding = elem.getBoundingClientRect();\n const bottomCoordinate = bounding.y + bounding.height;\n const topCoordinate = bounding.y;\n\n if (bottomCoordinate > windowHeight) {\n elem.scrollIntoView(false);\n } else if (topCoordinate < 120) {\n elem.scrollIntoView(true);\n window.scrollBy(0, -120);\n }\n }\n };\n\n handleItemKeyboardClick = () => {\n const {onItemClick, items} = this.props;\n const {selectedIndex} = this.state;\n\n if (items && items[selectedIndex]) {\n onItemClick(items[selectedIndex]);\n }\n };\n\n render() {\n const {selectedIndex, mode} = this.state;\n\n return (\n <Fragment>\n <ElementsTable\n {...this.props}\n cssHover={mode === 'mouse'}\n onItemHover={this.handleItemHover}\n onMouseMove={this.handleMouseMove}\n selectedIndex={mode === 'keyboard' ? selectedIndex : null}\n onItemSelect={mode === 'keyboard' ? this.handleItemSelect : null}\n />\n <Hotkey settings={this.hotkeys} />\n </Fragment>\n );\n }\n };\n};\n","import React, {Component} from 'react';\nimport {batch, connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport findIndex_ from 'lodash/findIndex';\n\nimport {\n FormattedLink,\n FormattedTextOrLink,\n printColumnAsBytes,\n printColumnAsNumber,\n} from '../../../../components/formatters';\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport withKeyboardNavigation from '../../../../components/ElementsTable/hocs/withKeyboardNavigation';\nimport ElementsTableBase from '../../../../components/ElementsTable/ElementsTable';\nimport Link from '../../../../components/Link/Link';\nimport Icon from '../../../../components/Icon/Icon';\nimport AccountLink from '../../../accounts/AccountLink';\n\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {itemNavigationAllowed} from '../../../../pages/navigation/Navigation/ContentViewer/helpers';\n\nimport {\n getContentMode,\n getLoadState,\n getPreparedTableColumns,\n getSelected,\n getSelectedIndex,\n getSortedNodes,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {getTransaction} from '../../../../store/selectors/navigation';\n\nimport {\n navigateParent,\n setMode,\n updatePath,\n updateView,\n} from '../../../../store/actions/navigation';\nimport {setSelectedItem} from '../../../../store/actions/navigation/content/map-node';\n\nimport {ROOT_POOL_NAME, Tab as SchedulingTab} from '../../../../constants/scheduling';\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../../constants/navigation';\nimport {LOADING_STATUS, Page} from '../../../../constants/index';\nimport hammer from '../../../../common/hammer';\nimport {showTableEraseModal} from '../../../../store/actions/navigation/modals/table-erase-modal';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\n\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus, showErrorPopup} from '../../../../utils/utils';\nimport PathActions from './PathActions';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport WarningIcon from '../../../../components/WarningIcon/WarningIcon';\nimport TTLInfo from '../../../../components/TTLInfo/TTLInfo';\nimport UIFactory from '../../../../UIFactory';\n\nimport './MapNodesTable.scss';\n\nconst block = cn('map-nodes-table');\nconst ElementsTable = withKeyboardNavigation(ElementsTableBase);\n\nexport function renderMapNodesTableIcon(item) {\n let icon = UIFactory.getNavigationMapNodeSettings()?.renderNodeIcon(item);\n if (icon) {\n // do nothing\n } else if (MapNodesTable.isTrashNode(item) || MapNodesTable.isLinkToTrashNode(item)) {\n icon = <Icon awesome=\"trash-alt\" />;\n } else {\n icon = <Icon awesome={getIconNameForType(item.iconType, item.targetPathBroken)} />;\n }\n\n return (\n <span className={'icon-wrapper'} title={item.type}>\n {icon}\n </span>\n );\n}\n\nclass MapNodesTable extends Component {\n static propTypes = {\n columns: PropTypes.objectOf(\n PropTypes.shape({\n sort: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n caption: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n align: PropTypes.string,\n get: PropTypes.func,\n }),\n ),\n contentMode: PropTypes.string.isRequired,\n selected: PropTypes.object.isRequired,\n loadState: PropTypes.string.isRequired,\n nodes: PropTypes.array.isRequired,\n selectedIndex: PropTypes.number.isRequired,\n transaction: PropTypes.string,\n\n setSelectedItem: PropTypes.func.isRequired,\n navigateParent: PropTypes.func.isRequired,\n updatePath: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n };\n\n static TRASH_PATH = '//tmp/trash';\n\n static isTrashNode(item) {\n return item.path === MapNodesTable.TRASH_PATH;\n }\n\n static isLinkToTrashNode(item) {\n return item.targetPath === MapNodesTable.TRASH_PATH;\n }\n\n static renderTrash(linkState) {\n return <FormattedLink text=\"trash\" state={linkState} theme=\"primary\" />;\n }\n\n static renderName(item) {\n return (\n <div className={block('name-cell')}>\n <div className={block('name-cell-text')}>{MapNodesTable.renderNameImpl(item)}</div>\n <div className={block('name-cell-tags')}>{MapNodesTable.renderTags(item)}</div>\n </div>\n );\n }\n\n static renderTags(item) {\n return (\n <TTLInfo\n attributes={item.$attributes}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n return true;\n }}\n />\n );\n }\n\n static renderNameImpl(item) {\n if (MapNodesTable.isTrashNode(item)) {\n return MapNodesTable.renderTrash(item.pathState);\n } else if (MapNodesTable.isLinkToTrashNode(item)) {\n return MapNodesTable.renderTrash(item.targetPathState);\n }\n\n const type = item.type;\n\n const textOrLink = (\n <FormattedTextOrLink\n text={item.caption}\n state={item.pathState}\n asLink={itemNavigationAllowed(item)}\n asHTML\n title={item.title}\n theme=\"primary\"\n className={block('name', 'unipika-wrapper')}\n />\n );\n\n const name = !item.parsedPathError ? (\n textOrLink\n ) : (\n <Tooltip content={<span>{item.parsedPathError.message} </span>}>\n <WarningIcon /> {textOrLink}\n </Tooltip>\n );\n\n if (type === 'scheduler_pool') {\n const poolTreeIndex = findIndex_(\n item.parsedPath.fragments,\n (fragment) => fragment.name === 'pool_trees',\n );\n\n const pool = item.parsedPath.fragments[poolTreeIndex + 2] ? item.name : ROOT_POOL_NAME;\n const poolTree = item.parsedPath.fragments[poolTreeIndex + 1].name;\n\n const url = `${Page.SCHEDULING}/${SchedulingTab.OVERVIEW}?pool=${pool}&tree=${poolTree}`;\n const arrow = <span>&#10142;</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}&nbsp;{arrow}&nbsp;{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>&#10142;</span>;\n\n return (\n <span>\n {name}&nbsp;{viewLink}&nbsp;{arrow}&nbsp;{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 <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 )\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n loadState: getLoadState(state),\n columns: getPreparedTableColumns(state),\n transaction: getTransaction(state),\n contentMode: getContentMode(state),\n nodes: getSortedNodes(state),\n selected: getSelected(state),\n selectedIndex: getSelectedIndex(state),\n };\n}\n\nconst mapDispatchToProps = {\n setSelectedItem,\n navigateParent,\n updateView,\n updatePath,\n setMode,\n showTableEraseModal,\n showTableSortModal,\n showTableMergeModal,\n};\n\nconst MapNodesTableConnected = connect(mapStateToProps, mapDispatchToProps)(MapNodesTable);\n\nexport default function MapNodesTableWithRum() {\n const loadState = useSelector(getLoadState);\n const nodes = useSelector(getSortedNodes);\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE,\n stopDeps: [nodes, loadState],\n allowStop: ([nodes, loadState]) => {\n return Boolean(nodes) && isFinalLoadingStatus(loadState);\n },\n });\n\n return <MapNodesTableConnected />;\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {renderMapNodesTableIcon} from '../../../../../pages/navigation/content/MapNode/MapNodesTable';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport {Checkbox, Loader} from '@gravity-ui/uikit';\nimport Error from '../../../../../components/Error/Error';\nimport Modal from '../../../../../components/Modal/Modal';\nimport Label from '../../../../../components/Label/Label';\n\nimport {\n closeDeleteModal,\n deleteObject,\n deleteObjects,\n getRealPath,\n getRealPaths,\n togglePermanentlyDelete,\n} from '../../../../../store/actions/navigation/modals/delete-object';\nimport withScope from '../../../../../hocs/components/Modal/withScope';\nimport {checkIsTrash} from '../../../../../store/selectors/navigation';\nimport hammer from '../../../../../common/hammer';\n\nimport './DeleteObjectModal.scss';\nimport UIFactory from '../../../../../UIFactory';\n\nconst block = cn('navigation-delete-object-modal');\n\nexport class DeleteObjectModal extends Component {\n static resourceUsage = PropTypes.shape({\n disk_space: PropTypes.number,\n node_count: PropTypes.number,\n });\n\n static propTypes = {\n visible: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n loadingRealPath: PropTypes.bool.isRequired,\n errorRealPath: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n errorDataRealPath: PropTypes.object.isRequired,\n permanently: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n multipleMode: PropTypes.bool.isRequired,\n realPath: PropTypes.string.isRequired,\n inTrash: PropTypes.bool.isRequired,\n resourceUsage: DeleteObjectModal.resourceUsage.isRequired,\n item: PropTypes.shape({\n $attributes: PropTypes.object,\n name: PropTypes.string,\n path: PropTypes.string,\n type: PropTypes.string,\n rows: PropTypes.number,\n unmergedRows: PropTypes.number,\n }).isRequired,\n multipleInfo: PropTypes.arrayOf(\n PropTypes.shape({\n path: PropTypes.string.isRequired,\n account: PropTypes.string.isRequred,\n type: PropTypes.string.isRequired,\n resourceUsage: DeleteObjectModal.resourceUsage.isRequired,\n }),\n ).isRequired,\n\n getRealPath: PropTypes.func.isRequired,\n getRealPaths: PropTypes.func.isRequired,\n deleteObject: PropTypes.func.isRequired,\n deleteObjects: PropTypes.func.isRequired,\n closeDeleteModal: PropTypes.func.isRequired,\n togglePermanentlyDelete: PropTypes.func.isRequired,\n };\n\n componentDidUpdate(prevProps) {\n const {visible, item, getRealPath, getRealPaths, multipleMode} = this.props;\n\n if (!prevProps.visible && visible) {\n if (multipleMode) {\n getRealPaths(item);\n } else {\n getRealPath(item);\n }\n }\n }\n\n get content() {\n const {loadingRealPath, errorRealPath, error, multipleMode} = this.props;\n\n if (loadingRealPath) {\n return this.renderLoader();\n } else if (errorRealPath || error) {\n return this.renderError();\n }\n\n return multipleMode ? this.renderMultipleModeContent() : this.renderContent();\n }\n\n handleDeleteClick = () => {\n const {multipleMode, deleteObject, deleteObjects} = this.props;\n\n if (multipleMode) {\n deleteObjects();\n } else {\n deleteObject();\n }\n };\n\n renderLoader() {\n return (\n <div className={block({loading: true})}>\n <Loader />\n </div>\n );\n }\n\n renderError() {\n const {error, errorData, errorDataRealPath} = this.props;\n const errorContent = error ? errorData : errorDataRealPath;\n\n return (\n <div className={block({error: true})}>\n <Error error={errorContent} />\n </div>\n );\n }\n\n renderPermanentlyCheckbox() {\n const {permanently, togglePermanentlyDelete, inTrash} = this.props;\n\n return (\n <p className={block('delete', {permanently})}>\n <Checkbox\n size=\"l\"\n disabled={inTrash}\n checked={permanently}\n content=\"Delete permanently\"\n onChange={togglePermanentlyDelete}\n />\n\n <Label theme=\"danger\" text=\"This action CANNOT be undone\" />\n </p>\n );\n }\n\n renderMultipleModeContent() {\n const {item, multipleInfo} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block({multiple: true})}>\n <div className={block('table')}>\n <div className={block('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\n {map_(multipleInfo, ({path, resourceUsage}, index) => {\n const {type, titleUnquoted, rows, unmergedRows} = item[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[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;\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.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\n return (\n <Modal\n title=\"Delete\"\n visible={visible}\n loading={loading}\n confirmTheme={theme}\n confirmText=\"Delete\"\n content={this.content}\n footerContent={helpLink}\n onCancel={closeDeleteModal}\n onConfirm={this.handleDeleteClick}\n />\n );\n }\n}\n\nconst mapStateToProps = (state) => {\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 {connect} from 'react-redux';\n\nimport RequestPermissions from '../../../../../containers/ACL/RequestPermissions/RequestPermissions';\nimport {\n getDenyColumnsItems,\n getIdmPermissionsRequestError,\n} from '../../../../../store/selectors/acl';\nimport {cancelRequestPermissions, requestPermissions} from '../../../../../store/actions/acl';\nimport {IdmObjectType} from '../../../../../constants/acl';\n\nconst idmKind = IdmObjectType.PATH;\n\nconst mapStateToProps = (state) => {\n const denyColumns = getDenyColumnsItems(state, idmKind);\n\n return {\n idmKind,\n denyColumns,\n error: getIdmPermissionsRequestError(state, idmKind),\n };\n};\n\nexport default connect(mapStateToProps, {requestPermissions, cancelRequestPermissions})(\n RequestPermissions,\n);\n","import {ValueOf} from '../../@types/types';\n\nexport type AnnotationVisibilityType = ValueOf<typeof AnnotationVisibility>;\n\nexport const AnnotationVisibility = {\n HIDDEN: 'hidden',\n VISIBLE: 'visible',\n PARTIAL: 'partial',\n} as const;\n\nexport function normalizeAnnotationVisibility(\n value?: AnnotationVisibilityType,\n): AnnotationVisibilityType {\n return value || AnnotationVisibility.PARTIAL;\n}\n","import React, {FC} from 'react';\nimport {Markdown} from '../../../components/Markdown/Markdown';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\ntype Props = {\n annotation?: string;\n expanded: boolean;\n onToggle: () => void;\n};\n\nexport const AnnotationWithPartial: FC<Props> = ({annotation, expanded, onToggle}) => {\n const value = annotation || '';\n\n const {isFullText, text} = React.useMemo(() => {\n const rows = value.split(/\\n+/);\n return {\n text: rows.slice(0, 3).join('\\n\\n'),\n isFullText: rows.length <= 3,\n };\n }, [value]);\n\n return (\n <>\n <Markdown text={expanded ? value : text} />\n {isFullText ? null : (\n <ClickableText color={'secondary'} onClick={onToggle}>\n {expanded ? 'Hide more' : 'Show more'}\n </ClickableText>\n )}\n </>\n );\n};\n","import React, {FC} from 'react';\nimport {Button, Flex} from '@gravity-ui/uikit';\nimport Icon from '../../../components/Icon/Icon';\n\ntype Props = {\n isSaving: boolean;\n editMode: boolean;\n onEditClick: () => void;\n onCancelClick: () => void;\n onSaveClick: () => void;\n};\n\nexport const ActionButtons: FC<Props> = ({\n isSaving,\n editMode,\n onEditClick,\n onSaveClick,\n onCancelClick,\n}) => {\n if (editMode)\n return (\n <Flex gap={1}>\n <Button view=\"action\" onClick={onSaveClick} loading={isSaving}>\n Save\n </Button>\n <Button view=\"flat\" onClick={onCancelClick}>\n Cancel\n </Button>\n </Flex>\n );\n\n return (\n <Button view=\"outlined\" onClick={onEditClick}>\n <Icon awesome={'pencil'} />\n </Button>\n );\n};\n","import React, {FC, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport ErrorBlock from '../../../components/Error/Error';\nimport CollapsibleSection from '../../../components/CollapsibleSection/CollapsibleSection';\nimport {\n getNavigationAnnotation,\n getNavigationAnnotationEditing,\n getNavigationAnnotationError,\n getNavigationAnnotationPath,\n getNavigationAnnotationSaving,\n} from '../../../store/selectors/navigation/tabs/annotation';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {getSettingAnnotationVisibility} from '../../../store/selectors/settings';\nimport {setSettingAnnotationVisibility} from '../../../store/actions/settings/settings';\nimport {AnnotationVisibility} from '../../../../shared/constants/settings-ts';\nimport './NavigationDescription.scss';\nimport {AnnotationWithPartial} from './AnnotationWithPartial';\nimport {ActionButtons} from './ActionButtons';\nimport {EditAnnotationWithPreview} from '../../../components/EditAnnotationWithPreview/EditAnnotationWithPreview';\nimport {saveAnnotation} from '../../../store/actions/navigation/tabs/annotation';\nimport {\n SET_ANNOTATION,\n SET_ANNOTATION_EDITING,\n} from '../../../constants/navigation/tabs/annotation';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../constants/global';\n\nconst block = cn('navigation-description');\n\ntype Props = {\n className: string;\n};\n\nconst NavigationDescription: FC<Props> = ({className}) => {\n const dispatch = useDispatch();\n const annotation = useSelector(getNavigationAnnotation) || '';\n const visibility = useSelector(getSettingAnnotationVisibility);\n const path = useSelector(getPath);\n const isSaving = useSelector(getNavigationAnnotationSaving);\n const isEditing = useSelector(getNavigationAnnotationEditing);\n const annotationPath = useSelector(getNavigationAnnotationPath);\n const error = useSelector(getNavigationAnnotationError);\n const oldValue = useRef<string>(annotation);\n\n const expanded = visibility === AnnotationVisibility.VISIBLE;\n const handleToggleAnnotationCollapse = useCallback(() => {\n dispatch(\n setSettingAnnotationVisibility(\n expanded ? AnnotationVisibility.PARTIAL : AnnotationVisibility.VISIBLE,\n ),\n );\n }, [dispatch, expanded]);\n\n const handleEditClick = useCallback(() => {\n oldValue.current = annotation;\n dispatch({type: SET_ANNOTATION_EDITING, data: true});\n }, [annotation, dispatch]);\n\n const handleCancelClick = useCallback(() => {\n dispatch({type: SET_ANNOTATION, data: oldValue.current});\n dispatch({type: SET_ANNOTATION_EDITING, data: false});\n }, [dispatch]);\n\n const handleChangeDescription = useCallback(\n ({value}: {value: string | undefined}) => {\n dispatch({type: SET_ANNOTATION, data: value || ''});\n },\n [dispatch],\n );\n\n const handleSaveClick = useCallback(() => {\n dispatch(saveAnnotation(path));\n }, [dispatch, path]);\n\n if (!(path === annotationPath && (error || annotation))) return null;\n\n return (\n <div className={block(null, className)}>\n <CollapsibleSection\n className={block('collapsible')}\n name={'Description'}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n overview={\n <ActionButtons\n isSaving={isSaving}\n editMode={isEditing}\n onEditClick={handleEditClick}\n onSaveClick={handleSaveClick}\n onCancelClick={handleCancelClick}\n />\n }\n >\n <div className={block('content')}>\n {isEditing ? (\n <EditAnnotationWithPreview\n valuePath={path}\n value={{value: annotation}}\n initialValue={{value: annotation}}\n onChange={handleChangeDescription}\n className={block('edit-block')}\n hideReset\n />\n ) : (\n <AnnotationWithPartial\n annotation={annotation}\n expanded={expanded}\n onToggle={handleToggleAnnotationCollapse}\n />\n )}\n {error && <ErrorBlock error={error} />}\n </div>\n </CollapsibleSection>\n </div>\n );\n};\n\nexport default NavigationDescription;\n","import React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Tab} from '../../../../constants/navigation';\nimport NavigationDescription from '../../NavigationDiscription/NavigationDescription';\nimport {getComponentByContentType, getComponentByMode} from './helpers';\n\nconst block = cn('navigation');\n\ntype Props = {\n type: string;\n mode: string;\n};\n\nconst ContentViewer: FC<Props> = ({type, mode}) => {\n const isContentTab = mode === Tab.CONTENT;\n const Component = isContentTab ? getComponentByContentType(type) : getComponentByMode(mode);\n\n if (!Component) return undefined;\n\n return (\n <ErrorBoundary>\n <div className={block('viewer', {mode})}>\n {isContentTab && <NavigationDescription className={block('description')} />}\n <Component />\n </div>\n </ErrorBoundary>\n );\n};\n\nexport default ContentViewer;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {\n getNavigationCheckPermissionsError,\n getNavigationIsAccountUsable,\n getNavigationIsWritable,\n getNavigationPathAccount,\n} from '../../../store/selectors/navigation/navigation';\nimport {useSelector} from 'react-redux';\nimport Error from '../../../components/Error/Error';\nimport Block from '../../../components/Block/Block';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {genAccountsAclLink} from '../../../utils/accounts/accounts';\nimport {getCluster} from '../../../store/selectors/global';\nimport Link from '../../../components/Link/Link';\n\nimport './NavigationPermissionsNotice.scss';\nconst block = cn('navigation-permissions-notice');\n\nexport function NavigationPermissionsNotice() {\n const path = useSelector(getPath);\n const isWriteable = useSelector(getNavigationIsWritable);\n const isAccountUsable = useSelector(getNavigationIsAccountUsable);\n const checkPermissionsError = useSelector(getNavigationCheckPermissionsError);\n const account = useSelector(getNavigationPathAccount);\n const cluster = useSelector(getCluster);\n\n if (checkPermissionsError) {\n return <Error error={checkPermissionsError} message={'Check permissions error'} />;\n }\n\n const accountAclLink = genAccountsAclLink(cluster, account);\n\n return isWriteable && !isAccountUsable ? (\n <Block\n type={'alert'}\n message={\n <div className={block()}>\n You cannot modify <span className={block('path')}> {path} </span> since you have\n no permission <span className={block('use')}> use </span> to the corresponding\n account\n <Link routed url={accountAclLink}>\n {' '}\n {account}\n </Link>\n .\n </div>\n }\n />\n ) : null;\n}\n","import {Page} from '../../constants';\nimport {AccountsTab} from '../../constants/accounts/accounts';\n\nexport function genAccountsAclLink(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.ACL}?account=${account}`;\n}\n","import React from 'react';\n\nimport isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\n\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../../common/thor/ypath';\n\n// @ts-ignore\nimport {\n DialogError,\n DialogField,\n DialogTabField,\n FormApi,\n YTDFDialog,\n} from '../../../components/Dialog';\nimport {\n getNavigationAttributesEditorAttributes,\n getNavigationAttributesEditorDynamicTables,\n getNavigationAttributesEditorError,\n getNavigationAttributesEditorMapNodes,\n getNavigationAttributesEditorPath,\n getNavigationAttributesEditorStaticTables,\n getNavigationAttributesEditorVisible,\n} from '../../../store/selectors/navigation/modals/attributes-editor';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n hideNavigationAttributesEditor,\n navigationSetNodeAttributes,\n} from '../../../store/actions/navigation/modals/attributes-editor';\nimport {getMediumListNoCache} from '../../../store/selectors/thor';\nimport {\n InMemoryMode,\n InMemoryModeType,\n StorageOptions,\n compressionCodecValueFromString,\n compressionCodecValueToString,\n erasureCodecFromStorageOption,\n normalizeErasureCodec,\n storageOptionFromErasureCodec,\n} from '../../../utils/cypress-attributes';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {\n getCompressionCodecs,\n getErasureCodecs,\n} from '../../../store/selectors/global/supported-features';\nimport {docsUrl} from '../../../config';\n\nimport './AttributesEditor.scss';\nimport UIFactory from '../../../UIFactory';\n\nconst block = cn('navigation-attributes-editor');\n\ninterface FormValues {\n general: {\n path: Array<{title: string}>;\n account: string;\n primary_medium: string;\n tablet_cell_bundle: string;\n in_memory_mode: InMemoryModeType | '';\n\n expiration_time: {from?: string | number};\n expiration_timeout: {value: number};\n };\n storage: {\n path: Array<{title: string}>;\n optimize_for: 'lookup' | 'scan';\n compression_codec: Array<string>;\n erasure_codec: string;\n replication_factor: number;\n\n runMerge: true;\n _storageOption: 'replication' | 'erasure';\n };\n description: {\n annotation: {value: string};\n };\n}\n\n// eslint-disable-next-line complexity\nfunction AttributesEditorLoaded() {\n const paths = useSelector(getNavigationAttributesEditorPath);\n const attributesMap = useSelector(getNavigationAttributesEditorAttributes);\n\n const singleMode = !(paths?.length! > 1);\n const attributes = paths?.length === 1 ? attributesMap[paths[0]] : {};\n\n const mediumList = useSelector(getMediumListNoCache);\n const dispatch = useDispatch();\n const storeError = useSelector(getNavigationAttributesEditorError);\n\n const [stateError, setErr] = React.useState<any>(undefined);\n\n const error = stateError || storeError;\n\n const handleClose = React.useCallback(() => {\n dispatch(hideNavigationAttributesEditor());\n }, [dispatch]);\n\n const hasMapNodes = useSelector(getNavigationAttributesEditorMapNodes).length > 0;\n const hasStaticTables = useSelector(getNavigationAttributesEditorStaticTables).length > 0;\n const hasDynamicTables = useSelector(getNavigationAttributesEditorDynamicTables).length > 0;\n\n const hasTables = hasStaticTables || hasDynamicTables || hasMapNodes; // map-node is required for inheritance\n const hasDynTableOrMapNode = hasMapNodes || hasDynamicTables;\n\n const erasureCodec = ypath.getValue(attributes, '/@erasure_codec');\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n const annotationInitial = {\n value: ypath.getValue(attributes, '/@annotation'),\n };\n const initialValues: FormValues = {\n general: {\n path: pathsValues,\n account: ypath.getValue(attributes, '/@account') || '',\n primary_medium: ypath.getValue(attributes, '/@primary_medium') || '',\n tablet_cell_bundle: ypath.getValue(attributes, '/@tablet_cell_bundle') || '',\n in_memory_mode: ypath.getValue(attributes, '/@in_memory_mode'),\n\n expiration_time: {from: ypath.getValue(attributes, '/@expiration_time')},\n expiration_timeout: {value: ypath.getValue(attributes, '/@expiration_timeout')},\n },\n storage: {\n path: pathsValues,\n optimize_for: ypath.getValue(attributes, '/@optimize_for') || 'lookup',\n compression_codec: compressionCodecValueFromString(\n ypath.getValue(attributes, '/@compression_codec'),\n ),\n erasure_codec: normalizeErasureCodec(erasureCodec),\n replication_factor: ypath.getValue(attributes, '/@replication_factor'),\n\n runMerge: true,\n _storageOption:\n storageOptionFromErasureCodec(erasureCodec) || StorageOptions.REPLICATION,\n },\n description: {\n annotation: annotationInitial,\n },\n };\n\n const tmp = ypath.getValue(attributes, '/@annotation_path');\n const annotationPath = paths && tmp !== paths[0] ? tmp : undefined;\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues, FormValues>) => {\n try {\n const {values} = form.getState();\n const {general, storage, description} = values;\n\n const initials = {\n ...initialValues.general,\n ...initialValues.storage,\n };\n\n const dataDiff = reduce_(\n {...general, ...storage, ...description},\n (acc, value, key) => {\n if (!isEqual_(value, (initials as any)[key])) {\n (acc as any)[key] = value;\n }\n return acc;\n },\n {} as Partial<typeof initials>,\n );\n\n if (dataDiff.in_memory_mode === '') {\n delete dataDiff.in_memory_mode;\n }\n\n const {\n account,\n primary_medium,\n tablet_cell_bundle,\n in_memory_mode,\n compression_codec,\n erasure_codec,\n replication_factor,\n _storageOption,\n optimize_for,\n } = dataDiff;\n\n const generalAttributes: any = {\n account,\n primary_medium,\n tablet_cell_bundle,\n in_memory_mode,\n };\n\n const storageAttributes: Partial<\n Omit<FormValues['storage'], 'compression_codec'> & {\n compression_codec: string;\n }\n > = {};\n\n if (optimize_for) {\n storageAttributes['optimize_for'] = optimize_for;\n }\n\n if (compression_codec) {\n storageAttributes['compression_codec'] =\n compressionCodecValueToString(compression_codec);\n }\n if (_storageOption) {\n storageAttributes['erasure_codec'] = erasureCodecFromStorageOption(\n _storageOption,\n erasure_codec,\n );\n }\n if (storage._storageOption === StorageOptions.REPLICATION) {\n if (replication_factor) {\n storageAttributes['replication_factor'] = Number(replication_factor);\n }\n } else if (erasure_codec) {\n storageAttributes['erasure_codec'] = erasureCodecFromStorageOption(\n _storageOption,\n erasure_codec,\n );\n }\n\n const {\n annotation: {value: annotation},\n } = description;\n\n const generalAttrs = pickBy_(generalAttributes, (v) => v !== undefined);\n if (general.expiration_time.from !== initialValues.general.expiration_time.from) {\n generalAttrs.expiration_time = general.expiration_time.from;\n }\n\n if (general.expiration_timeout.value !== initials.expiration_timeout.value) {\n generalAttrs.expiration_timeout = general.expiration_timeout.value;\n }\n\n await dispatch(\n navigationSetNodeAttributes(\n {\n ...generalAttrs,\n ...Object.assign(\n {},\n annotation === annotationInitial.value\n ? {}\n : {\n annotation,\n },\n ),\n },\n storageAttributes,\n hasStaticTables && storage.runMerge,\n ),\n );\n } catch (e) {\n setErr(e);\n throw e;\n }\n },\n [dispatch, initialValues, setErr],\n );\n\n const forEachStaticTable = !hasStaticTables ? '' : ' for each static table ';\n const mergeNoticeAndError: Array<DialogField<FormValues>> = [];\n\n if (hasStaticTables) {\n mergeNoticeAndError.push({\n name: 'runMergeNotice',\n type: 'block',\n visibilityCondition: {\n when: 'storage.runMerge',\n isActive: (runMerge: boolean) => !runMerge,\n },\n extras: {\n children: (\n <span className={block('run-notice')}>\n Do not forget to run merge-operation manually\n {forEachStaticTable}\n to completely apply changes of storage attributes.\n </span>\n ),\n },\n });\n }\n if (error) {\n mergeNoticeAndError.push({\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n const annotationTab: Array<DialogTabField<DialogField<FormValues>>> = [];\n\n if (singleMode) {\n const fields: Array<DialogField<FormValues>> = [\n {\n name: 'annotation',\n type: 'annotation' as const,\n fullWidth: true,\n extras: {\n valuePath: annotationPath,\n className: block('full-height'),\n initialValue: annotationInitial,\n },\n },\n ...mergeNoticeAndError,\n ];\n\n annotationTab.push({\n name: 'description',\n type: 'tab-vertical',\n title: 'Description',\n fields,\n });\n }\n\n const inMemoryModeField: DialogField = {\n name: 'in_memory_mode', // the attribute is not inheritable, so we do not need to display for map-nodes\n type: 'radio' as const,\n caption: 'In memory mode',\n extras: {\n options: [\n {value: InMemoryMode.NONE, label: 'None'},\n {value: InMemoryMode.COMPRESSED, label: 'Compressed'},\n {value: InMemoryMode.UNCOMPRESSED, label: 'Uncompressed'},\n ],\n },\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['dynamic-tables:overview#in_memory'])),\n };\n\n const optimizeForField: DialogField = {\n name: 'optimize_for',\n type: 'radio',\n caption: 'Optimize for',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['storage:chunks#optimize_for'])),\n extras: {\n options: [\n {value: 'scan', label: 'Scan'},\n {value: 'lookup', label: 'Lookup'},\n ],\n },\n };\n\n const compressionCodecs = useSelector(getCompressionCodecs);\n const erasureCodecs = useSelector(getErasureCodecs);\n\n return (\n <YTDFDialog\n className={block({'single-mode': singleMode})}\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n size={'l'}\n validate={validateForm}\n headerProps={{\n title: 'Edit attributes',\n }}\n initialValues={initialValues}\n fields={[\n {\n name: 'general',\n title: 'General',\n type: 'tab-vertical',\n fields: [\n {\n name: 'path',\n type: 'editable-list',\n caption: 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n {\n name: 'account',\n type: 'usable-account',\n caption: 'Account',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['storage:accounts'])),\n extras: {\n placeholder: 'Enter account name...',\n },\n },\n {\n name: 'primary_medium',\n type: 'yt-select-single',\n caption: 'Primary medium',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['storage:media#primary'])),\n extras: {\n placeholder: 'Select primary medium',\n items: mediumList.map((value: string) => {\n return {value, text: value};\n }),\n width: 'max',\n },\n },\n ...(!hasDynTableOrMapNode\n ? []\n : [\n {\n name: 'tablet_cell_bundle',\n type: 'tablet-cell-bundle' as const,\n caption: 'Tablet cell bundle',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'dynamic-tables:concepts#tablet_cell_bundles'\n ],\n ),\n ),\n extras: {\n placeholder: 'Select tablet cell bundle',\n },\n },\n ]),\n ...(!hasDynamicTables ? [] : [inMemoryModeField]),\n {\n name: 'expiration_time',\n type: 'datepicker',\n caption: 'Expiration time',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['cypress:ttl'])),\n extras: {\n format: 'yyyy-MM-dd HH:mm',\n range: false,\n },\n },\n {\n name: 'expiration_timeout',\n type: 'time-duration',\n caption: 'Expiration timeout',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['cypress:ttl'])),\n },\n ...mergeNoticeAndError,\n ],\n },\n {\n name: 'storage',\n type: 'tab-vertical',\n title: 'Storage',\n fields: [\n {\n name: 'path',\n type: 'editable-list',\n caption: 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n ...(!hasTables ? [] : [optimizeForField]),\n {\n name: 'compression_codec',\n type: 'select-with-subitems' as const,\n caption: 'Compression',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:compression#compression_codecs'],\n ),\n ),\n extras: compressionCodecs,\n },\n {\n name: '_storageOption',\n type: 'radio',\n caption: 'Storage options',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#replication']),\n ),\n extras: {\n options: [\n {\n value: StorageOptions.REPLICATION,\n label: 'Replication',\n },\n {\n value: StorageOptions.ERASURE,\n label: 'Erasure encoding',\n },\n ],\n },\n },\n {\n name: 'replication_factor',\n type: 'text',\n caption: 'Number of replicas',\n touched: true,\n visibilityCondition: {\n when: 'storage._storageOption',\n isActive: (value: string) => value === StorageOptions.REPLICATION,\n },\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#replication']),\n ),\n },\n {\n name: 'erasure_codec',\n type: 'yt-select-single',\n caption: 'Erasure codec',\n tooltip: docsUrl(\n makeLink(UIFactory.docsUrls['storage:replication#erasure']),\n ),\n visibilityCondition: {\n when: 'storage._storageOption',\n isActive: (value: string) => value === StorageOptions.ERASURE,\n },\n extras: {\n items: erasureCodecs,\n hideFilter: true,\n width: 'max',\n },\n },\n ...(!hasStaticTables\n ? []\n : [\n {\n name: 'runMerge',\n type: 'tumbler' as const,\n caption: 'Run merge operation',\n tooltip: (\n <span>\n Merge operation is required to completely apply\n changes of storage attributes, it will be started with\n enabled force transform flag.\n </span>\n ),\n },\n ]),\n ...mergeNoticeAndError,\n ],\n },\n ...annotationTab,\n ]}\n />\n );\n}\n\nexport default function AttributesEditor() {\n const path = useSelector(getNavigationAttributesEditorPath);\n const visible = useSelector(getNavigationAttributesEditorVisible);\n\n if (!path?.length || !visible) {\n return null;\n }\n return <AttributesEditorLoaded />;\n}\n\nfunction validateReplicationFactor(str: string): string | undefined {\n const v = parseInt(str);\n if (!str || (String(str) === String(v) && v >= 1 && v <= 20)) {\n return undefined;\n }\n\n return 'The value must be an integer in range [1; 20]';\n}\n\nfunction validateStorage(storage: any) {\n const replication_factor = validateReplicationFactor(storage.replication_factor);\n if (storage._storageOption !== StorageOptions.REPLICATION || !replication_factor) {\n return undefined;\n }\n return {replication_factor};\n}\n\nfunction validateForm({storage}: FormValues) {\n const res: any = {\n storage: validateStorage(storage),\n };\n const ret = pickBy_(res, (v) => !isEmpty_(v));\n return ret;\n}\n","import ypath from '../../../../common/thor/ypath';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {makeCompressionCodecFinder} from '../../../../store/selectors/global/supported-features';\n\nexport const getRemoteCopyModalVisible = (state: RootState) =>\n state.navigation.modals.remoteCopyModal.showModal;\nexport const getRemoteCopyModalPaths = (state: RootState) =>\n state.navigation.modals.remoteCopyModal.paths;\nexport const getRemoteCopyAttributesMap = (state: RootState) =>\n state.navigation.modals.remoteCopyModal.attributesMap;\n\nexport const getRemoteCopyCodecs = createSelector(\n [getRemoteCopyModalPaths, getRemoteCopyAttributesMap, makeCompressionCodecFinder],\n (paths, attributesMap, findCompressionCodec) => {\n for (const path of paths) {\n const map = attributesMap[path];\n if (map) {\n const compCodec = findCompressionCodec(\n ypath.getValue(map, '/compression_codec') as string,\n );\n\n return {\n compression_codec: compCodec,\n erasure_codec: ypath.getValue(map, '/erasure_codec') as string,\n };\n }\n }\n return {};\n },\n);\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {\n getRemoteCopyModalPaths,\n getRemoteCopyModalVisible,\n} from '../../../store/selectors/navigation/modals/remote-copy-modal';\nimport {\n hideRemoteCopyModal,\n remoteCopy,\n} from '../../../store/actions/navigation/modals/remote-copy-modal';\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {YTError} from '../../../types';\nimport {RemoteCopyParams} from '../../../../@types/types';\nimport {AxiosError} from 'axios';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ntype Values = Omit<RemoteCopyParams, 'input_table_paths'> & {\n input_table_paths: Array<{title: string}>;\n};\n\nfunction RemoteCopyModal() {\n const dispatch = useDispatch();\n const visible = useSelector(getRemoteCopyModalVisible);\n const paths = useSelector(getRemoteCopyModalPaths);\n const cluster = useSelector(getCluster);\n\n const [error, setError] = React.useState<YTError | unknown>();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<Values>) => {\n try {\n setError(undefined);\n const {values} = form.getState();\n const {input_table_paths, pool, ...rest} = values;\n await dispatch(\n remoteCopy({\n ...rest,\n input_table_paths: map_(input_table_paths, 'title'),\n pool: pool,\n }),\n );\n } catch (e: unknown) {\n setError((e as AxiosError<YTError>)?.response?.data || e);\n throw e;\n }\n },\n [setError],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideRemoteCopyModal());\n }, []);\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n const calculateValueOnPoolsLoaded = React.useCallback(\n ({loadedPoolNames}: {loadedPoolNames: Array<string>}) => {\n const transferPool = find_(loadedPoolNames, (name) => name === `transfer_${cluster}`);\n return transferPool || '';\n },\n [cluster],\n );\n\n return !visible ? null : (\n <YTDFDialog<Values>\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n headerProps={{\n title: 'Remote copy',\n }}\n initialValues={{\n cluster_name: cluster,\n input_table_paths: pathsValues,\n schema_inference_mode: 'auto',\n output_table_path: pathsValues[0]?.title,\n override: false,\n }}\n fields={[\n {\n name: 'cluster_name',\n type: 'cluster',\n caption: 'Source cluster',\n extras: {\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'input_table_paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Input paths' : 'Input path',\n extras: {\n frozen: true,\n },\n },\n {\n name: 'dstCluster',\n type: 'cluster',\n caption: 'Destination cluster',\n required: true,\n extras: {\n excludeClusters: [cluster],\n width: 'max',\n },\n },\n {\n name: 'output_table_path',\n type: 'text',\n caption: 'Output path',\n required: true,\n },\n {\n name: 'override',\n type: 'tumbler',\n caption: 'Override output',\n },\n {\n name: 'copy_attributes',\n type: 'tumbler',\n caption: 'Copy user attributes',\n },\n {\n name: 'schema_inference_mode',\n type: 'yt-select-single',\n caption: 'Schema inference',\n extras: {\n items: [\n {\n value: 'auto',\n text: 'Auto',\n },\n {\n value: 'from_input',\n text: 'From input',\n },\n {\n value: 'from_output',\n text: 'From output',\n },\n ],\n width: 'max',\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n warning: (\n <>\n pool must have specified{' '}\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['operations:remote_copy'],\n 'limits',\n true,\n ),\n )}\n </>\n ),\n visibilityCondition: {\n when: 'dstCluster',\n isActive: (value) => Boolean(value),\n },\n required: true,\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({dstCluster}: Values) => {\n return {\n cluster: dstCluster,\n placeholder: `(cluster: ${dstCluster}) pool name`,\n calculateValueOnPoolsLoaded,\n allowEphemeral: true,\n };\n },\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nexport default React.memo(RemoteCopyModal);\n","import {RootState} from '../../../../store/reducers';\n\nexport const getNavigationTableEraseModalVisible = (state: RootState) =>\n state.navigation.modals.tableEraseModal.visible;\nexport const getNavigationTableEraseModalPath = (state: RootState) =>\n state.navigation.modals.tableEraseModal.path;\n","import React from 'react';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {makeLink} from '../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n hideTableEraseModal,\n runTableErase,\n} from '../../../store/actions/navigation/modals/table-erase-modal';\nimport {\n getNavigationTableEraseModalPath,\n getNavigationTableEraseModalVisible,\n} from '../../../store/selectors/navigation/modals/table-erase-modal';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ninterface FormValues {\n path: string;\n range: string;\n combine_chunks: boolean;\n}\n\nexport default function TableEraseModal() {\n const visible = useSelector(getNavigationTableEraseModalVisible);\n const path = useSelector(getNavigationTableEraseModalPath);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n try {\n const {range, combine_chunks} = form.getState().values;\n\n const [from, to] = range?.split(':') || [];\n await dispatch(\n runTableErase({\n path: path ?? '',\n from: from ? Number(from) : undefined,\n to: to ? Number(to) : undefined,\n combine_chunks,\n }),\n );\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [path, setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableEraseModal());\n }, [dispatch]);\n\n return (\n <YTDFDialog<FormValues>\n visible={visible}\n headerProps={{\n title: 'Erase table rows',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n pristineSubmittable={true}\n initialValues={{\n path,\n }}\n fields={[\n {\n name: 'path',\n type: 'plain',\n caption: 'Path',\n },\n {\n name: 'range',\n type: 'text',\n caption: 'Range',\n tooltip: (\n <span>\n {docsUrl(makeLink(UIFactory.docsUrls['operations:erase']))}\n Leave empty to erase all rows. Or use two numbers separated by colon.\n Each number might be skipped.\n <br />\n Examples: &quot;10:20&quot;, &quot;10:&quot;, &quot;:20&quot;\n </span>\n ),\n validator: validateRange,\n extras: {\n placeholder: '10:20',\n },\n },\n {\n name: 'combine_chunks',\n type: 'tumbler',\n caption: 'Combine chunks',\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nconst RANGE = /^(\\d+:)|(\\d+:\\d+)|(:\\d+)$/;\n\nfunction validateRange(value: string) {\n if (!value || RANGE.test(value)) {\n return undefined;\n }\n\n return 'Enter two numbers separated by colon, like \"10:20\" or \":20\" or \"10:\"';\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {DialogError, DialogField, YTDFDialog} from '../../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getNavigationTableAttributesValues,\n getNavigationTableSortError,\n getNavigationTableSortPaths,\n getNavigationTableSortSuggestColumns,\n getNavigationTableSortVisible,\n} from '../../../../store/selectors/navigation/modals/table-merge-sort-modal';\nimport {\n hideTableSortModal,\n isPathStaticTable,\n runTableSort,\n tableSortModalLoadColumns,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {getCurrentUserName} from '../../../../store/selectors/global';\nimport {makeLink} from '../../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport './TableSortModal.scss';\nimport {ColumnSortByInfo} from './TableSortByControl';\nimport {docsUrl} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {WaitForDefaultPoolTree} from '../../../../hooks/global-pool-trees';\n\nconst block = cn('table-sort-modal');\n\nexport default function TableSortModal() {\n const login = useSelector(getCurrentUserName);\n const visible = useSelector(getNavigationTableSortVisible);\n const paths = useSelector(getNavigationTableSortPaths);\n const suggestError = useSelector(getNavigationTableSortError);\n const suggestColumns = useSelector(getNavigationTableSortSuggestColumns);\n const attributeValues = useSelector(getNavigationTableAttributesValues);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: any) => {\n try {\n const {values} = form.getState();\n const {paths, outputPath, columns, pool, poolTree} = values;\n\n const spec = Object.assign(\n {\n input_table_paths: paths,\n output_table_path: {\n $value: outputPath,\n $attributes: attributeValues,\n },\n sort_by: map_(columns, (item: ColumnSortByInfo) => {\n return {\n name: item.name,\n sort_order: item.descending\n ? ('descending' as const)\n : ('ascending' as const),\n };\n }),\n },\n pool ? {pool} : {},\n poolTree ? {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 poolTree,\n allowEphemeral: true,\n };\n },\n },\n ...errorFields,\n ]}\n />\n )}\n </WaitForDefaultPoolTree>\n );\n}\n\ninterface FormValues {\n paths: Array<string>;\n outputPath: string;\n columns: Array<string>;\n poolTree: string;\n pool: string;\n}\n","import React from 'react';\n\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getNavigationTableAttributesValues,\n getNavigationTableMergeVisible,\n getNavigationTableSortError,\n getNavigationTableSortPaths,\n getNavigationTableSortSuggestColumns,\n} from '../../../../store/selectors/navigation/modals/table-merge-sort-modal';\nimport {\n hideTableMergeModal,\n isPathStaticTable,\n runTableMerge,\n tableSortModalLoadColumns,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {getCurrentUserName} from '../../../../store/selectors/global';\nimport {makeLink} from '../../../../navigation/Navigation/PathEditorModal/CreateTableModal/CreateTableModal';\nimport {parseBytes} from '../../../../utils';\nimport {docsUrl} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {WaitForDefaultPoolTree} from '../../../../hooks/global-pool-trees';\n\nexport default function TableMergeModal() {\n const login = useSelector(getCurrentUserName);\n const visible = useSelector(getNavigationTableMergeVisible);\n const paths = useSelector(getNavigationTableSortPaths);\n const suggestError = useSelector(getNavigationTableSortError);\n const suggestColumns = useSelector(getNavigationTableSortSuggestColumns);\n const attributeValues = useSelector(getNavigationTableAttributesValues);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n try {\n const {values} = form.getState();\n const {\n mode,\n paths,\n outputPath,\n columns,\n pool,\n poolTree,\n chunkSize,\n force_transform,\n combine_chunks,\n } = values;\n const chunkSizeBytes = parseBytes(chunkSize);\n const data_size_per_job = isNaN(chunkSizeBytes) ? undefined : chunkSizeBytes;\n const pool_trees = poolTree ? [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 {poolTree, placeholder: login, allowEphemeral: true};\n },\n },\n {\n name: 'force_transform',\n type: 'tumbler',\n caption: 'Force transform',\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ...(!suggestError\n ? []\n : [\n {\n name: 'suggestError',\n type: 'block' as const,\n extras: {\n children: <DialogError error={suggestError} />,\n },\n },\n ]),\n ]}\n />\n )}\n </WaitForDefaultPoolTree>\n );\n}\n\ninterface FormValues {\n mode: string;\n pool: string;\n poolTree: string;\n\n paths: Array<string>;\n outputPath: string;\n columns: Array<unknown>;\n chunkSize: string;\n force_transform: boolean;\n combine_chunks: boolean;\n}\n","import {RootState} from '../../../reducers';\n\nexport const getDynTablesStateModalVisible = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.showModal;\nexport const getDynTablesStateModalPaths = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.paths;\nexport const getDynTablesStateModalAction = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.action;\n","import React from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n dynTablesChangeState,\n hideDynTablesStateModal,\n} from '../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {\n getDynTablesStateModalAction,\n getDynTablesStateModalPaths,\n getDynTablesStateModalVisible,\n} from '../../../store/selectors/navigation/modals/dyn-tables-state-modal';\nimport {DynTablesStateModalState} from '../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {Warning} from '../../../components/Text/Text';\nimport {YTError} from '../../../types';\n\nimport './DynTablesStateModal.scss';\n\nconst block = cn('dyn-tables-state-modal');\n\nexport default function DynTablesStateModal() {\n const dispatch = useDispatch();\n\n const action = useSelector(getDynTablesStateModalAction);\n const paths = useSelector(getDynTablesStateModalPaths);\n const visible = useSelector(getDynTablesStateModalVisible);\n\n const [error, setError] = React.useState<YTError>();\n\n const onClose = React.useCallback(() => {\n dispatch(hideDynTablesStateModal());\n setError(undefined);\n }, [dispatch, setError]);\n\n const onAdd = React.useCallback(async () => {\n try {\n if (!action) {\n throw new Error('Action should be defined');\n }\n await dispatch(dynTablesChangeState(paths, action));\n } catch (e) {\n setError(e as any);\n throw e;\n }\n }, [dispatch, paths, action, setError]);\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n if (!visible) {\n return null;\n }\n\n const warning = renderWarning(action);\n\n return (\n <YTDFDialog\n visible\n onAdd={onAdd}\n onClose={onClose}\n pristineSubmittable={true}\n headerProps={{\n title: capitalize_(action),\n }}\n initialValues={{\n paths: pathsValues,\n }}\n fields={[\n {\n name: 'paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Paths' : 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n ...(!warning\n ? []\n : [\n {\n name: 'warning',\n type: 'block' as const,\n extras: {\n children: warning,\n },\n },\n ]),\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nconst WARN_TEXT: {[action: string]: string} = {\n unmount:\n 'Unmounted table will become inaccessible for reads and writes. Operation may take a while (usually up to 30 seconds). Do you want to proceed?',\n freeze: 'Frozen table will become read-only. Operation may take a while (usually up to 30 seconds). Do you want to proceed?',\n};\n\nfunction renderWarning(action: DynTablesStateModalState['action']) {\n const text = WARN_TEXT[action || ''];\n return !text ? null : <Warning>{text}</Warning>;\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getLinkToModalState = (state: RootState) => state.navigation.modals.linkToModal;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, DialogField, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getLinkToModalState} from '../../../store/selectors/navigation/modals/link-to-modal';\nimport {createLink, hideLinkToModal} from '../../../store/actions/navigation/modals/link-to-modal';\nimport {LinkToState} from '../../../store/reducers/navigation/modals/link-to-modal';\nimport {ytApiV3} from '../../../rum/rum-wrap-api';\n\nconst block = cn('table-sort-modal');\n\ntype LinkToModalState = Pick<LinkToState, 'path' | 'target'>;\n\nexport default function LinkToModal() {\n const [error, setError] = React.useState<any>();\n const {visible, path, target} = useSelector(getLinkToModalState);\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<LinkToModalState>) => {\n try {\n await dispatch(createLink(form.getState().values));\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideLinkToModal());\n }, [dispatch]);\n\n const errorFields: Array<DialogField<LinkToModalState>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n return !visible ? null : (\n <YTDFDialog<LinkToModalState>\n className={block()}\n visible={true}\n headerProps={{\n title: 'Create link',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n path,\n target,\n }}\n fields={[\n {\n name: 'path',\n type: 'path',\n caption: 'Link path',\n required: true,\n validator: async (path: string) => {\n try {\n const res = await ytApiV3.exists({path});\n if (res) {\n return 'Link path already exists';\n }\n return undefined;\n } catch (err) {\n const e = err as Error;\n return e?.message || 'Unexpected type of error: ' + typeof e;\n }\n },\n },\n {\n name: 'target',\n type: 'path',\n caption: 'Target path',\n required: true,\n validator: async (path: string) => {\n try {\n const res = await ytApiV3.exists({path});\n if (!res) {\n return 'Target path should exist';\n }\n return undefined;\n } catch (err) {\n const e = err as Error;\n return e?.message || 'Unexpected type of error: ' + typeof e;\n }\n },\n },\n ...errorFields,\n ]}\n />\n );\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getCreateACOModalState = (state: RootState) => state.navigation.modals.createACOModal;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, DialogField, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getCreateACOModalState} from '../../../store/selectors/navigation/modals/create-aco-modal';\nimport {closeCreateACOModal, createACO} from '../../../store/actions/navigation/modals/create-aco';\n\nconst block = cn('table-sort-modal');\n\ntype CreateACOFormState = {\n namespace: string;\n name: string;\n path: string;\n};\n\nexport default function CreateACOModal() {\n const [error, setError] = React.useState<any>();\n const {visible, path, namespace} = useSelector(getCreateACOModalState);\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<CreateACOFormState>) => {\n try {\n await dispatch(createACO(form.getState().values));\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(closeCreateACOModal());\n }, [dispatch]);\n\n const errorFields: Array<DialogField<CreateACOFormState>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n if (visible) {\n return (\n <YTDFDialog<CreateACOFormState>\n className={block()}\n visible={true}\n headerProps={{\n title: 'Create ACO',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n path,\n namespace,\n }}\n fields={[\n {\n name: 'name',\n type: 'text',\n caption: 'ACO name',\n required: true,\n },\n ...errorFields,\n ]}\n />\n );\n }\n\n return null;\n}\n","import React, {Component, Fragment} from 'react';\nimport {StickyContainer} from 'react-sticky';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {updateTitle} from '../../../store/actions/global';\n\nimport {\n CopyObjectModal,\n CreateDirectoryModal,\n DeleteObjectModal,\n MoveObjectModal,\n RestoreObjectModal,\n} from './PathEditorModal';\nimport RequestPermissions from '../../../pages/navigation/tabs/ACL/RequestPermissions/RequestPermissions';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport ContentViewer from './ContentViewer/ContentViewer';\nimport {checkContentIsSupported} from './ContentViewer/helpers';\nimport Error from '../../../components/Error/Error';\nimport {Info} from '../../../components/Info/Info';\nimport Tabs from '../../../components/Tabs/Tabs';\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 {getPermissionDeniedError} from '../../../utils/errors';\nimport {getParentPath} from '../../../utils/navigation';\nimport UIFactory from '../../../UIFactory';\n\nimport './Navigation.scss';\nimport {UI_TAB_SIZE} from '../../../constants/global';\nimport {CellPreviewModal} from '../../../containers/CellPreviewModal/CellPreviewModal';\n\nconst block = cn('navigation');\n\nfunction renderModals() {\n return (\n <Fragment>\n <RestoreObjectModal />\n <CreateDirectoryModal />\n <MoveObjectModal />\n <CopyObjectModal />\n <DeleteObjectModal />\n <AttributesEditor />\n <TableEraseModal />\n <TableSortModal />\n <TableMergeModal />\n <DynTablesStateModal />\n <LinkToModal />\n <CreateACOModal />\n <RemoteCopyModal />\n <CellPreviewModal />\n </Fragment>\n );\n}\n\nclass Navigation extends Component {\n static propTypes = {\n // from connect\n cluster: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n isIdmSupported: PropTypes.bool.isRequired,\n transaction: PropTypes.string,\n parsedPath: PropTypes.object,\n type: PropTypes.string,\n\n hasError: PropTypes.bool,\n error: PropTypes.shape({\n message: PropTypes.string,\n inner_errors: PropTypes.arrayOf(\n PropTypes.shape({\n message: PropTypes.string,\n details: PropTypes.shape({\n code: PropTypes.number,\n object_type: PropTypes.string,\n }),\n }),\n ),\n }),\n loaded: PropTypes.bool,\n loading: PropTypes.bool,\n\n setMode: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n onTransactionChange: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n this.props.updateView({trackVisit: true});\n this.updateTitleWithPath();\n }\n\n componentDidUpdate(prevProps) {\n const {transaction, path, updateView, onTransactionChange} = this.props;\n const {transaction: prevTransaction, path: prevPath} = prevProps;\n\n if (transaction !== prevTransaction) {\n onTransactionChange();\n } else if (path !== prevPath) {\n updateView({trackVisit: true});\n }\n\n if (this.props.parsedPath !== prevProps.parsedPath) {\n this.updateTitleWithPath();\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: ''});\n }\n\n updateTitleWithPath() {\n const {parsedPath, updateTitle} = this.props;\n updateTitle({path: parsedPath ? parsedPath.getKey() : ''});\n }\n\n get items() {\n const {tabs, setMode} = this.props;\n\n return tabs.map((tab) => {\n if (tab.hotkey) {\n return {\n ...tab,\n hotkey: tab.hotkey.map(({keys, tab, scope}) => {\n return {\n keys,\n scope,\n handler: () => setMode(tab),\n };\n }),\n };\n }\n\n return tab;\n });\n }\n\n onTabChange = (value) => {\n const {setMode} = this.props;\n setMode(value);\n };\n\n renderTabs() {\n const {mode, tabSize} = this.props;\n const items = map_(this.items, (item) => ({\n ...item,\n text: item.text || hammer.format['ReadableField'](item.value),\n show: true,\n }));\n\n return (\n <Tabs\n onTabChange={this.onTabChange}\n active={mode}\n items={items}\n underline\n size={tabSize}\n />\n );\n }\n\n renderEditButton() {\n return (\n <div className={block('edit-metadata')}>\n <Button\n size=\"m\"\n className={block('edit-metadata-btn')}\n title={'Edit metadata'}\n onClick={this.onEditButtonClick}\n >\n <Icon awesome={'pencil'} />\n Edit metadata\n </Button>\n </div>\n );\n }\n\n onEditButtonClick = () => {\n const {path, showNavigationAttributesEditor} = this.props;\n showNavigationAttributesEditor([path]);\n };\n\n renderPlaceholder() {\n const {type = 'unknown', mode, loading} = this.props;\n\n if (type === 'unknown' && loading) {\n return null;\n }\n\n return (\n <div className=\"navigation__warning elements-message elements-message_theme_warning\">\n {mode === Tab.CONTENT ? (\n <p className=\"elements-message__paragraph\">\n Viewing node of type <strong>{type}</strong> is not supported in navigator.\n </p>\n ) : (\n <p className=\"elements-message__paragraph\">\n Viewing node attribute <strong>{mode}</strong> is not supported in\n navigator.\n </p>\n )}\n </div>\n );\n }\n\n renderView() {\n const {type, mode} = this.props;\n if (checkContentIsSupported(type, mode)) {\n return <ContentViewer type={type} mode={mode} />;\n }\n\n return this.renderPlaceholder();\n }\n\n renderError() {\n const {\n error: {message, details},\n isIdmSupported,\n } = this.props;\n\n // Looking for permission denied error\n const permissionDeniedError = getPermissionDeniedError(details);\n const isPermissionDenied = permissionDeniedError && isIdmSupported;\n\n return (\n <div>\n <div className={block('error-block')}>\n <Error\n className={block('error-block')}\n message={message}\n error={permissionDeniedError ?? details}\n />\n {isPermissionDenied && this.renderRequestPermission(permissionDeniedError)}\n </div>\n </div>\n );\n }\n\n renderRequestPermission(error) {\n const {object_type: objectType, path: errorPath} = error.attributes;\n const {path: currentPath, cluster} = this.props;\n const isRequestPermissionsForPathAllowed = objectType === 'map_node';\n\n const path = errorPath ?? currentPath;\n\n const pathForRequest = isRequestPermissionsForPathAllowed ? path : getParentPath(path);\n const textForRequest = isRequestPermissionsForPathAllowed\n ? 'Request permission'\n : 'Request permission for parent node';\n\n return (\n <div>\n {!isRequestPermissionsForPathAllowed &&\n this.renderRequestPermissionIsNotAllowed(objectType)}\n\n <RequestPermissions\n className={block('error-action-button')}\n buttonClassName={block('request-permissions-button')}\n parentPath={pathForRequest}\n path={pathForRequest}\n cluster={cluster}\n buttonText={textForRequest}\n buttonProps={{size: 'l', width: 'max'}}\n />\n </div>\n );\n }\n\n renderRequestPermissionIsNotAllowed(objectType) {\n return (\n <Info className={block('error-block')}>\n It is not possible to request access to the{' '}\n {hammer.format['Readable'](objectType, {caps: 'none'})}. Please request access to\n the parent directory.\n </Info>\n );\n }\n\n render() {\n const {loaded, hasError} = this.props;\n\n return (\n <ErrorBoundary>\n <div className=\"navigation elements-main-section\">\n <StickyContainer>\n <div className={block('header')}>\n <NavigationPermissionsNotice />\n\n <div className={block('tabs')}>\n {this.renderEditButton()}\n {this.renderTabs()}\n </div>\n </div>\n\n <div className={block('main')}>\n {loaded && this.renderView()}\n {hasError && this.renderError()}\n </div>\n </StickyContainer>\n\n {UIFactory.yqlWidgetSetup?.renderWidget()}\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 from 'react';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites from '../../../components/Favourites/Favourites';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getFavouritePaths, isCurrentPathInFavourites} from '../../../store/selectors/favourites';\nimport {getActualPath, getPath, getTransaction} from '../../../store/selectors/navigation';\nimport {navigationToggleFavourite} from '../../../store/actions/favourites';\nimport {\n clearTransaction,\n setTransaction,\n updatePath,\n updateView,\n} from '../../../store/actions/navigation';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n// @ts-ignore\nimport metrics from '../../../common/utils/metrics';\n\nimport {Breadcrumbs, BreadcrumbsItem} from '@gravity-ui/uikit';\nimport {\n getMode,\n getNavigationBreadcrumbs,\n getNavigationRestorePath,\n} from '../../../store/selectors/navigation/navigation';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeRoutedURL} from '../../../store/location';\nimport Link from '../../../components/Link/Link';\nimport Editor from '../../../components/Editor/Editor';\nimport Button from '../../../components/Button/Button';\nimport Icon from '../../../components/Icon/Icon';\n\nimport {Page} from '../../../constants';\nimport {restoreObject} from '../../../store/actions/navigation/modals/restore-object';\nimport {inTrash} from '../../../utils/navigation/restore-object';\nimport {EditButton} from '../../../components/EditableAsText/EditableAsText';\nimport PathEditor from '../../../containers/PathEditor/PathEditor';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {Tab} from '../../../constants/navigation';\n\nimport './NavigationTopRowContent.scss';\nimport {Escaped} from '../../../components/Text/Text';\nimport {useHistory} from 'react-router';\n\nconst block = cn('navigation-top-row-content');\n\nfunction NavigationTopRowContent() {\n const defaultPath = useSelector(getNavigationDefaultPath);\n return (\n <RowWithName page={Page.NAVIGATION} className={block()} urlParams={{path: defaultPath}}>\n <NavigationFavourites />\n <EditableNavigationBreadcrumbs />\n <NavigationTools />\n </RowWithName>\n );\n}\n\nfunction NavigationFavourites() {\n const dispatch = useDispatch();\n\n const favourites = useSelector(getFavouritePaths);\n\n const isInFavourites = useSelector(isCurrentPathInFavourites);\n const path = useSelector(getPath);\n\n const handleToggle = React.useCallback(() => {\n dispatch(navigationToggleFavourite(path));\n }, [dispatch, path]);\n\n const handleItemClick = React.useCallback(\n ({path}: {path: string}) => {\n dispatch(updatePath(path));\n },\n [dispatch],\n );\n\n return (\n <Favourites\n theme={'clear'}\n isActive={isInFavourites}\n items={favourites || []}\n onItemClick={handleItemClick}\n onToggle={handleToggle}\n />\n );\n}\n\nfunction NavigationPathToClipboard() {\n const path = useSelector(getPath);\n return (\n <span className={block('to-clipboard')}>\n <ClipboardButton\n text={path}\n title=\"Copy to clipboard [Shift+P]\"\n className={'navigation__instruments-control'}\n hotkey=\"shift+p\"\n onCopy={onCopyToClipboard}\n />\n </span>\n );\n}\n\nfunction onCopyToClipboard() {\n metrics.countEvent({'navigation_copy-path': 'clicked'});\n}\n\nfunction EditableNavigationBreadcrumbs() {\n const [editMode, setEditMode] = React.useState(false);\n\n const toggleEditMode = React.useCallback(() => {\n setEditMode(!editMode);\n }, [setEditMode, editMode]);\n\n return (\n <div className={block('editable-breadcrumbs')}>\n {editMode ? (\n <NavigationPathEditor hideEditor={toggleEditMode} />\n ) : (\n <React.Fragment>\n <NavigationBreadcrumbs onEdit={toggleEditMode} />\n <EditButton onClick={toggleEditMode} />\n <NavigationPathToClipboard />\n </React.Fragment>\n )}\n </div>\n );\n}\n\nfunction NavigationPathEditor({hideEditor}: {hideEditor: () => void}) {\n const dispatch = useDispatch();\n const actualPath = useSelector(getActualPath);\n\n const handleApply = React.useCallback(\n (path: string) => {\n if (path !== actualPath) {\n dispatch(updatePath(path.endsWith('/') ? path.slice(0, -1) : path));\n }\n hideEditor();\n },\n [hideEditor],\n );\n\n return (\n <PathEditor\n className={block('path-editor')}\n autoFocus\n defaultPath={actualPath}\n onApply={handleApply}\n onCancel={hideEditor}\n onBlur={hideEditor}\n onFocus={(e) => e.target.select()}\n />\n );\n}\n\nfunction NavigationBreadcrumbs({onEdit}: {onEdit: () => void}) {\n const bcItems = useSelector(getNavigationBreadcrumbs);\n const mode = useSelector(getMode);\n const history = useHistory();\n const items = React.useMemo(() => {\n return map_(bcItems, ({text, state}) => {\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 text,\n url,\n state,\n action: (event: any) => {\n event.preventDefault();\n event.stopPropagation();\n if (!event.ctrlKey && !event.metaKey && event.button !== 1) {\n history.push(url);\n } else {\n window.open(url);\n }\n },\n };\n });\n }, [bcItems, mode]);\n\n const cluster = useSelector(getCluster);\n\n const renderItem = React.useCallback(\n (item: BreadcrumbsItem, isCurrent: boolean) => {\n return <NavigationBcItem {...{item, isCurrent, onEdit}} />;\n },\n [cluster, onEdit],\n );\n\n const renderRoot = React.useCallback(\n (item: BreadcrumbsItem, isCurrent: boolean) => {\n return (\n <NavigationBcItem\n item={{\n ...item,\n text: '/',\n }}\n {...{isCurrent, isRoot: true, onEdit}}\n />\n );\n },\n [cluster, onEdit],\n );\n\n return (\n <div className={block('breadcrumbs')}>\n <Breadcrumbs\n className={block('breadcrumbs')}\n items={items}\n lastDisplayedItemsCount={2}\n firstDisplayedItemsCount={1}\n renderItemContent={renderItem}\n renderRootContent={renderRoot}\n />\n </div>\n );\n}\n\nfunction NavigationBcItem({\n item,\n isCurrent,\n isRoot,\n onEdit,\n}: {\n item: BreadcrumbsItem;\n isCurrent: boolean;\n isRoot?: boolean;\n onEdit: () => void;\n}) {\n const url = (item as any).url;\n\n return (\n <Link\n className={block('breadcrumbs-link', {\n current: isCurrent,\n root: isRoot,\n })}\n url={url}\n routed\n onClick={\n !isCurrent\n ? (e) => {\n e.preventDefault();\n }\n : (e) => {\n onEdit();\n e.preventDefault();\n }\n }\n >\n {!isRoot ? (\n <Escaped text={item.text} />\n ) : (\n <span className={block('breadcrumbs-root')}>\n <Icon awesome={'folder-tree'} face={'solid'} />\n </span>\n )}\n </Link>\n );\n}\n\nfunction NavigationTools() {\n return (\n <div className={block('tools')}>\n <Transaction />\n <RefreshButton />\n <RestoreButton />\n </div>\n );\n}\n\nfunction Transaction() {\n const dispatch = useDispatch();\n\n const cluster = useSelector(getCluster);\n const transaction = useSelector(getTransaction);\n const [editMode, setEditMode] = React.useState(false);\n\n const handleClearTransaction = React.useCallback(() => {\n dispatch(clearTransaction());\n }, [dispatch]);\n\n const handleEdit = React.useCallback(\n (value: string) => {\n dispatch(setTransaction(value));\n setEditMode(false);\n },\n [dispatch, setEditMode],\n );\n\n const toggleEditMode = React.useCallback(() => {\n setEditMode(!editMode);\n }, [setEditMode, editMode]);\n\n if (transaction) {\n return (\n <div className={block('transaction')}>\n <span className=\"elements-ellipsis\">\n <Link\n routed\n url={`/${cluster}/${Page.NAVIGATION}?path=//sys/transactions/${transaction}`}\n >\n {transaction}\n </Link>\n </span>\n <Button\n size=\"m\"\n view=\"flat-secondary\"\n title=\"Clear transaction\"\n onClick={handleClearTransaction}\n >\n <Icon awesome=\"times\" />\n </Button>\n </div>\n );\n } else {\n return editMode ? (\n <Editor\n size=\"s\"\n scope=\"transaction-editor\"\n visible={true}\n value={transaction}\n placeholder=\"Enter id...\"\n onApply={handleEdit}\n onCancel={toggleEditMode}\n cancelOnBlur\n />\n ) : (\n <Button view=\"flat-secondary\" size=\"m\" title=\"Set transaction\" onClick={toggleEditMode}>\n <Icon awesome=\"code-branch\" />\n </Button>\n );\n }\n}\n\nfunction RefreshButton() {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n metrics.countEvent({\n navigation_refresh: 'clicked',\n });\n dispatch(updateView());\n }, [dispatch]);\n\n return (\n <Button\n size=\"s\"\n view=\"flat-secondary\"\n title={'Refresh page [Shift+R]'}\n hotkey={[{keys: 'shift+r', handler: handleClick, scope: 'all'}]}\n onClick={handleClick}\n >\n <Icon awesome={'sync-alt'} />\n </Button>\n );\n}\n\nfunction RestoreButton() {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n const restorePath = useSelector(getNavigationRestorePath);\n\n const handleRestore = React.useCallback(() => {\n dispatch(restoreObject(path, restorePath));\n }, [dispatch, restorePath, path]);\n\n return !restorePath || !inTrash(path) ? null : (\n <span className={block('restore')}>\n <Button view=\"action\" size=\"s\" onClick={handleRestore}>\n <Icon awesome=\"undo\" />\n &nbsp;Restore\n </Button>\n </span>\n );\n}\n\nexport default React.memo(NavigationTopRowContent);\n","import React from 'react';\nimport {getSchedulingOperationsLoadingStatus} from '../../../../../store/selectors/scheduling/expanded-pools';\nimport {useSelector} from 'react-redux';\nimport Loader from '../../../../../components/Loader/Loader';\n\nfunction SchedulingOperationsLoader() {\n const loading = useSelector(getSchedulingOperationsLoadingStatus);\n return <Loader visible={loading} />;\n}\n\nexport default React.memo(SchedulingOperationsLoader);\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport {\n DELETE_PERMISSION,\n IdmObjectType,\n LOAD_DATA,\n REQUEST_PERMISSION,\n UPDATE_ACL,\n} from '../../constants/acl';\nimport {getPools, getTree} from '../../store/selectors/scheduling/scheduling';\nimport {computePathItems} from '../../utils/scheduling/scheduling';\nimport {\n YTPermissionTypeUI,\n checkUserPermissionsUI,\n getAcl,\n getResponsible,\n} from '../../utils/acl/acl-api';\nimport {convertFromUIPermissions, prepareAclSubject} from '../../utils/acl';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport UIFactory from '../../UIFactory';\nimport {AclAction, HasIdmKind} from '../../store/reducers/acl/acl';\nimport {isCancelled} from '../../utils/cancel-helper';\nimport {RootState} from '../../store/reducers';\nimport {IdmKindType, PreparedAclSubject, ResponsibleType, Role} from '../../utils/acl/acl-types';\nimport {CheckPermissionResult} from '../../../shared/utils/check-permission';\n\ntype ThunkAclAction<T = unknown> = ThunkAction<T, RootState, unknown, AclAction>;\n\nconst prepareUserPermissions = (\n userPermissions: Array<CheckPermissionResult>,\n idmKind: IdmKindType,\n) => {\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind];\n return map_(userPermissions, (item, index) => {\n return {\n type: permissionTypes[index],\n action: item.action,\n };\n });\n};\n\ntype HasNormPoolTree = {normalizedPoolTree?: string};\n\nfunction getPathToCheckPermissions(\n idmKind: IdmKindType,\n state: RootState,\n entityName: string,\n poolTree?: string,\n) {\n switch (idmKind) {\n case IdmObjectType.ACCESS_CONTROL_OBJECT:\n case IdmObjectType.UI_EFFECTIVE_ACL:\n case IdmObjectType.PATH:\n return entityName;\n case IdmObjectType.ACCOUNT:\n return `//sys/accounts/${entityName}`;\n case IdmObjectType.POOL: {\n const pools = getPools(state);\n if (pools?.length) {\n const poolPath = computePathItems(pools, entityName).filter(\n (item) => item !== ROOT_POOL_NAME,\n );\n return `//sys/pool_trees/${poolTree}/${poolPath.join('/')}`;\n } else {\n const params = new URLSearchParams(window.location.search);\n const path = params.get('path');\n if (!path) {\n break;\n }\n return path;\n }\n }\n case IdmObjectType.TABLET_CELL_BUNDLE: {\n return `//sys/tablet_cell_bundles/${entityName}`;\n }\n }\n throw new Error('Unexpected value of parameter idmKind');\n}\n\nexport function loadAclData(\n {path, idmKind}: {path: string} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n options: {userPermissionsPath?: string} = {userPermissionsPath: undefined},\n): ThunkAclAction {\n return (dispatch, getState) => {\n const state = getState();\n const {login, cluster = ''} = state.global;\n\n dispatch({type: LOAD_DATA.REQUEST, idmKind});\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind];\n\n const {userPermissionsPath} = options;\n\n const pathToCheckPermissions = getPathToCheckPermissions(idmKind, state, path, poolTree);\n const pathToCheckUserPermissions = userPermissionsPath\n ? getPathToCheckPermissions(idmKind, state, userPermissionsPath, poolTree)\n : pathToCheckPermissions;\n\n return Promise.all([\n getAcl({\n cluster,\n path,\n kind: idmKind,\n poolTree,\n sysPath: pathToCheckPermissions,\n }),\n checkUserPermissionsUI(pathToCheckUserPermissions, login, permissionTypes),\n getResponsible({\n cluster,\n path,\n kind: idmKind,\n poolTree,\n sysPath: pathToCheckPermissions,\n }),\n ])\n .then(([acl, userPermissions, responsible]) => {\n dispatch({\n type: LOAD_DATA.SUCCESS,\n data: {\n path,\n version: responsible.version,\n auditors: responsible.auditors,\n objectPermissions: acl.permissions,\n columnGroups: acl.column_groups,\n responsible: responsible.responsible,\n userPermissions: prepareUserPermissions(userPermissions, idmKind),\n readApprovers: responsible.readApprovers,\n disableAclInheritance: responsible.disableAclInheritance,\n bossApproval: responsible.bossApproval,\n disableInheritanceResponsible: responsible.disableInheritanceResponsible,\n },\n idmKind,\n });\n })\n .catch((error) => {\n dispatch({\n type: LOAD_DATA.FAILURE,\n data: {\n error: error?.response?.data || error?.response || error,\n },\n idmKind,\n });\n });\n };\n}\n\nexport function deletePermissions(\n {\n roleKey,\n idmKind,\n path,\n itemToDelete,\n }: HasIdmKind & {path: string; roleKey: string; itemToDelete: PreparedAclSubject},\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction<Promise<void>> {\n return (dispatch, getState) => {\n const {cluster = ''} = getState().global;\n const state = getState();\n\n dispatch({\n type: DELETE_PERMISSION.REQUEST,\n data: roleKey,\n idmKind,\n });\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n\n const deletePermissionsPath = getPathToCheckPermissions(idmKind, state, path, poolTree);\n\n return UIFactory.getAclApi()\n .deleteRole({\n idmKind,\n cluster,\n roleKey,\n path,\n sysPath: deletePermissionsPath,\n itemToDelete,\n })\n .then(() => {\n dispatch({\n type: DELETE_PERMISSION.SUCCESS,\n data: roleKey,\n idmKind,\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n dispatch({type: DELETE_PERMISSION.CANCELLED, idmKind});\n return undefined;\n } else {\n dispatch({\n type: DELETE_PERMISSION.FAILURE,\n data: error?.response?.data || error?.response || error,\n idmKind,\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nfunction dateToDaysAfterNow(date?: Date) {\n if (!date) {\n return undefined;\n }\n\n return Math.round((date.getTime() - Date.now()) / 3600 / 24 / 1000);\n}\n\nexport type PermissionToRequest = {\n path: string;\n cluster: string;\n permissions: {[x: string]: Array<YTPermissionTypeUI>} | null;\n subjects: Array<ResponsibleType>;\n inheritance_mode?: string;\n duration?: Date;\n comment?: string;\n permissionFlags?: Record<string, boolean>;\n readColumnGroup?: string;\n readColumns?: Array<string>;\n};\n\nexport function requestPermissions(\n {values, idmKind}: {values: PermissionToRequest} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction {\n return (dispatch, getState) => {\n const state = getState();\n const {\n global: {cluster = ''},\n } = state;\n\n dispatch({\n type: REQUEST_PERMISSION.REQUEST,\n idmKind,\n });\n\n const {requestPermissionsFlags = {}} = UIFactory.getAclApi();\n\n const daysAfter = dateToDaysAfterNow(values.duration);\n const roles: Array<Role> = [];\n const rolesGroupedBySubject = [];\n const {inheritance_mode, permissionFlags, readColumnGroup, readColumns} = values;\n for (const item of values.subjects) {\n const subject = prepareAclSubject(item);\n const commonPart = {\n subject,\n deprive_after_days: daysAfter,\n ...(inheritance_mode ? {inheritance_mode} : {}),\n };\n Object.entries(requestPermissionsFlags).forEach(([key, flagInfo]) => {\n flagInfo?.applyToRequestedRole(commonPart, permissionFlags?.[key]);\n });\n const flattenPermissions = flatten_(map_(values.permissions));\n if (flattenPermissions.length) {\n rolesGroupedBySubject.push({\n permissions: flattenPermissions,\n ...commonPart,\n });\n }\n if (readColumns?.length) {\n rolesGroupedBySubject.push({\n ...rolesGroupedBySubject[rolesGroupedBySubject.length - 1],\n ...commonPart,\n columns: readColumns,\n permissions: ['read' as const],\n });\n }\n forEach_(values.permissions, (permissions) => {\n roles.push({\n ...convertFromUIPermissions({permissions}),\n ...commonPart,\n });\n });\n if (readColumnGroup) {\n roles.push({\n role_type: 'column_read',\n column_group_id: readColumnGroup,\n ...commonPart,\n });\n }\n }\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n\n const requestPermissionsPath = getPathToCheckPermissions(\n idmKind,\n state,\n values.path,\n poolTree,\n );\n\n //cluster, path, roles, comment, columns\n return UIFactory.getAclApi()\n .requestPermissions({\n cluster,\n path: values.path,\n sysPath: requestPermissionsPath,\n roles,\n roles_grouped: rolesGroupedBySubject.map(convertFromUIPermissions),\n comment: values.comment ?? '',\n kind: idmKind,\n poolTree,\n })\n .then(() => {\n dispatch({\n type: REQUEST_PERMISSION.SUCCESS,\n idmKind,\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n dispatch({type: REQUEST_PERMISSION.CANCELLED, idmKind});\n return undefined;\n } else {\n dispatch({\n type: REQUEST_PERMISSION.FAILURE,\n data: error?.response?.data || error?.response || error,\n idmKind,\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function cancelRequestPermissions({idmKind}: HasIdmKind) {\n return {type: REQUEST_PERMISSION.CANCELLED, idmKind};\n}\n\nexport interface UpdateAclValues {\n responsibleApproval: Array<ResponsibleType>;\n auditors: Array<ResponsibleType>;\n readApprovers: Array<ResponsibleType>;\n inheritanceResponsible: boolean;\n bossApproval: boolean;\n inheritAcl: boolean;\n comment?: string;\n}\n\nexport function updateAcl(\n {\n path,\n values,\n version,\n idmKind,\n }: {path: string; values: UpdateAclValues; version?: string} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction {\n return (dispatch, getState) => {\n const state = getState();\n const {\n global: {cluster = ''},\n } = getState();\n\n dispatch({\n type: UPDATE_ACL.REQUEST,\n idmKind,\n });\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n return UIFactory.getAclApi()\n .updateAcl(cluster, path, {\n responsible: values.responsibleApproval,\n auditors: values.auditors,\n disableInheritance: !values.inheritanceResponsible,\n bossApproval: values.bossApproval,\n inheritAcl: values.inheritAcl,\n readApprovers: values.readApprovers,\n version,\n idmKind,\n poolTree,\n comment: values.comment,\n })\n .then(() => {\n dispatch({\n type: UPDATE_ACL.SUCCESS,\n idmKind,\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n return dispatch({type: UPDATE_ACL.CANCELLED, idmKind});\n } else {\n const data = error?.response?.data || error?.response || error;\n dispatch({\n type: UPDATE_ACL.FAILURE,\n data,\n idmKind,\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function cancelUpdateAcl({idmKind}: HasIdmKind): AclAction {\n return {type: UPDATE_ACL.CANCELLED, idmKind};\n}\n","import {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {\n getParsedError,\n parseErrorFromResponse,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\n\ntype LoadDynamicTableRequest = (props: {\n setup: unknown;\n parameters: unknown;\n cancellation?: unknown;\n reverseRows?: boolean;\n}) => Promise<{\n columns: string[];\n rows: UnipikaValue[];\n yqlTypes: TypeArray[] | null;\n}>;\n\nexport const readDynamicTable: LoadDynamicTableRequest = async ({\n setup,\n parameters,\n cancellation,\n reverseRows,\n}) => {\n const {data} = await ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters,\n cancellation,\n });\n\n const error = parseErrorFromResponse(data);\n if (error) return Promise.reject(getParsedError(error));\n\n const {columns, rows, yqlTypes} = prepareRows(data, reverseRows);\n return {columns, rows, yqlTypes};\n};\n","import {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {\n getParsedError,\n parseErrorFromResponse,\n prepareHeaders,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\n\ntype LoadStaticTableRows = (props: {\n setup: unknown;\n parameters: unknown;\n cancellation?: unknown;\n reverseRows?: boolean;\n}) => Promise<{\n columns: string[];\n rows: UnipikaValue[];\n omittedColumns: string[];\n yqlTypes: TypeArray[] | null;\n}>;\n\nexport const readStaticTable: LoadStaticTableRows = async ({\n setup,\n parameters,\n cancellation,\n reverseRows,\n}) => {\n const {data, headers} = await ytApiV3Id.readTable(YTApiId.tableRead, {\n setup,\n parameters,\n cancellation,\n });\n\n const error = parseErrorFromResponse(data);\n if (error) return Promise.reject(getParsedError(error));\n\n const {columns, rows, yqlTypes} = prepareRows(data, reverseRows);\n const omittedColumns = prepareHeaders(headers);\n\n return {columns, omittedColumns, rows, yqlTypes};\n};\n","import {ytApiV4} from '../../../../rum/rum-wrap-api';\nimport {getPath} from '../../../selectors/navigation';\nimport {batch} from 'react-redux';\nimport {getDefaultRequestOutputFormat} from '../../../../utils/navigation/content/table/table';\nimport {CELL_PREVIEW, PREVIEW_LIMIT} from '../../../../constants/modals/cell-preview';\nimport {isCancelled} from '../../../../utils/cancel-helper';\nimport {\n CellPreviewActionType,\n cellPreviewCancelHelper,\n openCellPreview,\n} from '../../modals/cell-preview';\nimport unipika from '../../../../common/thor/unipika';\nimport {getOffsetValue} from '../../../selectors/navigation/content/table';\n\nexport const showCellPreviewModal = (columnName: string, index: number): CellPreviewActionType => {\n return async (dispatch, getState) => {\n const path = getPath(getState());\n const offset = getOffsetValue(getState());\n\n const rowIndex = typeof offset === 'number' ? index + offset : index;\n\n const cellPath = `${path}{${columnName}}[#${rowIndex}:#${rowIndex + 1}]`;\n\n const ytCliDownloadCommand = `yt read-table '${cellPath}' --format json`;\n\n batch(() => {\n dispatch({type: CELL_PREVIEW.REQUEST, data: {ytCliDownloadCommand}});\n dispatch(openCellPreview());\n });\n\n const output_format: any = getDefaultRequestOutputFormat({\n stringLimit: PREVIEW_LIMIT,\n });\n\n output_format.$attributes.value_format = 'yql';\n\n try {\n const json = await ytApiV4.readTable({\n parameters: {\n path: cellPath,\n output_format,\n },\n cancellation: cellPreviewCancelHelper.removeAllAndSave,\n });\n\n const parsed = JSON.parse(json);\n\n const column = parsed.rows[0][columnName];\n\n const value = column[0];\n const typeIndex = column[1];\n\n const {$type} = unipika.converters.yql([value, parsed.yql_type_registry[typeIndex]], {\n maxStringSize: undefined,\n maxListSize: undefined,\n treatValAsData: true,\n });\n\n const isIncomplete = column.$incomplete;\n const noticeText = isIncomplete\n ? 'Unable to load content more than 16MiB. Please use the command bellow to load it locally.'\n : 'You could use the command bellow to load it locally.';\n\n dispatch({\n type: CELL_PREVIEW.SUCCESS,\n data: {data: {$type, $value: value}, noticeText},\n });\n } catch (error: any) {\n if (!isCancelled(error)) {\n dispatch({type: CELL_PREVIEW.FAILURE, data: {error}});\n }\n }\n };\n};\n","import {RootState} from '../reducers';\n\nexport function getExecuteBatchState(state: RootState) {\n return state.executeBatch;\n}\n\nexport const getApproversSubjectFilter = (state: RootState) => state.aclFilters.approversSubject;\nexport const getObjectSubjectFilter = (state: RootState) => state.aclFilters.objectSubject;\nexport const getObjectPermissionsFilter = (state: RootState) => state.aclFilters.objectPermissions;\nexport const getAclFilterColumns = (state: RootState) => state.aclFilters.columnsFilter;\nexport const getAclFilterColumnGroupName = (state: RootState) =>\n state.aclFilters.columnGroupNameFilter;\nexport const getAclFilterExpandedSubjects = (state: RootState) => state.aclFilters.expandedSubjects;\nexport const getAclCurrentTab = (state: RootState) => state.aclFilters.aclCurrentTab;\n","import {createSelector} from 'reselect';\n\nimport compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\nimport uniq_ from 'lodash/uniq';\nimport partition_ from 'lodash/partition';\nimport isEqual_ from 'lodash/isEqual';\nimport some_ from 'lodash/some';\n\nimport {calculateLoadingStatus} from '../../utils/utils';\nimport {concatByAnd} from '../../common/hammer/predicate';\nimport {\n getAclFilterColumnGroupName,\n getAclFilterColumns,\n getAclFilterExpandedSubjects,\n getApproversSubjectFilter,\n getObjectPermissionsFilter,\n getObjectSubjectFilter,\n} from './acl-filters';\nimport UIFactory from '../../UIFactory';\nimport {RootState} from '../../store/reducers';\nimport {IdmKindType, PreparedAclSubject} from '../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../utils/acl/acl-api';\nimport {PreparedRole} from '../../utils/acl';\n\nexport type PreparedAclSubjectColumn = Omit<PreparedAclSubject, 'type'> & {type: 'columns'};\n\nfunction prepareColumnsNames(columnsPermissions: Array<{columns?: Array<string>}>) {\n const columns = map_(columnsPermissions, (permission) => permission.columns);\n\n return compact_(uniq_(flatten_(columns))).sort();\n}\n\nfunction prepareApprovers(\n approvers: Array<PreparedRole> | undefined,\n type: 'read_approver' | 'responsible' | 'auditor',\n) {\n return map_(approvers, (subject) => {\n const extra = {\n type,\n subjects: [subject.value],\n subjectType: subject.type === 'users' ? ('user' as const) : ('group' as const),\n groupInfo:\n subject.type === 'groups'\n ? {name: subject.group_name, url: subject.url, group: undefined}\n : undefined,\n action: undefined,\n };\n return {\n ...subject,\n ...extra,\n };\n });\n}\n\nexport type PreparedApprover = ReturnType<typeof prepareApprovers>[number];\n\nexport const getAllUserPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].userPermissions;\nconst getAllObjectPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].objectPermissions;\n\nconst getAllObjectPermissionsWithSplittedSubjects = createSelector(\n [getAllObjectPermissions],\n splitSubjects,\n);\n\nexport const getObjectPermissionsTypesList = (idmKind: IdmKindType) => {\n return createSelector(\n [\n getObjectPermissionsFilter,\n (state) => getAllObjectPermissionsWithSplittedSubjects(state, idmKind),\n ],\n (permissionsFilter, items) => {\n const uniquePermisions = new Set<YTPermissionTypeUI>();\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind] || {};\n [...permissionTypes, ...permissionsFilter].forEach((permission) =>\n uniquePermisions.add(permission),\n );\n items.forEach((item) => {\n const {permissions} = item;\n permissions?.forEach((permission) => uniquePermisions.add(permission));\n });\n return sortBy_([...uniquePermisions], (permission) => permission);\n },\n );\n};\n\ntype HasSplitted = {\n isSplitted?: boolean;\n subjectIndex?: number;\n};\n\nfunction splitSubjects<T extends {subjects: Array<unknown>}>(items: Array<T>) {\n const res: Array<T & HasSplitted> = [];\n forEach_(items, (item) => {\n const {subjects} = item;\n if (subjects && subjects.length > 1) {\n forEach_(subjects, (subject, index) => {\n res.push({...item, subjects: [subject], isSplitted: true, subjectIndex: index});\n });\n } else {\n res.push(item);\n }\n });\n return res;\n}\n\nfunction subjectFilterPredicate<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(item: T, filter: string) {\n const {subjectType, groupInfo} = item;\n if (subjectType === 'group') {\n return some_(Object.entries(groupInfo ?? {}), ([key, value]) => {\n let str: string | undefined = String(value);\n if (key === 'url') {\n if (str[str.length - 1] === '/') str = str.slice(0, -1);\n str = str.split('/').pop();\n }\n return -1 !== str?.toLowerCase().indexOf(filter);\n });\n }\n const value = String(item.subjects[0] ?? '');\n return -1 !== value.toLowerCase().indexOf(filter);\n}\n\nfunction FilterBySubject<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(items: Array<T>, subjectFilter?: string) {\n if (!subjectFilter) return items;\n const lowerNameFilter = subjectFilter.toLowerCase();\n return filter_(items, (item) => subjectFilterPredicate(item, lowerNameFilter));\n}\n\nconst permissionsFilterPredicate = (item: PreparedAclSubject, filter: Set<YTPermissionTypeUI>) => {\n const {permissions} = item;\n let foundCount = 0;\n return permissions?.some((p) => {\n if (filter.has(p)) {\n foundCount++;\n }\n return foundCount >= filter.size;\n });\n};\n\ntype ObjectPermissionsRow = PreparedAclSubject & HasSplitted;\n\nexport const getAllObjectPermissionsFiltered = createSelector(\n [\n getAllObjectPermissionsWithSplittedSubjects,\n getObjectSubjectFilter,\n getObjectPermissionsFilter,\n getAclFilterColumns,\n ],\n (items, subjectFilter, permissionsFilter, columns) => {\n const [mainPermissions, columnPermissions] = partition_(\n items,\n (item) => !item.columns?.length,\n );\n\n const withColumns = columnPermissions.map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n\n const lowerNameFilter = subjectFilter?.toLocaleLowerCase();\n const filterBySubject = lowerNameFilter\n ? (item: ObjectPermissionsRow) => subjectFilterPredicate(item, lowerNameFilter)\n : undefined;\n\n const permissionsFilterSet = new Set<YTPermissionTypeUI>(permissionsFilter);\n const filterByPermissions = permissionsFilterSet.size\n ? (item: ObjectPermissionsRow) =>\n permissionsFilterPredicate(item, permissionsFilterSet) ?? false\n : undefined;\n\n const visibleColumns = new Set(columns);\n const filterByColumns = visibleColumns.size\n ? ({columns}: ObjectPermissionsRow) => {\n return columns?.some((colName) => visibleColumns.has(colName)) ?? false;\n }\n : undefined;\n\n const mainPredicates = compact_([filterBySubject, filterByPermissions]);\n const columnsPredicates = compact_([filterBySubject, filterByColumns]);\n return {\n mainPermissions: mainPredicates.length\n ? mainPermissions.filter(concatByAnd(...mainPredicates))\n : mainPermissions,\n columnsPermissions: columnsPredicates.length\n ? withColumns.filter(concatByAnd(...columnsPredicates))\n : withColumns,\n };\n },\n);\n\nexport const getObjectPermissionsAggregated = createSelector(\n [getAllObjectPermissionsFiltered, getAclFilterExpandedSubjects],\n ({mainPermissions, columnsPermissions}, expandedSubjects) => {\n return {\n mainPermissions: {\n ...aggregateBySubject(mainPermissions, expandedSubjects),\n count: mainPermissions.length,\n },\n columnsPermissions: {\n ...aggregateBySubject(columnsPermissions, expandedSubjects),\n count: columnsPermissions.length,\n },\n };\n },\n);\n\nclass AggregateBySubject {\n aggrKey: string;\n subject: ObjectPermissionsRow['subjects'][number];\n inherited: boolean;\n\n allPermissions = new Set<YTPermissionTypeUI>();\n columns = new Set<string>();\n first: ObjectPermissionsRow;\n children = new Array<ObjectPermissionsRow & {expanded?: boolean; level?: number}>();\n\n constructor(first: AggregateBySubject['first']) {\n if (first.subjects.length > 1) {\n throw new Error(\n `Unexpected behavior: more than one subject occured: ${first.subjects.join(',')}`,\n );\n }\n\n this.aggrKey = aggregationKey(first);\n this.inherited = Boolean(first.inherited);\n this.subject = first.subjects[0];\n this.first = {...first};\n this.add(first);\n }\n\n add(item: ObjectPermissionsRow) {\n const aggrKey = aggregationKey(item);\n if (this.aggrKey !== aggrKey) {\n throw new Error(\n `Unexpected behavior: aggregation keys are not queal: ${this.aggrKey} !== ${aggrKey}`,\n );\n }\n\n if (item.subjects.length !== 1) {\n throw new Error(\n `Unexpected behavior: item.subjects.length !== 1: ${JSON.stringify(item)}`,\n );\n }\n\n this.children.push(item);\n\n item.permissions?.sort();\n item.permissions?.forEach((p) => {\n this.allPermissions.add(p);\n });\n item.columns?.forEach((column) => this.columns.add(column));\n\n this.first.isMissing ||= Boolean(item.isMissing);\n this.first.isUnrecognized ||= Boolean(item.isUnrecognized);\n this.first.isApproved ||= Boolean(item.isApproved);\n this.first.isRequested ||= Boolean(item.isRequested);\n }\n\n getItems(expanded: boolean): {\n items: AggregateBySubject['children'];\n hasExpandable?: boolean;\n hasDenyAction?: boolean;\n hasInherited?: boolean;\n } {\n const hasInherited = this.inherited;\n if (this.children.length === 1) {\n return {items: this.children, hasInherited};\n }\n\n const first: typeof this.first & {level?: number; expanded?: boolean} = {\n ...this.first,\n level: 0,\n expanded,\n };\n first.permissions = [...this.allPermissions].sort();\n first.columns = [...this.columns].sort();\n\n let hasDenyAction = false;\n const items = !expanded\n ? [first]\n : [\n first,\n ...sortBy_(this.children, ['inheritance_mode', 'permissions']).map((i) => {\n hasDenyAction ||= i.action === 'deny';\n return {...i, level: 1};\n }),\n ];\n\n this.children.forEach((i) => {\n if (i.inheritance_mode !== first.inheritance_mode) {\n first.inheritance_mode = undefined;\n }\n if (!isEqual_(this.first.inheritedFrom, i.inheritedFrom)) {\n first.inheritedFrom = undefined;\n }\n });\n\n return {items, hasExpandable: true, hasDenyAction, hasInherited};\n }\n}\n\nexport type ObjectPermissionRowWithExpand = AggregateBySubject['children'][number];\n\nfunction aggregationKey(item: ObjectPermissionsRow) {\n const {\n inherited,\n subjects: [subject],\n } = item;\n return `subject:${subject}_inherited:${Boolean(inherited)}`;\n}\n\nfunction aggregateBySubject(\n objPermissions: Array<ObjectPermissionsRow>,\n expandedSubjects: Set<string | number>,\n) {\n const aggregated: Record<string, AggregateBySubject> = {};\n\n objPermissions.forEach((item) => {\n const aggKey = aggregationKey(item);\n const dst = aggregated[aggKey];\n if (!dst) {\n aggregated[aggKey] = new AggregateBySubject(item);\n } else {\n dst.add(item);\n }\n });\n\n const res = Object.values(aggregated).reduce(\n (acc, item) => {\n const {items, hasExpandable, hasInherited} = item.getItems(\n expandedSubjects.has(item.subject),\n );\n acc.items = acc.items.concat(items);\n acc.hasExpandable ||= hasExpandable;\n acc.hasInherited ||= hasInherited;\n return acc;\n },\n {items: []} as ReturnType<AggregateBySubject['getItems']>,\n );\n\n const [inherited, other] = partition_(res.items, (item) => item.inherited);\n\n return {\n ...res,\n items: [...inherited, ...other],\n };\n}\n\nexport const getAllObjectPermissionsOrderedByStatus = createSelector(\n [getAllObjectPermissions],\n OrderByRoleStatus,\n);\nexport const getAllColumnGroups = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].columnGroups;\nexport const getAllColumnGroupsActual = createSelector(\n [getAllColumnGroups, getAclFilterColumns, getAclFilterColumnGroupName],\n (items, columnsFilter, nameFilter) => {\n const visibleColumns = new Set(columnsFilter);\n type ItemType = (typeof items)[number];\n const nameFilterLower = nameFilter?.toLowerCase();\n const predicates = compact_([\n (item: ItemType) => {\n return !item.removed;\n },\n visibleColumns.size > 0\n ? (item: ItemType) => {\n return item.columns?.some((name) => visibleColumns.has(name)) ?? false;\n }\n : undefined,\n nameFilterLower?.length\n ? (item: ItemType) =>\n -1 !== item.name?.toLowerCase().indexOf(nameFilterLower) ?? false\n : undefined,\n ]);\n const filtered = filter_(items, concatByAnd(...predicates)).map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n return sortBy_(filtered, ['name']);\n },\n);\n\nfunction OrderByRoleStatus<\n T extends {\n isDepriving?: boolean;\n isRequested?: boolean;\n isUnrecognized?: boolean;\n isApproved?: boolean;\n },\n>(items: Array<T>) {\n const unrecognized: typeof items = [];\n const requested: typeof items = [];\n const depriving: typeof items = [];\n const rest: typeof items = [];\n forEach_(items, (item) => {\n const {isDepriving, isRequested, isUnrecognized, isApproved} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n depriving.push(item);\n } else if (isRequested || isApproved) {\n requested.push(item);\n } else {\n rest.push(item);\n }\n });\n return [...requested, ...depriving, ...unrecognized, ...rest];\n}\n\nfunction OrderByInheritanceAndSubject<T extends {inherited?: boolean; subjects: Array<unknown>}>(\n items: Array<T>,\n) {\n const res = sortBy_(items, [\n (item) => !item.inherited,\n (item) => (item.subjects && item.subjects[0]) || true,\n ]);\n return res;\n}\n\nconst getReadApprovers = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].readApprovers;\nconst getResponsibles = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].responsible;\nconst getAuditors = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].auditors;\n\nexport const getNotInheritedReadApprovers = createSelector([getReadApprovers], (readApprovers) =>\n filter_(readApprovers, (readApprover) => !readApprover.inherited),\n);\nexport const getNotInheritedResponsibles = createSelector([getResponsibles], (responsibles) =>\n filter_(responsibles, (responsible) => !responsible.inherited),\n);\nexport const getNotInheritedAuditors = createSelector([getAuditors], (auditros) =>\n filter_(auditros, (auditro) => !auditro.inherited),\n);\n\nconst getAllApprovers = createSelector(\n [getReadApprovers, getResponsibles, getAuditors],\n (readApprovers, responsibles, auditros) => {\n return [\n ...prepareApprovers(readApprovers, 'read_approver'),\n ...prepareApprovers(responsibles, 'responsible'),\n ...prepareApprovers(auditros, 'auditor'),\n ];\n },\n);\n\nexport const getHasApprovers = createSelector([getAllApprovers], (items) => items.length > 0);\n\nexport const getApproversFiltered = createSelector(\n [getAllApprovers, getApproversSubjectFilter],\n FilterBySubject,\n);\n\nexport const getApproversFilteredAndOrdered = createSelector(\n [getApproversFiltered],\n OrderByInheritanceAndSubject,\n);\n\nexport const getApprovers = createSelector([getAllApprovers], OrderByRoleStatus);\n\nexport const getAllAccessColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'allow' && permission.columns?.length! > 0,\n );\n\n return map_(filteredPermissions, (item) => {\n const tmp: typeof item = {...item};\n tmp.type = 'columns';\n return tmp;\n });\n },\n);\n\nconst getAllDenyColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'deny' && permission.columns?.length! > 0,\n );\n\n return map_(\n filteredPermissions,\n (permission) =>\n ({\n ...permission,\n type: 'columns',\n }) as PreparedAclSubjectColumn,\n );\n },\n);\n\nexport const getAllAccessColumnsNames = createSelector(\n [getAllAccessColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getAllDenyColumnsNames = createSelector(\n [getAllDenyColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getDenyColumnsItems = createSelector([getAllDenyColumnsNames], (names) =>\n map_(names, (name) => ({key: name, value: name, title: name})),\n);\n\nexport const isPermissionDeleted = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].isPermissionDeleted;\nexport const permissionDeletionError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletionError;\nexport const getLastDeletedPermissionKey = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletedItemKey;\nexport const getIdmPermissionsRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmPermissionsRequestError;\nexport const getIdmManageAclRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmManageAclRequestError;\nexport const getIdmPathVersion = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].version;\n\nconst getAclLoading = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loading;\nconst getAclLoaded = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loaded;\nconst getAclError = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].error;\n\nexport const getAclLoadState = createSelector(\n [getAclLoading, getAclLoaded, getAclError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import {createSelector} from 'reselect';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../constants/navigation/index';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {isFinalLoadingStatus} from '../../../utils/utils';\n\nexport const getTransaction = (state) => state.navigation.navigation.transaction;\nexport const getAttributes = (state) => state.navigation.navigation.attributes;\nexport const getAttributesWithTypes = (state) => state.navigation.navigation.attributesWithTypes;\nexport const getLoadState = (state) => state.navigation.navigation.loadState;\nexport const getError = (state) => state.navigation.navigation.error;\nexport const getRawPath = (state) => state.navigation.navigation.path;\nexport const getIdmSupport = (state) => state.navigation.navigation.isIdmSupported;\nexport const getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\n\nexport const getType = createSelector(getAttributes, (attributes) => attributes?.type);\n\nexport const getPath = createSelector(\n [getRawPath, getNavigationDefaultPath],\n (rawPath, defaultPath) => rawPath || defaultPath,\n);\n\nexport const getAttributesPath = createSelector(\n [getAttributes, getPath],\n (attributes, navigationPath) => attributes?.path || navigationPath,\n);\n\nexport const isNavigationFinalLoadState = createSelector([getLoadState], (state) => {\n return isFinalLoadingStatus(state);\n});\n\nexport const getParsedPath = createSelector(getPath, (path) => {\n try {\n return ypath.YPath.create(path, 'absolute');\n } catch (ex) {\n console.error(ex);\n }\n});\nexport const getActualPath = createSelector([getPath, getType], (path, type) => {\n return type === 'map_node' ? path + '/' : path;\n});\n\nexport const checkIsTrash = createSelector(\n [getPath],\n (path) => path.startsWith('//tmp/trash') || path.startsWith('//trash'),\n);\n","import {createSelector} from 'reselect';\nimport reduce_ from 'lodash/reduce';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../reducers';\nimport {getSchedulingPoolsMapByName} from './scheduling-pools';\n\nexport const getSchedulingAbcFilter = (state: RootState) =>\n state.scheduling.scheduling.abcServiceFilter;\n\nexport const getSchedulingAttributesToFilter = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilter;\nexport const getSchedulingAttributesToFilterParams = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilterParams;\n\nexport const schedulingOverviewHasFilter = (state: RootState) => {\n const abcFilter = getSchedulingAbcFilter(state);\n\n return abcFilter?.id !== undefined;\n};\n\nexport const getSchedulingFilteredPoolNames = createSelector(\n [getSchedulingAttributesToFilter, getSchedulingPoolsMapByName, getSchedulingAbcFilter],\n (attrsToFilter, loadedPools, abcFilter) => {\n if (!attrsToFilter) {\n return undefined;\n }\n\n if (abcFilter?.id === undefined) {\n return undefined;\n }\n\n const res = reduce_(\n attrsToFilter,\n (acc, attrs, key) => {\n if (attrs.abc?.id !== abcFilter?.id) {\n return acc;\n }\n\n acc.add(key);\n return acc;\n },\n new Set<string>(),\n );\n\n forEach_([...res], (poolName) => {\n let name = poolName;\n let item = attrsToFilter[name];\n while (item?.parent && !loadedPools[name]) {\n res.add(item.parent);\n\n name = item.parent;\n item = attrsToFilter[item.parent];\n }\n });\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\n\nexport const getExpandedPoolCypressData = (state: RootState) =>\n state.scheduling.expandedPools.flattenCypressData;\n\nexport const getSchedulingOperations = (state: RootState) =>\n state.scheduling.expandedPools.rawOperations;\nexport const getExpandedPoolsTree = (state: RootState) =>\n state.scheduling.expandedPools.expandedPoolsTree;\nexport const getSchedulingOperationsError = (state: RootState) =>\n state.scheduling.expandedPools.error;\nexport const getSchedulingOperationsLoading = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsLoaded = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsExpandedPools = (state: RootState) =>\n state.scheduling.expandedPools.expandedPools;\nexport const getExpandedPoolsLoadAll = (state: RootState) => state.scheduling.expandedPools.loadAll;\n\nexport const getSchedulingOperationsLoadingStatus = createSelector(\n [getSchedulingOperationsLoading, getSchedulingOperationsLoaded],\n (loading, loaded) => {\n return loading && !loaded;\n },\n);\n","import map_ from 'lodash/map';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport {appendInnerErrors} from '../errors';\n\nconst RESOURCE_LIMIT_MAPPER = {\n user_memory: 'memory',\n};\n\nfunction preparePoolChildResource(data, type, treeResources, resource) {\n const attributes = data.attributes;\n\n if (data.name === ROOT_POOL_NAME) {\n data.resources[resource] = {\n guaranteed: ypath.getNumber(treeResources, '/resource_limits/' + resource),\n usage: ypath.getNumber(treeResources, '/resource_usage/' + resource),\n };\n } else {\n const min = ypath.getNumber(attributes, '/strong_guarantee_resources/' + resource);\n const usage = ypath.getNumber(attributes, '/resource_usage/' + resource);\n const demand = ypath.getNumber(attributes, '/resource_demand/' + resource);\n const guaranteed = ypath.getNumber(\n attributes,\n '/promised_fair_share_resources/' + resource,\n );\n\n const limitResource = RESOURCE_LIMIT_MAPPER[resource] || resource;\n const limit = ypath.getNumber(data.cypressAttributes, '/resource_limits/' + limitResource);\n\n const treeLimit = ypath.getNumber(treeResources, '/resource_limits/' + resource);\n const detailed =\n treeLimit * ypath.getNumber(attributes, '/detailed_fair_share/total/' + limitResource);\n\n data.resources[resource] = {\n min,\n guaranteed,\n usage,\n demand,\n limit,\n detailed,\n };\n }\n\n return data;\n}\n\nexport function updatePoolChild(data, cypressData, type, treeResources) {\n try {\n const attributes = data.attributes;\n const cypressAttributes = ypath.getAttributes(cypressData);\n\n data.cypressAttributes = cypressAttributes;\n data.type = type;\n\n if (data.type === 'pool') {\n if (typeof attributes === 'undefined' && data.parent) {\n console.error(\n 'Pool \"%s\" without attributes inited by \"%s\"',\n data.name,\n data._initedBy,\n );\n }\n\n data.mode = ypath.getValue(attributes, '/mode');\n\n data.leaves = map_(data.leaves, (leaf) => {\n return updatePoolChild(leaf, {}, 'operation', treeResources);\n });\n\n const child_pool_count = ypath.getNumber(attributes, '/child_pool_count');\n if (child_pool_count > 0 && !data.children.length) {\n for (let i = 0; i < child_pool_count; ++i) {\n data.children.push({\n parent: data.name,\n type: 'pool',\n name: `#key_${data.name}_${i}`,\n attributes: {},\n leaves: [],\n incomplete: true,\n });\n }\n }\n\n if (!data.leaves?.length) {\n data.pool_operation_count = ypath.getNumber(\n attributes,\n '/pool_operation_count',\n NaN,\n );\n if (data.pool_operation_count > 0) {\n const emptyOp = updatePoolChild(\n {attributes: {}},\n {},\n 'operation',\n treeResources,\n );\n data.leaves = [];\n for (let i = 0; i < data.pool_operation_count; ++i) {\n data.leaves.push({\n ...emptyOp,\n name: `##fake_operation_${data.name}_${i}`,\n });\n }\n }\n }\n\n // Operations\n data.operationCount = ypath.getNumber(attributes, '/operation_count');\n data.maxOperationCount = ypath.getNumber(attributes, '/max_operation_count');\n data.maxOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_operation_count',\n );\n data.runningOperationCount = ypath.getNumber(attributes, '/running_operation_count');\n data.maxRunningOperationCount = ypath.getNumber(\n attributes,\n '/max_running_operation_count',\n );\n data.maxRunningOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_running_operation_count',\n );\n }\n\n data.id = data.name;\n data.starvation_status = ypath.getValue(attributes, '/starvation_status');\n\n // General\n data.weight = ypath.getNumber(attributes, '/weight');\n data.weightEdited = ypath.getNumber(cypressAttributes, '/weight');\n data.minShareRatio = ypath.getNumber(attributes, '/min_share_ratio');\n data.maxShareRatio = ypath.getNumber(attributes, '/max_share_ratio');\n data.fairShareRatio = ypath.getNumber(attributes, '/fair_share_ratio');\n data.fifoIndex = ypath.getNumber(attributes, '/fifo_index');\n data.usageRatio = ypath.getNumber(attributes, '/usage_ratio');\n data.demandRatio = ypath.getNumber(attributes, '/demand_ratio');\n data.isEphemeral = ypath.getBoolean(attributes, '/is_ephemeral');\n\n data.integralType = ypath.getValue(attributes, '/integral_guarantee_type');\n const userDefinedBurstCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/burst_guarantee_resources/cpu',\n NaN,\n );\n data.burstCPU = ypath.getNumber(\n attributes,\n '/specified_burst_guarantee_resources/cpu',\n userDefinedBurstCPU,\n );\n const userDefinedFlowCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/cpu',\n NaN,\n );\n data.flowCPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/cpu',\n userDefinedFlowCPU,\n );\n const userDefinedFlowGPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/gpu',\n NaN,\n );\n data.flowGPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/gpu',\n userDefinedFlowGPU,\n );\n\n data.accumulated = ypath.getValue(attributes, '/accumulated_resource_ratio_volume');\n data.accumulatedCpu = ypath.getValue(attributes, '/accumulated_resource_volume/cpu');\n data.burstDuration = ypath.getValue(attributes, '/estimated_burst_usage_duration_sec');\n\n const fifoSortParams = map_(\n ypath.getValue(attributes, '/fifo_sort_parameters') ||\n ypath.getValue(cypressAttributes, '/fifo_sort_parameters'),\n (param) => ypath.getValue(param),\n );\n data.fifoSortParams =\n fifoSortParams.length > 0\n ? fifoSortParams\n : ['start_time', 'weight', 'pending_job_count'];\n data.abc = ypath.getValue(attributes, '/abc') || {};\n data.forbidImmediateOperations =\n ypath.getBoolean(cypressAttributes, '/forbid_immediate_operations') || false;\n data.createEphemeralSubpools =\n ypath.getBoolean(cypressAttributes, '/create_ephemeral_subpools') || false;\n\n // Resources\n data.dominantResource = ypath.getValue(attributes, '/dominant_resource');\n\n data.resources = {};\n\n preparePoolChildResource(data, type, treeResources, 'cpu');\n preparePoolChildResource(data, type, treeResources, 'user_memory');\n preparePoolChildResource(data, type, treeResources, 'gpu');\n preparePoolChildResource(data, type, treeResources, 'user_slots');\n\n return data;\n } catch (e) {\n throw appendInnerErrors(e, {\n message: `An error occured while parsing pool \"${data.name}\" data.`,\n });\n }\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport {preparePools} from '../../../utils/scheduling/scheduling';\nimport ypath from '../../../common/thor/ypath';\nimport {updatePoolChild} from '../../../utils/scheduling/pool-child';\nimport {\n getExpandedPoolCypressData,\n getExpandedPoolsTree,\n getSchedulingOperations,\n} from './expanded-pools';\nimport {getCluster} from '../../../store/selectors/global';\nimport {RumWrapper} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {EMPTY_OBJECT} from '../../../constants/empty';\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nconst getPoolsRaw = (state: RootState) => state.scheduling.expandedPools.rawPools;\nconst getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\n\nconst getSchedulingTreeOperations = createSelector(\n [getSchedulingOperations, getExpandedPoolsTree, getTree],\n (rawOperations, expandedPoolsTree, tree) => {\n if (tree !== expandedPoolsTree) {\n return EMPTY_OBJECT as typeof rawOperations;\n }\n\n return rawOperations;\n },\n);\n\nconst getOperationsFiltered = createSelector(\n [getPoolsRaw, getSchedulingTreeOperations],\n (rawPools, rawOperations) => {\n return reduce_(\n rawOperations,\n (acc, item, operationId) => {\n if (rawPools[item.pool]) {\n acc[operationId] = item;\n }\n return acc;\n },\n {} as typeof rawOperations,\n );\n },\n);\n\nconst getPoolsPrepared = createSelector(\n [getPoolsRaw, getOperationsFiltered, getExpandedPoolCypressData, getTreeResources, getCluster],\n (rawPools, rawOperations, attributes, treeResources, cluster) => {\n if (isEmpty_(rawPools)) {\n return [];\n }\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.SCHEDULING);\n\n return rumId.wrap('prepareData', () => {\n const preparedPools = preparePools(rawPools!, rawOperations);\n return map_(preparedPools, (pool) => {\n const cypressAttributes = ypath.getValue(attributes)[pool.name];\n return updatePoolChild(pool, cypressAttributes, 'pool', treeResources);\n });\n });\n },\n);\n\nexport const getSchedulingPoolsMapByName = createSelector(\n [getPoolsPrepared],\n (pools: Array<PoolInfo>) => {\n return reduce_(\n pools,\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {} as Record<string, PoolInfo>,\n );\n },\n);\n\nexport const getSchedulingPoolsExtraInfo = createSelector(\n [getSchedulingPoolsMapByName],\n (poolsMap) => {\n const root = poolsMap[ROOT_POOL_NAME];\n if (!root) {\n return {};\n }\n\n const res: Record<string, PoolExtraInfo> = {};\n calcChildrenIntegrals(root, res);\n return res;\n },\n);\n\ntype PoolName = string;\n\nfunction calcChildrenIntegrals(pool: PoolInfo, dst: Record<PoolName, PoolExtraInfo>) {\n const {children, name} = pool;\n if (!children?.length) {\n const res = (dst[name] = {\n childrenBurstCPU: 0,\n childrenFlowCPU: 0,\n });\n return res;\n }\n\n const res: PoolExtraInfo = {\n childrenFlowCPU: 0,\n childrenBurstCPU: 0,\n };\n for (let i = 0; i < children.length; ++i) {\n const item = children[i];\n const itemExtraInfo = calcChildrenIntegrals(item, dst);\n\n dst[item.name] = itemExtraInfo;\n\n res.childrenFlowCPU += item.flowCPU || 0 + itemExtraInfo.childrenFlowCPU;\n res.childrenBurstCPU += item.burstCPU || 0 + itemExtraInfo.childrenBurstCPU;\n }\n\n dst[name] = res;\n return res;\n}\n\nexport interface PoolExtraInfo {\n childrenFlowCPU: number;\n childrenBurstCPU: number;\n}\n\nexport interface OperationInfo {\n name: string;\n type: 'operation';\n parent: string;\n attributes: object;\n cypressAttributes: object;\n flowCPU: number;\n burstCPU: number;\n flowGPU: number;\n integralType?: string;\n mode?: string;\n\n operationCount?: number;\n maxOperationCount?: number;\n maxRunningOperationCount?: number;\n\n pool: string;\n}\n\nexport interface PoolInfo extends Omit<OperationInfo, 'type' | 'pool'> {\n type: 'pool';\n incomplete?: boolean;\n children?: Array<PoolInfo>;\n leaves: Array<OperationInfo>;\n isEphemeral?: boolean;\n resources?: PoolResources;\n fifoIndex?: number;\n weight?: number;\n minShareRatio?: number;\n maxShareRatio?: number;\n fairShareRatio?: number;\n usageRatio?: number;\n demandRatio?: number;\n dominantResource?: number;\n runningOperationCount?: number;\n operationCount?: number;\n maxOperationCount?: number;\n childrenBurstCPU?: number;\n childrenFlowCPU?: number;\n accumulated?: number;\n accumulatedCpu?: number;\n burstDuration?: number;\n}\n\nexport type PoolResources = Partial<\n Record<'cpu' | 'gpu' | 'user_memory' | 'user_slots', PoolResourceDetails>\n>;\n\nexport type PoolResourceType = keyof PoolResources;\n\nexport type PoolResourceDetails = {\n min?: number;\n usage?: number;\n limit?: number;\n demand?: number;\n detailed?: number;\n guaranteed?: number;\n};\n\nexport const getPools = createSelector(\n [getPoolsPrepared, getSchedulingPoolsExtraInfo],\n (pools, extras) => {\n const res = map_(pools, (item) => {\n const itemExtra = extras[item.name] || {};\n return Object.assign(item, itemExtra);\n });\n return res;\n },\n);\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../common/hammer';\n\nimport reduce_ from 'lodash/reduce';\n\nfunction getNetworkResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Percent']((resourceUsage / resourceLimit) * 100);\n}\n\nfunction getMemoryResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Bytes'](resourceUsage) + ' / ' + hammer.format['Bytes'](resourceLimit);\n}\n\nfunction getDefaultResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Number'](resourceUsage) + ' / ' + hammer.format['Number'](resourceLimit);\n}\n\nfunction getResourcesText(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n switch (data.type) {\n case 'network':\n return getNetworkResourceText(resourceUsage, resourceLimit);\n case 'user_memory':\n return getMemoryResourceText(resourceUsage, resourceLimit);\n default:\n return getDefaultResourceText(resourceUsage, resourceLimit);\n }\n}\n\nfunction getResourceProgressValue(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n return (resourceUsage / resourceLimit) * 100;\n}\n\nfunction getResourceProgress(data) {\n return {\n text: getResourcesText(data),\n value: getResourceProgressValue(data),\n theme: 'info',\n };\n}\n\nexport function prepareResources(data) {\n const resourceUsage = ypath.getValue(data, '/resource_usage');\n const resourceLimits = ypath.getValue(data, '/resource_limits');\n const resourceTypes = ['cpu', 'user_memory', 'user_slots', 'network', 'gpu'];\n\n return reduce_(\n resourceTypes,\n (res, type) => {\n if (resourceUsage && resourceLimits) {\n const data = {\n type,\n usage: Number(ypath.getValue(resourceUsage[type], '')),\n limit: Number(ypath.getValue(resourceLimits[type], '')),\n };\n const progress = getResourceProgress(data);\n\n res.push({...data, progress});\n }\n return res;\n },\n [],\n );\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport hammer from '../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../store/selectors/global';\n\nimport {prepareResources} from '../../../utils/scheduling/overview';\nimport {childTableItems} from '../../../utils/scheduling/detailsTable';\nimport {poolsTableItems} from '../../../utils/scheduling/overviewTable';\nimport {\n ROOT_POOL_NAME,\n SCHEDULING_POOL_CHILDREN_TABLE_ID,\n SCHEDULING_POOL_TREE_TABLE_ID,\n} from '../../../constants/scheduling';\n\nimport {\n OperationInfo,\n PoolInfo,\n getPools as getPoolsImpl,\n getSchedulingPoolsMapByName,\n} from './scheduling-pools';\nimport {RootState} from '../../../store/reducers';\nimport {isAbcPoolName, isTopLevelPool} from '../../../utils/scheduling/pool';\nimport {visitTreeItems} from '../../../utils/utils';\nimport {getExpandedPoolsLoadAll, getSchedulingOperationsExpandedPools} from './expanded-pools';\nimport {\n getSchedulingAttributesToFilter,\n getSchedulingFilteredPoolNames,\n} from './attributes-to-filter';\nexport const getPools = getPoolsImpl;\n\nconst getExpandedPoolsIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.expandedPools;\n return !loaded && loading;\n};\n\nexport const getSchedulingIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.scheduling;\n return (!loaded && loading) || getExpandedPoolsIsInitialLoading(state);\n};\n\nexport const getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\nexport const getPoolChildrenFilter = (state: RootState) =>\n state.scheduling.scheduling.poolChildrenFilter;\nexport const getSchedulingTreeState = (state: RootState) => state.scheduling.scheduling.treeState;\nconst getContentModeRaw = (state: RootState) => state.scheduling.scheduling.contentMode;\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nexport const getTrees = (state: RootState) => state.scheduling.scheduling.trees;\n\nexport const getPool = (state: RootState) => state.scheduling.scheduling.pool;\n\nexport const getSchedulingEditItem = (state: RootState) => state.scheduling.scheduling.editItem;\n\nexport const getSortState = (state: RootState) => state.tables[SCHEDULING_POOL_TREE_TABLE_ID];\nexport const getPoolChildrenSortState = (state: RootState) =>\n state.tables[SCHEDULING_POOL_CHILDREN_TABLE_ID];\n\nexport const getPoolsNames = createSelector(\n getSchedulingAttributesToFilter,\n (pools): Array<string> => map_(pools, (_v, name) => name).sort(),\n);\n\nconst DETAILS_CONTENT_MODES = {\n cpu: 'cpu',\n memory: 'memory',\n gpu: 'gpu',\n user_slots: 'user_slots',\n operations: 'operations',\n integral: 'integral',\n};\n\nexport const getContentMode = createSelector([getContentModeRaw], (mode) => {\n return DETAILS_CONTENT_MODES[mode] || DETAILS_CONTENT_MODES.cpu;\n});\n\nexport const getIsRoot = createSelector(getPool, (pool) => pool === ROOT_POOL_NAME);\n\nexport const getTreesSelectItems = createSelector(getTrees, (trees) =>\n map_(trees, (tree) => ({\n value: tree,\n text: hammer.format['Readable'](tree) as string,\n })),\n);\n\nexport const getPoolsSelectItems = createSelector(getPoolsNames, (pools) => {\n const items = map_(pools, (pool) => ({\n value: pool,\n text: pool,\n }));\n\n return items;\n});\n\nexport const getCurrentPool = createSelector([getPool, getPools], (pool, pools) =>\n find_(pools, (item) => item.name === pool),\n);\n\nexport const getPoolIsEphemeral = createSelector([getCurrentPool], (currentPool) => {\n if (currentPool && currentPool.isEphemeral !== undefined) return currentPool.isEphemeral;\n return undefined;\n});\n\nexport const getCurrentPoolChildren = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.children;\n }\n\n return undefined;\n});\n\nexport const getCurrentPoolOperations = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.leaves;\n }\n\n return undefined;\n});\n\nexport const getResources = createSelector(\n [getCurrentPool, getTreeResources],\n (currentPool, resources) => {\n if (currentPool && currentPool.name !== '<Root>') {\n return prepareResources(currentPool.attributes);\n } else if (resources) {\n return prepareResources(resources);\n }\n\n return [];\n },\n);\n\nconst getFilteredTree = createSelector(\n [getCurrentPool, getSchedulingFilteredPoolNames],\n (treeRoot, visiblePools) => {\n if (treeRoot) {\n return hammer.treeList.filterTree(\n treeRoot,\n (pool: {name: string}) => {\n return visiblePools === undefined || visiblePools.has(pool.name);\n },\n true,\n );\n }\n return undefined;\n },\n);\n\nexport const getTableItems = createSelector(\n [getFilteredTree, getSortState],\n (filteredTree, sortState) => {\n if (filteredTree) {\n const isRoot = filteredTree && filteredTree.name === ROOT_POOL_NAME;\n const tree = isRoot ? filteredTree : {children: [filteredTree]};\n const sortedTree = hammer.treeList.sortTree(tree, sortState, poolsTableItems);\n\n return hammer.treeList.flattenTree(sortedTree);\n }\n\n return [];\n },\n);\n\nexport const getSchedulingOverviewMaxDepth = createSelector(\n [getTableItems, getExpandedPoolsLoadAll, getTree, getSchedulingOperationsExpandedPools],\n (items: Array<{level: number; name: string}>, allExpanded, tree, expandedPoolsMap) => {\n if (allExpanded) {\n return reduce_(\n items,\n (acc, item) => {\n const {level = 0} = item || {};\n return acc < level ? level : acc;\n },\n 0,\n );\n }\n\n const expandedPools = expandedPoolsMap[tree];\n if (!expandedPools?.size) {\n return 0;\n }\n\n return reduce_(\n items,\n (acc, item) => {\n if (expandedPools.has(item.name)) {\n return acc < item.level + 1 ? item.level + 1 : acc;\n }\n return acc;\n },\n 0,\n );\n },\n);\n\nconst getPoolChildrenData = createSelector(\n [getCurrentPool, getCurrentPoolChildren, getCurrentPoolOperations],\n (pool, pools, operations = []) => {\n if (pool && pools) {\n return [...pools, ...operations];\n }\n\n return undefined;\n },\n);\n\nconst getFilteredPoolChildren = createSelector(\n [getPoolChildrenData, getPoolChildrenFilter],\n (poolChildrenData, poolChildrenFilter) => {\n return hammer.filter.filter({\n data: poolChildrenData,\n input: poolChildrenFilter,\n factors: ['name'],\n });\n },\n);\n\nexport const getSortedPoolChildren = createSelector(\n [getFilteredPoolChildren, getPoolChildrenSortState, getCurrentPool],\n (filteredPoolChildren, poolChildrenSortState, currentPool) => {\n return hammer.utils.sort(filteredPoolChildren, poolChildrenSortState, childTableItems, {\n addGetParams: [currentPool],\n groupBy: {\n asc: true,\n get(item: PoolInfo | OperationInfo) {\n return item.type === 'operation' ? 0 : 1;\n },\n },\n });\n },\n);\n\nexport const getPollChildrenTableItems = createSelector(\n [getCurrentPool, getSortedPoolChildren],\n (currentPool, sortedPoolChildren) => {\n const extras = [];\n let isChildPool = false;\n if (currentPool && currentPool.name !== ROOT_POOL_NAME) {\n extras.push(currentPool);\n isChildPool = true;\n }\n\n return extras.concat(\n map_(sortedPoolChildren, (item) => {\n return Object.assign({}, item, {isChildPool});\n }),\n );\n },\n);\n\n// The same cluster is ready for bundle's ACL\nconst CLUSTERS_WITHOUT_POOL_ACL = ['locke'];\n\nexport const isPoolAclAllowed = createSelector([getCluster], (cluster) => {\n return CLUSTERS_WITHOUT_POOL_ACL.indexOf(cluster) === -1;\n});\n\nexport const getCurrentPoolPath = createSelector(\n [getPool, getPools, getTree],\n (pool, pools, tree) => {\n return calculatePoolPath(pool, pools, tree);\n },\n);\n\nexport function calculatePoolPath(pool: string, pools: Array<PoolInfo>, tree: string) {\n const prefix = `//sys/pool_trees/${tree}`;\n\n let current = pool;\n const path = [];\n while (current) {\n if (current !== ROOT_POOL_NAME) {\n path.push(current);\n }\n const tmp = current;\n const {parent} = find_(pools, ({name}) => name === tmp) || {};\n current = parent || '';\n }\n const pathStr = !path.length ? '' : '/' + path.reverse().join('/');\n return `${prefix}${pathStr}`;\n}\n\nexport const getSchedulingTopPoolOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingPoolsMapByName],\n (pool, mapOfPools) => {\n if (isAbcPoolName(pool?.name)) {\n return undefined;\n }\n\n if (isTopLevelPool(pool)) {\n return pool;\n }\n\n let item = pool;\n while (item) {\n const parent = mapOfPools[item.parent];\n if (isAbcPoolName(item.parent)) {\n return item;\n }\n\n if (isTopLevelPool(item)) {\n return item;\n }\n\n item = parent;\n }\n return undefined;\n },\n);\n\nexport const getSchedulingSourcesOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingTopPoolOfEditItem, getSchedulingPoolsMapByName],\n (pool, topPool, mapOfPools): Array<string> => {\n if (!pool?.name || !mapOfPools) {\n return [];\n }\n\n const res: Array<string> = [];\n visitTreeItems(\n topPool,\n (item: PoolInfo) => {\n if (pool.name !== item.name) {\n res.push(item.name);\n }\n },\n {\n isNeedToSkipChildren: (item: PoolInfo) => {\n return item?.name === pool?.name;\n },\n },\n );\n\n return res;\n },\n);\n\nexport const getSchedulingSourcesOfEditItemSkipParent = createSelector(\n [getSchedulingEditItem, getSchedulingSourcesOfEditItem],\n (pool, sources) => {\n if (!pool?.parent) {\n return sources;\n }\n\n return filter_(sources, (item) => item !== pool.parent);\n },\n);\n","import concat_ from 'lodash/concat';\nimport reduce_ from 'lodash/reduce';\n\nexport function injectColumnsFromSchema(\n columns: Array<string>,\n omittedColumns: Array<string>,\n schemaColumns: Array<string>,\n) {\n const toSkip = reduce_(\n concat_(columns, omittedColumns),\n (acc, column) => {\n acc[column] = true;\n return acc;\n },\n {} as {[column: string]: true},\n );\n const toAdd = reduce_(\n schemaColumns,\n (acc, col) => {\n if (!toSkip[col]) {\n acc.push(col);\n }\n return acc;\n },\n [] as Array<string>,\n );\n return concat_(columns, toAdd);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport unipika from '../../common/thor/unipika';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Yson from '../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * See unipika for more details\n */\nexport type UnipikaValueType = Array<string | UnipikaValueType>;\n\nexport type YqlValueProps = {\n value?: unknown;\n type: UnipikaValueType;\n settings: UnipikaSettings;\n inline?: boolean;\n};\n\nexport default class YqlValue extends React.Component<YqlValueProps> {\n static propTypes = {\n settings: PropTypes.object,\n value: PropTypes.any,\n type: PropTypes.array,\n inline: PropTypes.bool,\n };\n\n static defaultProps = {\n inline: false,\n folding: false,\n settings: Yson.defaultUnipikaSettings,\n };\n\n static getFormattedValue(value: unknown, type: UnipikaValueType, settings: UnipikaSettings) {\n const yqlValue = [value, type];\n\n return settings.format === 'raw-json'\n ? unipika.formatRaw(yqlValue, settings)\n : unipika.formatFromYQL(yqlValue, settings);\n }\n\n render() {\n const {value, type, inline, settings} = this.props;\n\n const formattedValue = YqlValue.getFormattedValue(value, type, settings);\n\n let title;\n\n if (inline) {\n const titleSettings = Object.assign({}, settings, {\n asHTML: false,\n });\n\n title =\n settings.format === 'raw-json'\n ? unipika.formatRaw(value, titleSettings)\n : unipika.formatFromYQL(value, titleSettings);\n }\n\n const classes = block('unipika-wrapper')({\n inline: inline && 'yes',\n });\n\n return (\n <ErrorBoundary>\n {settings.asHTML ? (\n <div className={classes} title={title} dir=\"auto\">\n <pre\n className=\"unipika\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n </div>\n ) : (\n <div\n className={classes}\n title={title}\n dir=\"auto\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n )}\n </ErrorBoundary>\n );\n }\n}\n","import React, {useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport copyToClipboard from 'copy-to-clipboard';\n\nimport {Button, Flex, Icon as UIKitIcon} from '@gravity-ui/uikit';\nimport {Eye} from '@gravity-ui/icons';\n\nimport unipika from '../../common/thor/unipika';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport YqlValue from '../../components/YqlValue/YqlValue';\nimport Yson from '../../components/Yson/Yson';\nimport Label from '../../components/Label/Label';\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\nimport './ColumnCell.scss';\n\nconst block = cn('yt-column-cell');\n\nfunction unquote(v: string) {\n const match = /^\"(.*)\"$/.exec(v);\n return match ? match[1] : v;\n}\n\ntype CellValueType =\n | null\n | (CellValueData & {\n $incomplete?: boolean;\n [k: number]: {inc?: boolean};\n });\n\ntype CellValueData = {$type: string; $value: string} | {$type?: undefined; $value: unknown};\n\nfunction isValueTruncated(value: CellValueType) {\n return value?.$incomplete || getArrayValue(value)?.inc;\n}\n\nfunction getArrayValue(value: CellValueType) {\n const candidate = value?.[0];\n\n return Array.isArray(candidate) ? candidate[0] : candidate;\n}\n\nfunction isValueEmptyOrTruncated(value?: CellValueType) {\n return !value || isValueTruncated(value);\n}\n\ntype ColumnCellProps = {\n className?: string;\n\n value?: CellValueType | null;\n yqlTypes: Array<TypeArray> | null;\n ysonSettings: UnipikaSettings;\n allowRawStrings?: boolean | null;\n rowIndex: number;\n columnName: string;\n onShowPreview: (columnName: string, rowIndex: number) => void;\n};\n\nexport function ColumnCell({\n value = null,\n yqlTypes,\n ysonSettings,\n allowRawStrings,\n className,\n rowIndex,\n columnName,\n onShowPreview,\n}: ColumnCellProps) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const formatType = yqlTypes && value ? yqlTypes[Number(value[1])] : undefined;\n\n const escapedValue =\n formatType && value\n ? YqlValue.getFormattedValue(value[0], formatType, {\n ...ysonSettings,\n asHTML: false,\n })\n : unipika.prettyprint(value, {...ysonSettings, asHTML: false});\n const formattedValue =\n formatType && value ? (\n <YqlValue value={value[0]} type={formatType} settings={ysonSettings} />\n ) : (\n <Yson value={value} settings={ysonSettings} />\n );\n\n let isIncompleteTagged = false;\n if (yqlTypes && value) {\n const yqlType = yqlTypes[Number(value[1])];\n\n if (value[0]?.inc === true && yqlType[0] === 'TaggedType') {\n isIncompleteTagged = true;\n }\n }\n\n const allowRawCopy = value?.$type === 'string';\n const useRawString = allowRawCopy && allowRawStrings;\n let copyTooltip = 'Hold SHIFT-key to copy raw value';\n if (useRawString) {\n copyTooltip = 'Hold SHIFT-key to copy escaped value';\n }\n\n const visibleValue = !useRawString ? (\n formattedValue\n ) : (\n <div className={'unipika-wrapper'}>\n <pre className={'unipika'}>\n <span className={'string'}>{value?.$value}</span>\n </pre>\n </div>\n );\n\n return (\n <div\n className={block(null, className) /*dataTableBlock('value')*/}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isIncompleteTagged ? (\n <Label theme=\"warning\" text={`Incomplete '${formatType?.[1]}' type`} />\n ) : (\n visibleValue\n )}\n {hovered && (\n <div className={block('control-button-wrapper')}>\n <Flex alignItems=\"center\">\n {!isValueEmptyOrTruncated(value) && (\n <Tooltip\n content={\n !allowRawCopy ? undefined : (\n <span className={block('copy-value-tooltip')}>\n {copyTooltip}\n </span>\n )\n }\n >\n <ClipboardButton\n view=\"flat-secondary\"\n size=\"m\"\n text={useRawString ? value.$value : unquote(escapedValue)}\n onCopy={(event: React.MouseEvent) => {\n if (event?.shiftKey && allowRawCopy) {\n copyToClipboard(\n useRawString ? unquote(escapedValue) : value.$value,\n );\n }\n }}\n />\n </Tooltip>\n )}\n {isValueTruncated(value) && (\n <Button\n view=\"flat-secondary\"\n size=\"m\"\n qa=\"truncated-preview-button\"\n onClick={() => onShowPreview(columnName, rowIndex)}\n >\n <UIKitIcon data={Eye} size=\"12\" />\n </Button>\n )}\n </Flex>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport SchemaDataType from '../../components/SchemaDataType/SchemaDataType';\nimport Yson from '../../components/Yson/Yson';\nimport unipika from '../../common/thor/unipika';\nimport Icon from '../../components/Icon/Icon';\nimport {ColumnCell} from '../../components/ColumnCell/ColumnCell';\n\nimport map_ from 'lodash/map';\n\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport type {YsonSettings} from '../../store/selectors/thor/unipika';\n\nexport function prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n}: {\n columns: {name: string; sortOrder?: string}[];\n keyColumns: string[];\n yqlTypes: TypeArray[] | null;\n ysonSettings: YsonSettings;\n useRawStrings: boolean | null | undefined;\n schemaByName: Record<string, any>;\n onShowPreview: (columnName: string, rowIndex: number) => void;\n}) {\n return map_(columns, (column) => {\n const render = ({value, index}: {value?: any; index: number; row: any}) => (\n <ColumnCell\n allowRawStrings={useRawStrings}\n value={value}\n yqlTypes={yqlTypes || []}\n ysonSettings={ysonSettings}\n rowIndex={index}\n columnName={column.name}\n onShowPreview={onShowPreview}\n />\n );\n const {sortOrder} = column;\n const isKeyColumn = keyColumns.indexOf(column.name) > -1;\n const {type_v3} = schemaByName[column.name] || {};\n const header = (\n <Tooltip content={Boolean(type_v3) && <SchemaDataType type_v3={type_v3} />}>\n <Yson value={unipika.unescapeKeyValue(column.name)} settings={ysonSettings} inline>\n {isKeyColumn && (\n <Icon\n awesome={\n sortOrder === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n </Yson>\n </Tooltip>\n );\n return Object.assign({}, column, {render, header});\n });\n}\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\nimport type {PoolInfo, PoolResourceType} from '../../store/selectors/scheduling/scheduling-pools';\n\nfunction prepareDetailedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.detailed;\n },\n sort: true,\n caption: 'Abs fair share',\n align: 'right',\n };\n}\n\nfunction prepareLimitColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.limit;\n },\n sort: true,\n sortWithUndefined: true,\n caption: 'Limit',\n align: 'right',\n };\n}\n\nfunction prepareMinResourcesColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.min;\n },\n sort: true,\n caption: 'Strong guar.',\n title: 'Strong guarantee',\n align: 'right',\n };\n}\n\nfunction prepareAbsGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.guaranteed;\n },\n sort: true,\n caption: 'Estimated guar.',\n title: 'Estimated guarantee',\n align: 'right',\n };\n}\n\nfunction prepareRelGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsGuaranteedColumn(resource).get(item)! /\n prepareAbsGuaranteedColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel guaranteed',\n align: 'right',\n };\n}\n\nfunction prepareAbsDemandColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.demand;\n },\n sort: true,\n caption: 'Abs demand',\n align: 'right',\n };\n}\n\nfunction prepareAbsUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.usage;\n },\n sort: true,\n caption: 'Abs usage',\n align: 'right',\n };\n}\n\nfunction prepareRelUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsUsageColumn(resource).get(item)! /\n prepareAbsUsageColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel usage',\n align: 'right',\n };\n}\n\nfunction prepareGuaranteedUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return {\n guaranteed: prepareRelGuaranteedColumn(resource).get(item, currentPool),\n usage: prepareRelUsageColumn(resource).get(item, currentPool),\n };\n },\n caption: 'Usage / Guaranteed',\n align: 'center',\n };\n}\n\nexport const childTableItems = {\n name: {\n sort(item: PoolInfo) {\n return item.name;\n },\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n },\n mode: {\n sort(item: PoolInfo) {\n return item.mode;\n },\n align: 'center',\n },\n FI: {\n sort(item: PoolInfo) {\n return item.fifoIndex;\n },\n align: 'center',\n },\n weight: {\n sort(item: PoolInfo) {\n return item.weight;\n },\n align: 'right',\n },\n min_share: {\n sort(item: PoolInfo) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n max_share: {\n sort(item: PoolInfo) {\n return item.maxShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n get(item: PoolInfo) {\n return item.fairShareRatio;\n },\n sort: true,\n align: 'right',\n },\n usage: {\n get(item: PoolInfo) {\n return item.usageRatio;\n },\n sort: true,\n align: 'right',\n },\n demand: {\n get(item: PoolInfo) {\n return item.demandRatio;\n },\n sort: true,\n align: 'right',\n },\n fair_share_usage: {\n caption: 'Usage / Fair share',\n align: 'left',\n },\n dominant_resource: {\n sort(item: PoolInfo) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n\n resource_detailed_cpu: prepareDetailedColumn('cpu'),\n resource_detailed_memory: prepareDetailedColumn('user_memory'),\n resource_detailed_gpu: prepareDetailedColumn('gpu'),\n resource_detailed_user_slots: prepareDetailedColumn('user_slots'),\n\n resource_limit_cpu: prepareLimitColumn('cpu'),\n resource_limit_memory: prepareLimitColumn('user_memory'),\n resource_limit_gpu: prepareLimitColumn('gpu'),\n resource_limit_user_slots: prepareLimitColumn('user_slots'),\n\n min_resources_cpu: prepareMinResourcesColumn('cpu'),\n min_resources_memory: prepareMinResourcesColumn('user_memory'),\n min_resources_gpu: prepareMinResourcesColumn('gpu'),\n min_resources_user_slots: prepareMinResourcesColumn('user_slots'),\n\n abs_guaranteed_cpu: prepareAbsGuaranteedColumn('cpu'),\n abs_guaranteed_memory: prepareAbsGuaranteedColumn('user_memory'),\n abs_guaranteed_gpu: prepareAbsGuaranteedColumn('gpu'),\n abs_guaranteed_user_slots: prepareAbsGuaranteedColumn('user_slots'),\n\n rel_guaranteed_cpu: prepareRelGuaranteedColumn('cpu'),\n rel_guaranteed_memory: prepareRelGuaranteedColumn('user_memory'),\n rel_guaranteed_gpu: prepareRelGuaranteedColumn('gpu'),\n rel_guaranteed_user_slots: prepareRelGuaranteedColumn('user_slots'),\n\n abs_usage_cpu: prepareAbsUsageColumn('cpu'),\n abs_usage_memory: prepareAbsUsageColumn('user_memory'),\n abs_usage_gpu: prepareAbsUsageColumn('gpu'),\n abs_usage_user_slots: prepareAbsUsageColumn('user_slots'),\n\n abs_demand_cpu: prepareAbsDemandColumn('cpu'),\n abs_demand_memory: prepareAbsDemandColumn('user_memory'),\n abs_demand_gpu: prepareAbsDemandColumn('gpu'),\n abs_demand_user_slots: prepareAbsDemandColumn('user_slots'),\n\n rel_usage_cpu: prepareRelUsageColumn('cpu'),\n rel_usage_memory: prepareRelUsageColumn('user_memory'),\n rel_usage_gpu: prepareRelUsageColumn('gpu'),\n rel_usage_user_slots: prepareRelUsageColumn('user_slots'),\n\n guaranteed_usage_cpu: prepareGuaranteedUsageColumn('cpu'),\n guaranteed_usage_memory: prepareGuaranteedUsageColumn('user_memory'),\n guaranteed_usage_gpu: prepareGuaranteedUsageColumn('gpu'),\n guaranteed_usage_user_slots: prepareGuaranteedUsageColumn('user_slots'),\n\n operation_overview: {\n get(item: PoolInfo) {\n return [item.operationCount, item.runningOperationCount];\n },\n caption: 'Operations',\n sort: true,\n align: 'right',\n },\n operation_count: {\n get(item: PoolInfo) {\n return item.operationCount;\n },\n sort: true,\n align: 'right',\n },\n max_operation_count: {\n get(item: PoolInfo) {\n return item.maxOperationCount;\n },\n sort: true,\n align: 'right',\n },\n operation_progress: {\n get(item: PoolInfo) {\n return item.operationCount! / item.maxOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.operationCount)} / ${format.Number(\n item.maxOperationCount,\n )}`;\n },\n caption: 'Total operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n running_operation_count: {\n get(item: PoolInfo) {\n return item.runningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n max_running_operation_count: {\n get(item: PoolInfo) {\n return item.maxRunningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n running_operation_progress: {\n get(item: PoolInfo) {\n return item.runningOperationCount! / item.maxRunningOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.runningOperationCount)} / ${format.Number(\n item.maxRunningOperationCount,\n )}`;\n },\n caption: 'Running operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n\n integral_type: {\n get(item: PoolInfo) {\n const res = item.integralType;\n return res === 'none' ? undefined : res;\n },\n caption: 'Guarantee type',\n sort: true,\n align: 'right',\n sortWithUndefined: true,\n },\n burst_cpu: {\n get(item: PoolInfo) {\n return item.burstCPU;\n },\n sort(item: PoolInfo) {\n const res = item.burstCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Burst CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n flow_cpu: {\n get(item: PoolInfo) {\n return item.flowCPU;\n },\n sort(item: PoolInfo) {\n const res = item.flowCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Flow CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n children_burst_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenBurstCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's burst CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n children_flow_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenFlowCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's flow CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n accumulated: {\n get(item: PoolInfo) {\n return item.accumulated;\n },\n caption: 'Acc ratio volume',\n sortWithUndefined: true,\n sort: true,\n align: 'right',\n },\n accumulated_cpu: {\n get(item: PoolInfo) {\n return item.accumulatedCpu;\n },\n caption: 'Acc CPU volume',\n sort: true,\n align: 'right',\n },\n burst_duration: {\n get(item: PoolInfo) {\n return item.burstDuration;\n },\n caption: 'Est burst usage duration ',\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import React from 'react';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\n\nexport const poolsTableItems = {\n type: {\n caption: '',\n align: 'center',\n },\n name: {\n sort: true,\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n get(item) {\n return item.name;\n },\n },\n mode: {\n sort: true,\n align: 'center',\n get(item) {\n return item.mode;\n },\n },\n FI: {\n sort: true,\n align: 'right',\n title: 'FIFO Index',\n get(item) {\n return item.fifoIndex;\n },\n },\n weight: {\n sort: true,\n align: 'right',\n title: 'Effective weight',\n get(item) {\n return item.weight;\n },\n },\n operation_overview: {\n caption: 'Operations',\n sort: true,\n align: 'center',\n get(item) {\n return [item.operationCount, item.runningOperationCount];\n },\n },\n dominant_resource: {\n sort(item) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n min_share: {\n caption: 'Guarantee',\n title: 'Effective dominant strong guarantee share',\n sort(item) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n sort: true,\n title: 'Dominant fair share',\n align: 'right',\n get(item) {\n return item.fairShareRatio;\n },\n },\n usage: {\n sort: true,\n title: 'Dominant usage share',\n align: 'right',\n get(item) {\n return item.usageRatio;\n },\n },\n demand: {\n sort: true,\n title: 'Dominant demand share',\n align: 'right',\n get(item) {\n return item.demandRatio;\n },\n },\n fair_share_usage: {\n sort: true,\n caption: 'Usage / Fair share',\n align: 'center',\n sortWithUndefined: true,\n get(item) {\n const {fairShareRatio, usageRatio} = item;\n const x = Number(usageRatio) / Number(fairShareRatio);\n if (isNaN(usageRatio) || isNaN(fairShareRatio) || isNaN(x)) {\n return undefined;\n }\n return x;\n },\n },\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\n\nexport function isAbcPoolName(name?: string) {\n return name?.startsWith('abc:');\n}\n\nexport function isTopLevelPool(pool?: PoolInfo) {\n const {parent} = pool || {};\n\n return parent === ROOT_POOL_NAME;\n}\n","import find_ from 'lodash/find';\nimport indexOf_ from 'lodash/indexOf';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {OperationInfo, PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\nimport {attachTreeLeaves, prepareTree} from '../../common/hammer/tree-list';\n\nfunction getPool(pools: Array<PoolInfo>, name: string) {\n return find_(pools, (pool) => pool.name === name);\n}\n\nexport function prepareTrees(trees: Array<unknown>) {\n return map_(trees, (tree) => ypath.getValue(tree, '')).sort();\n}\n\nexport function prepareCurrentTree(defaultTree: unknown, trees: Array<string>, tree: string) {\n return tree !== '' && trees.indexOf(tree) !== -1\n ? tree\n : ypath.getValue(defaultTree, '') || trees[0];\n}\n\nexport function preparePools(\n pools: Record<string, PoolInfo>,\n operations: Record<string, OperationInfo>,\n) {\n const treeNodesMap = prepareTree<PoolInfo, OperationInfo>(pools, (entry: PoolInfo) =>\n ypath.getValue(entry, '/parent'),\n );\n\n attachTreeLeaves(treeNodesMap, operations, (operation: OperationInfo) =>\n ypath.getValue(operation, '/pool'),\n );\n\n return map_(treeNodesMap);\n}\n\nexport function computePathItems(pools: Array<PoolInfo>, name: string) {\n let pool: PoolInfo | undefined =\n getPool(pools, name) || ({parent: ROOT_POOL_NAME, name} as PoolInfo);\n const pathItems = [];\n\n // Unknown pool or dynamically created pool\n while (pool) {\n pathItems.unshift(pool.name);\n\n pool = getPool(pools, pool.parent);\n }\n\n return pathItems;\n}\n\nexport function computePoolPath(pool: PoolInfo, pools: Array<PoolInfo>) {\n const partitions = [pool.name];\n let parent: string | undefined = pool.parent;\n\n while (parent && parent !== ROOT_POOL_NAME) {\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n const parentPool = find_(pools, (item) => item.name === parent);\n partitions.unshift(parentPool?.name!);\n parent = parentPool?.parent;\n }\n\n return partitions.join('/');\n}\n\n/* eslint-disable prefer-const */\nexport function flattenAttributes(obj: any) {\n const toReturn: any = {};\n const object = ypath.getValue(obj);\n\n for (let i in object) {\n if (!Object.hasOwnProperty.call(object, i)) {\n continue;\n }\n\n const innerObject = ypath.getValue(object[i]);\n if (\n typeof innerObject === 'object' &&\n !Object.is(innerObject, null) &&\n Object.keys(innerObject).length > 0\n ) {\n toReturn[i] = object[i];\n\n const flatObject = flattenAttributes(object[i]);\n for (let x in flatObject) {\n if (!Object.hasOwnProperty.call(flatObject, x)) {\n continue;\n }\n\n toReturn[x] = flatObject[x];\n }\n } else {\n toReturn[i] = object[i];\n }\n }\n\n return toReturn;\n}\n\nfunction getResourceLimit(pool: PoolInfo | undefined, limitKey: string): number | '' {\n const value = Number(ypath.getValue(pool, `/cypressAttributes/resource_limits/${limitKey}`));\n return isNaN(value) ? '' : value;\n}\n\nfunction prepareValueDetails(pool: PoolInfo | undefined, path: string) {\n if (!pool) {\n return {};\n }\n\n const value = Number(ypath.getValue(pool, path));\n const childrenSum = prepareMinGuaranteed(pool, path);\n\n return {\n value: isNaN(value) ? undefined : value,\n childrenSum: isNaN(childrenSum!) ? undefined : childrenSum,\n };\n}\n\nfunction prepareMinGuaranteed(pool?: PoolInfo, path = '') {\n const res = reduce_(\n pool?.children,\n (sum, item) => {\n const tmp = Number(ypath.getValue(item, path) || 0);\n return isNaN(tmp) ? sum : tmp + firstValidNumber(sum, 0)!;\n },\n NaN,\n );\n return isNaN(res) ? undefined : res;\n}\n\nfunction firstValidNumber(...args: number[]) {\n for (let i = 0; i < args.length; ++i) {\n if (!isNaN(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nexport const INTEGRAL_GUARANTEES_PREFIX = 'integral_guarantees/';\n\nexport const POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR = {\n guaranteeType: INTEGRAL_GUARANTEES_PREFIX + 'guarantee_type',\n burstCpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/cpu',\n burstRam: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/memory',\n burstGpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/gpu',\n flowCpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/cpu',\n flowRam: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/memory',\n flowGpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/gpu',\n};\n\nexport const POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE = {\n cpuStrong: 'strong_guarantee_resources/cpu',\n gpuStrong: 'strong_guarantee_resources/gpu',\n memoryStrong: 'strong_guarantee_resources/memory',\n //userSlotsStrong: 'strong_guarantee_resources/user_slots',\n};\n\nexport const POOL_GENERAL_TYPE_TO_ATTRIBUTE = {\n maxOperationCount: 'max_operation_count',\n maxRunningOperationCount: 'max_running_operation_count',\n};\n\nexport const POOL_RESOURCE_TYPE_TO_ATTRIBUTE = {\n ...POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n ...POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE,\n ...POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR,\n};\n\nexport type PoolStrongResourceType = keyof typeof POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE;\nexport type PoolIntegralResourceType = keyof typeof POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR;\nexport type PoolGeneralResourceType = keyof typeof POOL_GENERAL_TYPE_TO_ATTRIBUTE;\nexport type PoolResourceType = keyof typeof POOL_RESOURCE_TYPE_TO_ATTRIBUTE;\n\nexport function getPoolResourceInfo(pool: PoolInfo, type: PoolResourceType) {\n const path = '/cypressAttributes/' + POOL_RESOURCE_TYPE_TO_ATTRIBUTE[type];\n return prepareValueDetails(pool, path);\n}\n\nexport interface InitialPoolResourceInfo {\n limit?: number;\n source?: string;\n}\n\nexport function getPoolResourceInitialValue(\n pool: PoolInfo | undefined,\n type: PoolResourceType,\n allowSource: boolean,\n): InitialPoolResourceInfo {\n if (!pool) {\n return {};\n }\n const {value} = getPoolResourceInfo(pool, type);\n return {\n limit: value,\n source: allowSource ? pool.parent : undefined,\n };\n}\n\nexport function getInitialValues(editItem: PoolInfo | undefined, allowedSources: Array<string>) {\n const slug = ypath.getValue(editItem, '/abc/slug');\n\n const allowSource = -1 !== indexOf_(allowedSources, editItem?.parent);\n\n return {\n general: {\n name: editItem?.name,\n abcService: slug\n ? {\n key: slug,\n value: slug,\n title: ypath.getValue(editItem, '/abc/name'),\n }\n : undefined,\n parent: editItem?.parent,\n mode: editItem?.mode,\n weight: ypath.getNumber(editItem, '/cypressAttributes/weight'),\n maxOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxOperationCount', allowSource),\n {source: undefined},\n ),\n maxRunningOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxRunningOperationCount', allowSource),\n {source: undefined},\n ),\n },\n resourceGuarantee: {\n cpuStrong: getPoolResourceInitialValue(editItem, 'cpuStrong', allowSource),\n gpuStrong: getPoolResourceInitialValue(editItem, 'gpuStrong', allowSource),\n memoryStrong: getPoolResourceInitialValue(editItem, 'memoryStrong', allowSource),\n //userSlotsStrong: getPoolResourceInitialValue(editItem, 'userSlotsStrong', allowSource),\n },\n integralGuarantee: {\n guaranteeType:\n ypath.getValue(\n editItem,\n `/cypressAttributes/${POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR.guaranteeType}`,\n ) || 'none',\n burstCpu: getPoolResourceInitialValue(editItem, 'burstCpu', allowSource),\n burstRam: getPoolResourceInitialValue(editItem, 'burstRam', allowSource),\n burstGpu: getPoolResourceInitialValue(editItem, 'burstGpu', allowSource),\n flowCpu: getPoolResourceInitialValue(editItem, 'flowCpu', allowSource),\n flowRam: getPoolResourceInitialValue(editItem, 'flowRam', allowSource),\n flowGpu: getPoolResourceInitialValue(editItem, 'flowGpu', allowSource),\n },\n resourceLimits: {\n cpu: getResourceLimit(editItem, 'cpu'),\n gpu: getResourceLimit(editItem, 'gpu'),\n memory: getResourceLimit(editItem, 'memory'),\n userSlots: getResourceLimit(editItem, 'user_slots'),\n },\n otherSettings: {\n forbidImmediateOperations: ypath.getBoolean(editItem, '/forbidImmediateOperations'),\n fifoSortParams: ypath.getValue(editItem, '/fifoSortParams'),\n createEphemeralSubpools: ypath.getBoolean(editItem, '/createEphemeralSubpools'),\n },\n };\n}\n","import { I18N } from '@gravity-ui/i18n';\nimport en from './keysets/en.json';\nimport ru from './keysets/ru.json';\nconst i18nFactory = new I18N();\nconst EN = 'en';\nconst RU = 'ru';\ni18nFactory.registerKeysets(EN, en);\ni18nFactory.registerKeysets(RU, ru);\nconst i18n = i18nFactory.i18n.bind(i18nFactory);\nexport { i18nFactory, i18n };\n","export const CHARTKIT_ERROR_CODE = {\n NO_DATA: 'ERR.CK.NO_DATA',\n INVALID_DATA: 'ERR.CK.INVALID_DATA',\n UNKNOWN: 'ERR.CK.UNKNOWN_ERROR',\n UNKNOWN_PLUGIN: 'ERR.CK.UNKNOWN_PLUGIN',\n TOO_MANY_LINES: 'ERR.CK.TOO_MANY_LINES',\n};\nexport class ChartKitError extends Error {\n constructor({ originalError, message, code = CHARTKIT_ERROR_CODE.UNKNOWN, } = {}) {\n super(message);\n this.isCustomError = true;\n this.code = code;\n if (originalError) {\n this.name = originalError.name;\n this.stack = originalError.stack;\n }\n }\n}\nexport const isChartKitError = (error) => {\n return error instanceof Error && 'isCustomError' in error;\n};\n","import isObject from 'lodash/isObject';\nimport mergeWith from 'lodash/mergeWith';\n// @ts-ignore\nexport function mergeSettingStrategy(objValue, srcValue, key) {\n if (key === 'plugins') {\n const currentPlugins = [...objValue];\n const newPlugins = [...srcValue];\n // modify existing plugins\n let newSettingsPlugins = currentPlugins.map((currentPlugin) => {\n const newPluginIndex = newPlugins.findIndex(({ type }) => type === currentPlugin.type);\n if (newPluginIndex !== -1) {\n const newPlugin = newPlugins[newPluginIndex];\n newPlugins.splice(newPluginIndex, 1);\n return {\n type: currentPlugin.type,\n renderer: newPlugin.renderer,\n };\n }\n return currentPlugin;\n });\n // add new plugins if it exist after modified\n if (newPlugins.length > 0) {\n newSettingsPlugins = [...newSettingsPlugins, ...newPlugins];\n }\n return newSettingsPlugins;\n }\n if (isObject(objValue)) {\n return mergeWith(objValue, srcValue, mergeSettingStrategy);\n }\n return srcValue;\n}\n","import { configure } from '@gravity-ui/uikit';\nimport get from 'lodash/get';\nimport mergeWith from 'lodash/mergeWith';\nimport { i18nFactory } from '../../i18n';\nimport { EventEmitter } from './eventEmitter';\nimport { mergeSettingStrategy } from './mergeSettingStrategy';\nexport const settingsEventEmitter = new EventEmitter();\nconst removeUndefinedValues = (data) => {\n return Object.entries(data).reduce((acc, [key, value]) => {\n if (typeof value !== 'undefined') {\n acc[key] = value;\n }\n return acc;\n }, {});\n};\nconst updateLang = (lang) => {\n configure({ lang });\n i18nFactory.setLang(lang);\n};\nclass ChartKitSettings {\n constructor() {\n this.settings = {\n plugins: [],\n lang: 'en',\n };\n updateLang(this.get('lang'));\n }\n get(key) {\n return get(this.settings, key);\n }\n set(updates) {\n const filteredUpdates = removeUndefinedValues(updates);\n this.settings = mergeWith(this.settings, filteredUpdates, mergeSettingStrategy);\n if (filteredUpdates.lang) {\n const lang = filteredUpdates.lang || this.get('lang');\n updateLang(lang);\n settingsEventEmitter.dispatch('change-lang', lang);\n }\n }\n}\nexport const settings = new ChartKitSettings();\n","export class EventEmitter {\n constructor() {\n this.events = {};\n }\n on(type, event) {\n if (this.events[type]) {\n this.events[type].push(event);\n }\n else {\n this.events[type] = [event];\n }\n }\n off(type, eventId) {\n if (this.events[type]) {\n this.events[type] = this.events[type].filter(({ id }) => id !== eventId);\n }\n }\n dispatch(type, args) {\n if (this.events[type]) {\n this.events[type].forEach(({ action }) => {\n action(args);\n });\n }\n }\n}\n","import { withNaming } from '@bem-react/classname';\nexport const NAMESPACE = 'chartkit-';\nexport const cn = withNaming({ e: '__', m: '_' });\nexport const block = withNaming({ n: NAMESPACE, e: '__', m: '_' });\n","export const randomString = (length, chars) => {\n let result = '';\n for (let i = length; i > 0; --i) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n};\nexport const getRandomCKId = () => `ck.${randomString(10, '0123456789abcdefghijklmnopqrstuvwxyz')}`;\n","import * as React from 'react';\nconst ChevronLeft = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.53 2.97a.75.75 0 0 1 0 1.06L6.56 8l3.97 3.97a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 0Z\", clipRule: \"evenodd\" })));\nexport default ChevronLeft;\n","import * as React from 'react';\nconst ChevronRight = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0Z\", clipRule: \"evenodd\" })));\nexport default ChevronRight;\n","import * as React from 'react';\nconst Ellipsis = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M3 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\", clipRule: \"evenodd\" })));\nexport default Ellipsis;\n","import React from 'react';\nexport const AlertContext = React.createContext(null);\n","'use client';\nimport React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const useAlertContext = () => {\n const context = React.useContext(AlertContext);\n if (!context)\n throw new Error('Alert: `useAlertContext` hook is used out of \"AlertContext\"');\n return context;\n};\n","'use client';\nimport React from 'react';\nimport { Button } from '../Button';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertAction = (props) => {\n const { view } = useAlertContext();\n return React.createElement(Button, Object.assign({ view: view === 'filled' ? 'normal-contrast' : undefined }, props));\n};\n","import { block } from '../utils/cn';\nimport './Alert.css';\nexport const DEFAULT_ICON_SIZE = 18;\nexport const bAlert = block('alert');\n","'use client';\nimport React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const AlertContextProvider = ({ layout, view, children }) => {\n return React.createElement(AlertContext.Provider, { value: { layout, view } }, children);\n};\n","import React from 'react';\nimport { CircleCheck, CircleCheckFill, CircleInfo, CircleInfoFill, CircleXmark, CircleXmarkFill, Thunderbolt, ThunderboltFill, TriangleExclamation, TriangleExclamationFill, } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text/colorText/colorText';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nconst typeToIcon = {\n danger: {\n filled: CircleXmarkFill,\n outlined: CircleXmark,\n },\n info: {\n filled: CircleInfoFill,\n outlined: CircleInfo,\n },\n success: {\n filled: CircleCheckFill,\n outlined: CircleCheck,\n },\n warning: {\n filled: TriangleExclamationFill,\n outlined: TriangleExclamation,\n },\n utility: {\n filled: ThunderboltFill,\n outlined: Thunderbolt,\n },\n normal: null,\n};\nexport const AlertIcon = ({ className, theme, view = 'filled', size = DEFAULT_ICON_SIZE, }) => {\n const iconByTheme = typeToIcon[theme];\n if (!iconByTheme) {\n return null;\n }\n let color;\n if (theme === 'success') {\n color = 'positive';\n }\n else if (theme !== 'normal') {\n color = theme;\n }\n return (React.createElement(\"div\", { className: bAlert('icon', colorText({ color }, className)) },\n React.createElement(Icon, { data: iconByTheme[view], size: size })));\n};\n","import * as React from 'react';\nconst CircleXmarkFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z\", clipRule: \"evenodd\" })));\nexport default CircleXmarkFill;\n","import * as React from 'react';\nconst CircleXmark = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z\", clipRule: \"evenodd\" })));\nexport default CircleXmark;\n","import * as React from 'react';\nconst CircleInfoFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z\", clipRule: \"evenodd\" })));\nexport default CircleInfoFill;\n","import * as React from 'react';\nconst CircleCheckFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z\", clipRule: \"evenodd\" })));\nexport default CircleCheckFill;\n","import * as React from 'react';\nconst TriangleExclamationFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\", clipRule: \"evenodd\" })));\nexport default TriangleExclamationFill;\n","import * as React from 'react';\nconst ThunderboltFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", d: \"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z\" })));\nexport default ThunderboltFill;\n","import { addComponentKeysets } from '../../utils/addComponentKeysets';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Alert';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","import React from 'react';\nimport { Xmark } from '@gravity-ui/icons';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text';\nimport { Flex, spacing } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { AlertActions } from './AlertActions';\nimport { AlertContextProvider } from './AlertContextProvider';\nimport { AlertIcon } from './AlertIcon';\nimport { AlertTitle } from './AlertTitle';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nimport i18n from './i18n';\nexport const Alert = (props) => {\n const { theme = 'normal', view = 'filled', layout = 'vertical', message, className, corners, style, onClose, align, qa, } = props;\n return (React.createElement(AlertContextProvider, { layout: layout, view: view },\n React.createElement(Card, { style: style, className: bAlert({ corners }, spacing({ py: 4, px: 5 }, className)), theme: theme, view: view, qa: qa },\n React.createElement(Flex, { gap: \"3\", alignItems: align },\n typeof props.icon === 'undefined' ? (React.createElement(Alert.Icon, { theme: theme, view: view })) : (props.icon // ability to pass `null` as `icon` prop value\n ),\n React.createElement(Flex, { direction: layout === 'vertical' ? 'column' : 'row', gap: \"5\", grow: true },\n React.createElement(Flex, { gap: \"2\", grow: true, className: bAlert('text-content') },\n React.createElement(Flex, { direction: \"column\", gap: \"1\", grow: true, justifyContent: align },\n typeof props.title === 'string' ? (React.createElement(Alert.Title, { text: props.title })) : (props.title),\n message)),\n Array.isArray(props.actions) ? (React.createElement(Alert.Actions, { items: props.actions })) : (props.actions)),\n onClose && (React.createElement(Button, { view: \"flat\", className: bAlert('close-btn'), onClick: onClose, extraProps: {\n 'aria-label': i18n('label_close'),\n } },\n React.createElement(Icon, { data: Xmark, size: DEFAULT_ICON_SIZE, className: colorText({ color: 'secondary' }) })))))));\n};\nAlert.Icon = AlertIcon;\nAlert.Title = AlertTitle;\nAlert.Actions = AlertActions;\nAlert.Action = AlertAction;\n","import React from 'react';\nimport { Text } from '../Text';\nimport { bAlert } from './constants';\nexport const AlertTitle = ({ text, className }) => {\n return (React.createElement(Text, { variant: \"subheader-2\", className: bAlert('title', className) }, text));\n};\n","'use client';\nimport React from 'react';\nimport { Flex } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { bAlert } from './constants';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertActions = ({ items, children, className }) => {\n const { layout } = useAlertContext();\n return (React.createElement(Flex, { className: bAlert('actions', { minContent: layout === 'horizontal' }, className), direction: \"row\", gap: \"3\", wrap: true, alignItems: layout === 'horizontal' ? 'center' : 'flex-start' }, (items === null || items === void 0 ? void 0 : items.map(({ handler, text }, i) => (React.createElement(AlertAction, { key: i, onClick: handler }, text)))) || children));\n};\n","import { block } from '../utils/cn';\nexport const cnDropdownMenu = block('dropdown-menu');\n","import React from 'react';\nexport const DropdownMenuContext = React.createContext({\n toggle() { },\n data: undefined,\n});\nDropdownMenuContext.displayName = 'DropdownMenu.Context';\n","export function moveBack(items, activeItemIndex, steps = 1, skip) {\n const newActiveItemIndex = (items.length + activeItemIndex - (steps % items.length)) % items.length;\n if (skip && skip(items[newActiveItemIndex])) {\n return moveBack(items, newActiveItemIndex, 1, skip);\n }\n return newActiveItemIndex;\n}\n","export function moveForward(items, activeItemIndex, steps = 1, skip) {\n const newActiveItemIndex = (activeItemIndex + steps) % items.length;\n if (skip && skip(items[newActiveItemIndex])) {\n return moveForward(items, newActiveItemIndex, 1, skip);\n }\n return newActiveItemIndex;\n}\n","'use client';\nimport React from 'react';\nconst rootMenuPath = [];\nexport const DropdownMenuNavigationContext = React.createContext({\n activeMenuPath: rootMenuPath,\n setActiveMenuPath: () => { },\n anchorRef: { current: null },\n});\nexport const DropdownMenuNavigationContextProvider = ({ anchorRef, children, disabled, }) => {\n const [activeMenuPath, setActiveMenuPath] = React.useState(rootMenuPath);\n React.useEffect(() => {\n if (disabled) {\n setActiveMenuPath(rootMenuPath);\n }\n }, [disabled]);\n const contextValue = React.useMemo(() => ({\n activeMenuPath,\n setActiveMenuPath,\n anchorRef,\n }), [activeMenuPath, anchorRef]);\n return (React.createElement(DropdownMenuNavigationContext.Provider, { value: contextValue }, children));\n};\n","export const dropdownMenuSeparator = { text: '', action: () => { }, path: [] };\n","import { dropdownMenuSeparator } from '../constants';\nexport function isSeparator(item) {\n return item === dropdownMenuSeparator;\n}\n","import { isSeparator } from './isSeparator';\nexport function shouldSkipItemNavigation(item) {\n return item.disabled || isSeparator(item);\n}\n","export function stringifyNavigationPath(path) {\n var _a;\n return (_a = path === null || path === void 0 ? void 0 : path.join(' ')) !== null && _a !== void 0 ? _a : '';\n}\n","'use client';\nimport React from 'react';\nimport { useListNavigation } from '../../hooks';\nimport { Menu } from '../Menu';\nimport { Popup } from '../Popup';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuNavigationContext } from './DropdownMenuNavigationContext';\nimport { isSeparator } from './utils/isSeparator';\nimport { shouldSkipItemNavigation } from './utils/shouldSkipItemNavigation';\nimport { stringifyNavigationPath } from './utils/stringifyNavigationPath';\nexport const DropdownMenuPopup = ({ items, open, anchorRef, onClose, size, menuProps, children, popupProps, path = [], }) => {\n const { toggle, data } = React.useContext(DropdownMenuContext);\n const { activeMenuPath, setActiveMenuPath, anchorRef: navigationAnchorRef, } = React.useContext(DropdownMenuNavigationContext);\n const isSubmenu = path.length > 0;\n const activateParent = React.useCallback(() => {\n setActiveMenuPath(path.slice(0, path.length - 1));\n }, [setActiveMenuPath, path]);\n const handleMouseEnter = React.useCallback((event) => {\n var _a;\n setActiveMenuPath(path);\n (_a = popupProps === null || popupProps === void 0 ? void 0 : popupProps.onMouseEnter) === null || _a === void 0 ? void 0 : _a.call(popupProps, event);\n }, [path, popupProps, setActiveMenuPath]);\n const handleMouseLeave = React.useCallback((event) => {\n var _a;\n activateParent();\n (_a = popupProps === null || popupProps === void 0 ? void 0 : popupProps.onMouseLeave) === null || _a === void 0 ? void 0 : _a.call(popupProps, event);\n }, [activateParent, popupProps]);\n const handleSelect = React.useCallback((activeItem, event) => {\n var _a;\n if (activeItem.items && activeItem.path) {\n setActiveMenuPath(activeItem.path);\n }\n else {\n (_a = activeItem.action) === null || _a === void 0 ? void 0 : _a.call(activeItem, event, data);\n toggle(false);\n }\n }, [data, setActiveMenuPath, toggle]);\n const handleKeydown = React.useCallback((activeItemIndex, event) => {\n switch (event.key) {\n case 'Escape': {\n if (isSubmenu) {\n event.stopPropagation();\n activateParent === null || activateParent === void 0 ? void 0 : activateParent();\n }\n return false;\n }\n case 'Enter':\n case ' ': {\n const activeItem = items[activeItemIndex];\n const isSubmenuToggleActive = activeItem === null || activeItem === void 0 ? void 0 : activeItem.items;\n if (isSubmenu || isSubmenuToggleActive) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (activeItem) {\n handleSelect(activeItem, event);\n }\n return false;\n }\n }\n return true;\n }, [activateParent, handleSelect, isSubmenu, items]);\n const isNavigationActive = open && stringifyNavigationPath(path) === stringifyNavigationPath(activeMenuPath);\n const { activeItemIndex, setActiveItemIndex, reset: resetNavigation, } = useListNavigation({\n items,\n skip: shouldSkipItemNavigation,\n anchorRef: navigationAnchorRef,\n onAnchorKeyDown: handleKeydown,\n disabled: !isNavigationActive,\n initialValue: isSubmenu ? 0 : -1,\n });\n React.useEffect(() => {\n if (!open) {\n resetNavigation();\n }\n }, [open, resetNavigation]);\n return (React.createElement(Popup, Object.assign({ open: open, anchorRef: anchorRef, onClose: onClose }, popupProps, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave }), children || (React.createElement(Menu, Object.assign({ className: cnDropdownMenu('menu'), size: size }, menuProps), items.map((item, index) => {\n var _a;\n const isActive = isNavigationActive && activeItemIndex === index;\n const activate = () => setActiveItemIndex(index);\n const isActiveParent = open &&\n !isActive &&\n activeMenuPath.length !== 0 &&\n stringifyNavigationPath(item.path) ===\n stringifyNavigationPath(activeMenuPath.slice(0, item.path.length));\n const extraProps = Object.assign(Object.assign({}, item.extraProps), { onMouseEnter: activate });\n return (React.createElement(DropdownMenuItem, Object.assign({ key: index, className: cnDropdownMenu('menu-item', {\n separator: isSeparator(item),\n 'active-parent': isActiveParent,\n 'with-submenu': Boolean((_a = item.items) === null || _a === void 0 ? void 0 : _a.length),\n }, item.className), selected: isActive, popupProps: popupProps, closeMenu: onClose }, item, { extraProps: extraProps })));\n })))));\n};\n","import React from 'react';\nimport { moveBack } from './moveBack';\nimport { moveForward } from './moveForward';\nexport function useListNavigation({ items, skip, pageSize, processHomeKey = true, processEndKey = true, anchorRef, disabled = false, initialValue = -1, onAnchorKeyDown, }) {\n const [activeItemIndex, setActiveItemIndex] = React.useState(initialValue);\n const reset = React.useCallback(() => {\n setActiveItemIndex(initialValue);\n }, [initialValue]);\n React.useEffect(() => {\n if (items) {\n reset();\n }\n }, [items, reset]);\n React.useLayoutEffect(() => {\n if (disabled) {\n return undefined;\n }\n const canNavigate = items.some((item) => !(skip === null || skip === void 0 ? void 0 : skip(item)));\n if (!canNavigate) {\n return undefined;\n }\n const anchor = anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current;\n if (!anchor) {\n return undefined;\n }\n const handleKeyDown = (event) => {\n const shouldProcessKeydown = onAnchorKeyDown === null || onAnchorKeyDown === void 0 ? void 0 : onAnchorKeyDown(activeItemIndex, event);\n if (shouldProcessKeydown === false) {\n return;\n }\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n // Go 1 step forward\n setActiveItemIndex((previousActiveItemIndex) => moveForward(items, previousActiveItemIndex, 1, skip));\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n // Go 1 step back\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, 1, skip));\n break;\n }\n case 'PageDown': {\n if (!pageSize) {\n return;\n }\n event.preventDefault();\n // Go pageSize steps forward\n setActiveItemIndex((previousActiveItemIndex) => moveForward(items, previousActiveItemIndex, pageSize, skip));\n break;\n }\n case 'PageUp': {\n if (!pageSize) {\n return;\n }\n event.preventDefault();\n // Go pageSize steps back\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, pageSize, skip));\n break;\n }\n case 'Home': {\n if (!processHomeKey) {\n return;\n }\n event.preventDefault();\n // Go to the start of the list\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, previousActiveItemIndex, skip));\n break;\n }\n case 'End': {\n if (!processEndKey) {\n return;\n }\n event.preventDefault();\n // Go to the end of the list\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, previousActiveItemIndex + 1, skip));\n break;\n }\n }\n };\n anchor.addEventListener('keydown', handleKeyDown);\n return () => {\n anchor.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n activeItemIndex,\n anchorRef,\n disabled,\n items,\n onAnchorKeyDown,\n pageSize,\n processEndKey,\n processHomeKey,\n skip,\n ]);\n return {\n activeItemIndex,\n setActiveItemIndex,\n reset,\n };\n}\n","export function isSubmenuOpen(path, activeMenuPath) {\n var _a;\n return (_a = path === null || path === void 0 ? void 0 : path.every((item, index) => item === (activeMenuPath === null || activeMenuPath === void 0 ? void 0 : activeMenuPath[index]))) !== null && _a !== void 0 ? _a : false;\n}\n","import React from 'react';\nimport { DropdownMenuNavigationContext } from '../DropdownMenuNavigationContext';\nimport { isSubmenuOpen } from '../utils/isSubmenuOpen';\nexport function useSubmenu({ items, path }) {\n const { activeMenuPath, setActiveMenuPath } = React.useContext(DropdownMenuNavigationContext);\n const hasSubmenu = Boolean(path) && Boolean(items === null || items === void 0 ? void 0 : items.length);\n const closeSubmenu = React.useCallback(() => {\n if (!path) {\n return;\n }\n setActiveMenuPath(path.slice(0, path.length - 1));\n }, [path, setActiveMenuPath]);\n const openSubmenu = React.useCallback(() => {\n if (!path) {\n return;\n }\n setActiveMenuPath(path);\n }, [path, setActiveMenuPath]);\n return {\n hasSubmenu,\n isSubmenuOpen: isSubmenuOpen(path, activeMenuPath),\n openSubmenu,\n closeSubmenu,\n };\n}\n","'use client';\nimport { __rest } from \"tslib\";\nimport React from 'react';\nimport { ChevronLeft, ChevronRight } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { Menu } from '../Menu';\nimport { useDirection } from '../theme';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuPopup } from './DropdownMenuPopup';\nimport { useSubmenu } from './hooks/useSubmenu';\nexport const DropdownMenuItem = (_a) => {\n var { text, action, items: subMenuItems, popupProps, closeMenu, children, path } = _a, props = __rest(_a, [\"text\", \"action\", \"items\", \"popupProps\", \"closeMenu\", \"children\", \"path\"]);\n const { toggle, data } = React.useContext(DropdownMenuContext);\n const menuItemRef = React.useRef(null);\n const direction = useDirection();\n const { hasSubmenu, isSubmenuOpen, closeSubmenu, openSubmenu } = useSubmenu({\n items: subMenuItems,\n path,\n });\n const handleCloseMenu = React.useCallback(() => {\n const close = () => {\n if (closeMenu) {\n closeMenu();\n }\n else {\n toggle(false);\n }\n };\n if (hasSubmenu) {\n closeSubmenu();\n // Wait for submenu to close\n requestAnimationFrame(close);\n }\n else {\n close();\n }\n }, [closeMenu, closeSubmenu, hasSubmenu, toggle]);\n const handleMenuItemClick = React.useCallback((event) => {\n if (hasSubmenu) {\n return;\n }\n action === null || action === void 0 ? void 0 : action(event, data);\n handleCloseMenu();\n }, [action, data, handleCloseMenu, hasSubmenu]);\n const extraProps = React.useMemo(() => {\n return Object.assign(Object.assign({}, props.extraProps), { onMouseEnter: (event) => {\n var _a, _b;\n (_b = (_a = props.extraProps) === null || _a === void 0 ? void 0 : _a.onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n if (hasSubmenu) {\n openSubmenu();\n }\n }, onMouseLeave: (event) => {\n var _a, _b;\n (_b = (_a = props.extraProps) === null || _a === void 0 ? void 0 : _a.onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n if (hasSubmenu) {\n closeSubmenu();\n }\n } });\n }, [props.extraProps, closeSubmenu, hasSubmenu, openSubmenu]);\n const subMenuPlacement = React.useMemo(() => (direction === 'rtl' ? ['left-start', 'right-start'] : ['right-start', 'left-start']), [direction]);\n const iconEnd = React.useMemo(() => hasSubmenu ? (React.createElement(Icon, { data: direction === 'rtl' ? ChevronLeft : ChevronRight, size: 10, className: cnDropdownMenu('sub-menu-arrow') })) : (props.iconEnd), [hasSubmenu, direction, props.iconEnd]);\n return (React.createElement(React.Fragment, null,\n React.createElement(Menu.Item, Object.assign({ ref: menuItemRef }, props, { extraProps: extraProps, onClick: handleMenuItemClick, iconEnd: iconEnd }), text || children),\n hasSubmenu && subMenuItems && (React.createElement(DropdownMenuPopup, { popupProps: Object.assign(Object.assign({}, popupProps), { className: cnDropdownMenu('sub-menu', popupProps === null || popupProps === void 0 ? void 0 : popupProps.className), placement: subMenuPlacement }), items: subMenuItems, path: path, open: isSubmenuOpen, anchorRef: menuItemRef, onClose: handleCloseMenu }))));\n};\n","export function toItemList(items, separator, path = [], startIndex = 0) {\n const updatedItems = [];\n let addedGroup = false;\n let index = startIndex;\n for (const item of items) {\n if (Array.isArray(item)) {\n const groupItems = toItemList(item, separator, path, index);\n if (updatedItems.length !== 0) {\n updatedItems.push(separator);\n }\n updatedItems.push(...groupItems);\n index += groupItems.length;\n addedGroup = true;\n }\n else {\n if (item.hidden) {\n continue;\n }\n if (addedGroup) {\n updatedItems.push(separator);\n }\n const updatedItem = Object.assign(Object.assign({}, item), { path: [...path, index++] });\n if (item.items) {\n updatedItem.items = toItemList(item.items, separator, updatedItem.path);\n }\n updatedItems.push(updatedItem);\n addedGroup = false;\n }\n }\n return updatedItems;\n}\n","'use client';\nimport React from 'react';\nimport { Ellipsis } from '@gravity-ui/icons';\nimport { useActionHandlers } from '../../hooks/useActionHandlers';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem as DropdownMenuItemComponent } from './DropdownMenuItem';\nimport { DropdownMenuNavigationContextProvider } from './DropdownMenuNavigationContext';\nimport { DropdownMenuPopup } from './DropdownMenuPopup';\nimport { dropdownMenuSeparator } from './constants';\nimport { usePopupVisibility } from './hooks/usePopupVisibility';\nimport { useScrollHandler } from './hooks/useScrollHandler';\nimport { toItemList } from './utils/toItemList';\nimport './DropdownMenu.css';\nconst DropdownMenu = ({ items = [], size = 'm', icon = React.createElement(Icon, { data: Ellipsis }), open, onOpenToggle, hideOnScroll = true, data, disabled, switcher, renderSwitcher, switcherWrapperClassName, defaultSwitcherProps, defaultSwitcherClassName, onSwitcherClick, menuProps, popupProps, children, }) => {\n const anchorRef = React.useRef(null);\n const { isPopupShown, togglePopup, closePopup } = usePopupVisibility(open, onOpenToggle, disabled);\n useScrollHandler(closePopup, anchorRef, !isPopupShown || !hideOnScroll);\n const contextValue = React.useMemo(() => ({\n toggle: togglePopup,\n data,\n }), [data, togglePopup]);\n const itemsList = React.useMemo(() => toItemList(items, dropdownMenuSeparator), [items]);\n const handleSwitcherClick = React.useCallback((event) => {\n if (disabled) {\n return;\n }\n onSwitcherClick === null || onSwitcherClick === void 0 ? void 0 : onSwitcherClick(event);\n togglePopup();\n }, [disabled, onSwitcherClick, togglePopup]);\n const { onKeyDown: handleSwitcherKeyDown } = useActionHandlers(handleSwitcherClick);\n const switcherProps = React.useMemo(() => ({\n onClick: handleSwitcherClick,\n onKeyDown: handleSwitcherKeyDown,\n }), [handleSwitcherClick, handleSwitcherKeyDown]);\n return (React.createElement(DropdownMenuContext.Provider, { value: contextValue },\n React.createElement(\"div\", Object.assign({ ref: anchorRef, className: cnDropdownMenu('switcher-wrapper', switcherWrapperClassName) }, (renderSwitcher ? {} : switcherProps)), (renderSwitcher === null || renderSwitcher === void 0 ? void 0 : renderSwitcher(switcherProps)) || switcher || (React.createElement(Button, Object.assign({ view: \"flat\", size: size }, defaultSwitcherProps, { className: cnDropdownMenu('switcher-button', defaultSwitcherClassName), disabled: disabled }), icon))),\n React.createElement(DropdownMenuNavigationContextProvider, { anchorRef: anchorRef, disabled: !isPopupShown },\n React.createElement(DropdownMenuPopup, { items: itemsList, open: isPopupShown, size: size, menuProps: menuProps, anchorRef: anchorRef, onClose: closePopup, popupProps: popupProps }, children))));\n};\nconst DropdownMenuExport = Object.assign(DropdownMenu, { Item: DropdownMenuItemComponent });\nexport { DropdownMenuExport as DropdownMenu };\n","import React from 'react';\nimport { useConditionallyControlledState } from '../../../hooks/private';\nexport function usePopupVisibility(visible, onChangeVisibility, disabled) {\n const [isPopupShown, setPopupShown] = useConditionallyControlledState(visible, onChangeVisibility, false);\n const togglePopup = React.useCallback((open) => {\n setPopupShown((isShown) => {\n if (typeof open === 'boolean') {\n return open;\n }\n return !isShown;\n });\n }, [setPopupShown]);\n const closePopup = React.useCallback(() => {\n setPopupShown(false);\n }, [setPopupShown]);\n React.useEffect(() => {\n if (disabled && isPopupShown) {\n closePopup();\n }\n }, [closePopup, disabled, isPopupShown]);\n return {\n isPopupShown,\n togglePopup,\n closePopup,\n };\n}\n","import { useStateWithCallback } from '../useStateWithCallback';\nexport function useConditionallyControlledState(property, setProperty, initialState, isControlled = property !== undefined && setProperty !== undefined) {\n const state = useStateWithCallback((property || initialState), setProperty);\n if (isControlled) {\n return [property, setProperty];\n }\n return state;\n}\n","import React from 'react';\nimport { isFunction } from '../../../components/utils/typeCheckers';\nexport function useStateWithCallback(initialValue, callback) {\n const [state, setState] = React.useState(initialValue);\n const setWithCallback = React.useCallback((nextValue) => {\n if (isFunction(nextValue)) {\n setState((previousState) => {\n const newState = nextValue(previousState);\n callback === null || callback === void 0 ? void 0 : callback(newState);\n return newState;\n });\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(nextValue);\n setState(nextValue);\n }\n }, [callback]);\n return [state, setWithCallback];\n}\n","export const isFunction = (value) => typeof value === 'function';\n","import React from 'react';\nexport function useScrollHandler(onScroll, anchorRef, disabled) {\n React.useEffect(() => {\n if (disabled) {\n return undefined;\n }\n const handleScroll = (event) => {\n if (event.target.contains(anchorRef.current)) {\n onScroll(event);\n }\n };\n document.addEventListener('scroll', handleScroll, true);\n return () => {\n document.removeEventListener('scroll', handleScroll, true);\n };\n }, [anchorRef, onScroll, disabled]);\n}\n","import React from 'react';\nimport { useUniqId } from '../../hooks';\nimport { block } from '../utils/cn';\nconst b = block('menu');\nexport const MenuGroup = React.forwardRef(function MenuGroup({ label, children, style, className, qa }, ref) {\n const labelId = useUniqId();\n return (React.createElement(\"li\", { ref: ref, className: b('list-group-item') },\n React.createElement(\"div\", { style: style, className: b('group', className), \"data-qa\": qa },\n label && (React.createElement(\"div\", { id: labelId, className: b('group-label') }, label)),\n React.createElement(\"ul\", { role: \"group\", \"aria-labelledby\": labelId, className: b('group-list') }, children))));\n});\n","'use client';\nimport React from 'react';\nimport { useActionHandlers } from '../../hooks';\nimport { block } from '../utils/cn';\nimport { eventBroker } from '../utils/event-broker';\nconst b = block('menu');\nexport const MenuItem = React.forwardRef(function MenuItem({ icon, iconStart = icon, iconEnd, title, disabled, active, selected, href, target, rel, onClick, style, className, theme, extraProps, children, qa, }, ref) {\n const { onKeyDown } = useActionHandlers(onClick);\n const handleClickCapture = React.useCallback((event) => {\n eventBroker.publish({\n componentId: 'MenuItem',\n eventId: 'click',\n domEvent: event,\n });\n }, []);\n const defaultProps = {\n role: 'menuitem',\n onKeyDown: onClick && !disabled ? onKeyDown : undefined,\n };\n const commonProps = {\n title,\n onClick: disabled ? undefined : onClick,\n onClickCapture: disabled ? undefined : handleClickCapture,\n style,\n tabIndex: disabled ? -1 : 0,\n className: b('item', { disabled, active, selected, theme, interactive: Boolean(onClick) || Boolean(href) }, className),\n 'data-qa': qa,\n };\n const content = [\n iconStart && (React.createElement(\"div\", { key: \"icon-start\", className: b('item-icon') }, iconStart)),\n React.createElement(\"div\", { key: \"content\", className: b('item-content') }, children),\n iconEnd && (React.createElement(\"div\", { key: 'icon-end', className: b('item-icon-end') }, iconEnd)),\n ];\n let item;\n if (href) {\n item = (React.createElement(\"a\", Object.assign({}, defaultProps, extraProps, commonProps, { href: href, target: target, rel: rel }), content));\n }\n else {\n item = (React.createElement(\"div\", Object.assign({}, defaultProps, extraProps, commonProps), content));\n }\n return (React.createElement(\"li\", { ref: ref, className: b('list-item') }, item));\n});\n","'use client';\nimport React from 'react';\nimport { block } from '../utils/cn';\nimport { MenuGroup } from './MenuGroup';\nimport { MenuItem } from './MenuItem';\nimport './Menu.css';\nconst b = block('menu');\n// TODO: keyboard navigation, Up/Down arrows and Enter\nexport const Menu = React.forwardRef(function Menu({ size = 'm', children, style, className, qa }, ref) {\n return (React.createElement(\"ul\", { ref: ref, role: \"menu\", \n // tabIndex={0}\n style: style, className: b({ size }, className), \"data-qa\": qa }, children));\n});\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\n"],"names":["block","cn","Alerts","_ref","className","items","_ref$marginDirection","marginDirection","isEmpty_","_jsx","ErrorBoundary","children","CollapsibleSection","name","size","UI_COLLAPSIBLE_SIZE","map_","alert","index","Alert","error","AttributesButton","_ref$view","view","_ref$size","rest","_objectWithoutProperties","_excluded","Button","_objectSpread","Icon","awesome","connect","openAttributesModal","title","_ref$getPathProps","getPathProps","path","exactPath","attribute","attributes","_ref$withTooltip","withTooltip","_ref$tooltipProps","tooltipProps","placement","content","onClick","pathProps","Dropdown","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","state","popupVisible","anchor","React","toggle","setState","prevState","open","close","_createClass","key","value","_this$props","this","props","button","trigger","actionProps","undefined","onMouseEnter","onMouseLeave","template","_this$props$template","data","renderer","templates","get","__default__","_this$props2","popup","directions","Popup","onClose","anchorRef","hasArrow","renderTemplate","_jsxs","ref","renderButton","renderPopup","Component","defaultProps","zIndexGroupLevel","getHistogram","histogram","createGetQuartiles","createSelector","hammer","stat","quartiles","createGetPDF","pdf","createGetECDF","ecdf","steps","unshift","x","min","y","push","bucketNumber","bucketSize","HistogramChart","format","dataName","lineOnly","yagrData","xFormat","formatLib","Bytes","Number","_ref2","_ref5","_ref6","_step","buckets","timeline","NaN","_iterator","_createForOfIteratorHelper","s","n","done","item","getX","getY","err","e","f","graphs","type","color","getSerieColor","step","getLineOnlyData","_ref3","_ref4","lineData","j","i","_buckets$i","_slicedToArray","bestX","itemX","isArray","calcBestY","Math","scale","renderOptions","gap","getColumnData","res","libraryConfig","axes","values","_d","map","side","grid","show","y1","scales","max","tooltip","render","tooltipData","_first$rows","_first$rows2","_second$rows","_renderDefaultTooltip","_tooltipData$scales","first","second","columnValue","rows","originalValue","lineValue","_ref7","colValue","colX0","colX1","lineX","lp","compact_","join","renderDefaultTooltip","digits","sources","YagrChartKit","v","left","right","ly","ry","lx","Histogram","activeHistogram","handleHistogramChange","histogramItems","isDataGood","params","_React$useState","_React$useState2","isDatailedLine","setDetailed","Select","onUpdate","options","keys_","width","Checkbox","checked","q25","q50","q75","quartilesProps","PropTypes","pdfProps","valueMax","valueMin","ecdfProps","getQuartiles","getPDF","getECDF","getIsDataGood","pdfData","ecdfData","xmlns","fill","viewBox","d","b","Info","infoIcon","toaster","Toaster","LoadDataHandler","loaded","errorData","add","theme","autoHiding","message","NO_VALUE","actions","label","showErrorPopup","_this$props2$alwaysSh","alwaysShowError","Error","_ypath$getValues","ypath","_ypath$getValues2","compressionRatio","compressionCodec","erasureCodec","replicationFactor","hideReplicationFactor","helpUrl","docsUrl","UIFactory","docsUrls","visible","metaTablePresetMain","_UIFactory$yqlWidgetS","id","owner","account","creationTime","modificationTime","accessTime","yql_op_id","yqlLink","yqlWidgetSetup","renderYqlOperationLink","Template","Id","SubjectCard","AccountLink","Boolean","Time","time","valueFormat","_toConsumableArray","makeTTLItems","showTTLLabel","RowsCount","count","isDynamic","Popover","AutomaticModeSwitchEditor","onEdit","setError","handleAdd","_asyncToGenerator","_regeneratorRuntime","_callee","form","_form$getState","_context","prev","next","getState","t0","stop","_x","YTDFDialog","pristineSubmittable","headerProps","onAdd","initialValues","fields","caption","extras","makeErrorFields","AutomaticModeSwitch","_React$useState3","_React$useState4","showEditor","setShowEditor","handleShow","handleClose","Switch","StatusBulb","replicatedTableTracker","getValue","LabelOnOff","tableSize","mediumList","getValues","rowCount","chunkCount","dataWeight","FormattedValue","tableStorage","tableType","optimizeFor","Label","text","compression","erasureReplication","dynTableInfo","cluster","tabletErrorCount","_ypath$getValues3","_ypath$getValues4","tabletCellBundle","tabletState","inMemoryMode","tabletUrl","tabletActiveBundleLink","Link","routed","url","makeMetaItems","_ref$mediumList","_ref$tabletErrorCount","onEditEnableReplicatedTableTracker","cf","sorted","chaosCellBundle","enable_replicated_table_tracker","chaosUrl","tabletActiveChaosBundleLink","reduce_","acc","getCommonFields","CypressNodeTypes","REPLICATED_TABLE","REPLICATION_LOG_TABLE","main","automaticModeSwitch","CHAOS_REPLICATED_TABLE","metaTablePresetSize","uncompressedDataSize","compressedDataSize","primaryMedium","usageDiskSpace","diskSpace","mediumsTemplates","medium","usageMediumDiskSpace","mediumDiskSpace","Readable","attrs","_ypath$getValue","expiration_time","expiration_timeout","timeout","withTTL","moment","qa","makeNavigationLink","formatTimeDuration","TTLLabel","SchemaDataType","type_v3","primitiveTypes","useSelector","getPrimitiveTypesMap","dataTypeProps","getType","parseV3Type","_unused","DataType","_Fragment","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onBlur","onEnterKeyDown","onKeyDown","input","setInput","handleChangeExt","throttle_","handleChange","handleKeyDown","handleBlur","TextInput","WarningIcon","hoverContent","Tooltip","Text","variant","typedMemo","constructor","super","resetError","getDerivedStateFromError","componentDidCatch","_a","_b","onError","componentDidUpdate","prevProps","code","NO_DATA","i18n","toString","getErrorMessage","renderError","renderPluginLoader","pluginLoader","Object","assign","ChartKitComponent","widgetRef","instanceRef","propsId","isMobile","restProps","ckId","lang","settings","plugin","find","iteratedPlugin","UNKNOWN_PLUGIN","ChartComponent","reflow","details","current","fallback","mobile","YagrPlugin","set","plugins","COLORS","serieIndex","withRouter","_props$theme","match","computeStateQuery","FormattedText","FormattedTextOrLink","_ref$asLink","asLink","FormattedLink","FormattedId","_useState","useState","_useState2","hovered","setHovered","ClipboardButton","printColumnAsBytes","columnName","column","columns","printColumnAsNumber","renderText","mix","elem","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","printColumnAsTimeDurationWithMs","getColumn","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","_typeof","hideOopsMsg","asNumber","_templates","templateId","keys","reduce","newTemplates","wrapRenderMethods","FLAG_NAME_PREFIX","SHORT_TITLE","access_control_object","COLUMNS_FELDS","Set","compose","withVisible","_SHORT_TITLE$idmKind","aclMode","buttonClassName","idmKind","requestPermissions","cancelRequestPermissions","columnGroups","buttonProps","useCallback","_UIFactory$getAclApi","getAclApi","requestPermissionsFields","_UIFactory$getAclApi$","requestPermissionsFlags","permissionFlags","forEach","k","currentCaption","_UIFactory$getAclPerm","getAclPermissionsSettings","permissionsToRequest","getAvailablePermissions","availablePermissions","setAvailablePermissions","onShow","sent","finish","firstItemDisabled","IdmObjectType","ACCOUNT","choices","permissions","_defineProperty","PermissionsControl","getChoiceName","valueWithCheckedFirstChoice","availableFields","useMemo","disabledChoices","disabled","required","makeLink","readColumns","readColumnGroup","subjects","placeholder","allowedTypes","duration","commentHeader","comment","inheritance_mode","INHERITANCE_MODE_TYPES","hideClear","hideFilter","with","useColumns","AclMode","COLUMN_GROUPS_PERMISSISONS","dialogFields","flagsIndex","field","has","flags","flagInfo","ReadableField","help","initialValue","splice","OBJECT_AND_DESCENDANTS","validate","validationError","selectCellPreviewVisible","navigation","modals","cellPreviewModal","selectCellPreviewLoading","loading","selectCellPreviewData","selectCellPreviewYtCliDownloadCommand","ytCliDownloadCommand","selectCellPreviewNoticeText","noticeText","selectErrorPreviewCellPath","CellPreviewModal","dispatch","useDispatch","unipikaSettings","getPreviewCellYsonSettings","SimpleModal","onCancel","closeCellPreviewAndCancelRequest","wrapperClassName","Flex","direction","PreviewContent","$type","$value","Yson","folding","tableSettings","dynamicRenderScrollParentGetter","customLayout","toolbar","reShortName","makeRegexpFromSettings","uiSettings","reShortNameFromAddress","reTabletNodeShortName","reShortNameFromTabletNodeAddress","Host","_ref$address","address","prefix","copyBtnClassName","useText","asTabletNode","host","re","_res$groups","exec","groups","shortname","suffix","filter","calcShortNameByRegExp","getCluster","hidden","genAccountsUrl","Page","ACCOUNTS","AccountsTab","GENERAL","propsCluster","inline","currentCluster","ellipsis","getOnlyFolders","suggestions","filter_","child","showErrorInModal","_getCorrectInnerError","ErrorMessage","innerErrors","correctErrorCodes","values_","NetworkCode","find_","some_","getCorrectInnerError","inner_errors","prepareErrorMessage","SHOW_ERROR","hideError","HIDE_ERROR","openEditingPopup","objectPath","multipleMode","closeEditingPopup","withScope","scope","ResComponent","prevScope","getScope","setScope","useHotkeysScope","displayName","getDisplayName","PathEditorModal","newPath","_handleBlur","handleFocus","onFocus","_handleFocus","onChange","_handleChange","handleApply","onApply","_handleApply","setPath","editingPath","inProcess","description","showError","errorMessage","PathEditor","customFilter","defaultPath","showErrors","autoFocus","hasClear","modalTitle","renderContent","Modal","onConfirm","onConfirmButtonClick","onCancelButtonClick","isConfirmDisabled","confirmText","SET_PATH","requests","CancelHelper","copyObjectIntoDirectory","from","to","preserve_account","parts","split","yt","copy","parameters","source_path","preparePath","destination_path","prepareDestinationPath","cancellation","saveCancelToken","copySingleObject","charAt","exists","then","exist","copyObjectWithRename","CopyObjectModal","handleConfirmButtonClick","copyPath","doCopy","handleCancelButtonClick","abortRequests","resetOptions","CLOSE_COPY_OBJECT_POPUP","copying","onUpdatePreserveAccount","toPath","_this2","_this$props3","copyObject","updateView","_this$props4","mapDispatchToProps","copyingPath","onSuccess","COPY_OBJECT","REQUEST","Promise","resolve","startTransaction","copyRequests","node","command","transaction_id","titleUnquoted","wrapBatchPromise","executeBatchWithRetries","YTApiId","navigationCopy","errorTitle","saveCancelSourceCb","commitTransaction","abortTransaction","reject","copyObjects","SUCCESS","CANCELLED","FAILURE","action","removeAllRequests","_navigation$modals$co","CreateDirectoryModal","_React$Component","recursive","onRecursiveUpdate","_this$props$clearCrea","clearCreateDirectoryError","creatingPath","createDirectory","CLOSE_CREATE_DIRECTORY_POPUP","creating","CREATE_DIRECTORY","create","CREATE_MESSAGE","_state$navigation$mod","moveObjectIntoDirectory","move","moveSingleObject","moveObjectWithRename","MoveObjectModal","movedPath","doMove","CLOSE_MOVE_OBJECT_POPUP","renaming","moveObject","afterMoveStrategy","updatePath","destinationPath","MOVE_OBJECT","moveRequests","navigationMove","moveObjects","entityId","output_format","$attributes","encode_utf8","rumLogError","resolveEntityPath","JSON","parse","result","_items$","getPath","_navigation$modals$mo","getNextObjectName","initialPath","INITIAL_STEP","checkPathExists","isExists","findCorrectObjectName","inTrash","startsWith","restoreObject","restorePath","RESTORE_OBJECT","EXIST","correctRestorePath","OPEN_RESTORE_POPUP","INCORRECT_PATH","openAction","errorAction","RestoreObjectModal","restoredPath","CLOSE_RESTORE_POPUP","restoring","_navigation$modals$re","AclTabParams","_AclTabParams","PATH","rumType","RumMeasureTypes","NAVIGATION_TAB_ACL","NavigationAcl","ACCESS_CONTROL_OBJECT","NAVIGATION_TAB_ACL_ACCESS","AccessContentAcl","createACLTabComponent","mapStateToProps","getAttributes","getRawPath","isPrincipalACLtab","mode","loadState","getAclLoadState","makeMapStateToProps","_AclTabParams$idmKind","useAppRumMeasureStart","startDeps","allowStart","isFinalLoadingStatus","useRumMeasureStop","stopDeps","allowStop","makeComponentWithRum","AccessAclTab","makeTableRumId","measureId","NAVIGATION_CONTENT_TABLE_DYNAMIC","NAVIGATION_CONTENT_TABLE_STATIC","RumWrapper","getColumnPresetEndpoint","utf8","utils","_loadStaticTable","requestOutputFormat","setup","useZeroRangeForPreload","stringLimit","transaction","moveBackward","requestedPageSize","defaultTableColumnLimit","login","offsetValue","useYqlTypes","decodedColumns","outputFormat","apiId","getCellSize","getTransaction","getMoveOffsetBackward","getRequestedPageSize","getDefaultTableColumnLimit","global","getColumns","getNextOffset","isYqlTypesEnabled","decodeNameField","getRequestOutputFormat","prepareRequest","table_reader","workload_descriptor","category","dump_error_into_response","omit_inaccessible_columns","relativePath","getIsDynamic","LOAD_TYPE","PRELOAD","tableReadPreload","tableRead","fetch","readStaticTable","reverseRows","abrupt","loadTableRows","transformResponse","parsedData","rawResponse","headers","getIsStrict","loadPromise","keyColumns","getKeyColumns","_getNextOffset","offset","descending","orderBySupported","offsetColumns","limit","allColumns","Columns","getSchemaColumns","dynTableCheckPerm","ytApiV3Id","checkPermission","permission","user","keyColumnsNames","keyBy_","_reduce_","availableColumns","omittedColumns","has_","deniedKeyColumns","query","Query","prepareQuery","dynTableSelectRowsPreload","selectRows","parseErrorFromResponse","getParsedError","_prepareRows","prepareRows","yqlTypes","getVisibleColumns","getOmittedColumns","getDeniedKeyColumns","key_columns","dynTableSelectRows","readDynamicTable","loadDynamicTable","_x2","_x3","_x4","_x5","loadStaticTable","schemaColumns","getTableColumnNamesFromSchema","injectColumnsFromSchema","updateTableData","_getNextOffset2","GET_TABLE_DATA","UPDATE","storedColumns","preparedColumns","prepareColumns","preparedOmittedColumns","prepareOmittedColumns","setColumns","newOffsetValue","previousRows","getRows","addRowCount","slice","prepareKey","getColumnsValues","SET_OFFSET","SET_COLUMNS","closeColumnSelectorModal","CLOSE_COLUMN_SELECTOR_MODAL","updateColumns","columnsOrder","getColumnsOrder","storeAllColumns","SET_COLUMNS_ORDER","setColumnsOrder","SET_TABLE_COLUMNS_PRESET_HASH","toggleFullScreen","mergeScreen","TOGGLE_FULL_SCREEN","FilePicker","inputRef","onLinkClick","click","event","target","files","multiple","ClickableText","WRITE_ATTRIBUTES","json","enable_type_conversion","yson","yamr","dsv","enable_string_to_all_conversion","schemaful_dsv","xlsx","getFileTypes","payload","fileTypes","getConfigUploadTable","uploadTableExcelBaseUrl","UploadManager","hasUpcomingFile","file","fileType","progress","inProgress","append","firstRowAsNames","secondRowAsTypes","showOverwriteConfirmation","cancelHelper","onReset","onFile","cancelUpload","onDragOver","preventDefault","stopPropagation","onDrop","dataTransfer","lastDotIndex","lastIndexOf","extStr","substr","fileError","checkFile","onDragEnter","onDragLeave","renderConfirm","renderClose","onUploadProgress","onConfirmImpl","setOverwriteConfirmationVisible","_this$state","proxy","externalProxy","uploadConfig","onStartUpload","txId","writeTable","uploadTableUseLocalmode","location","input_format","getWriteAttributes","removeAllAndSave","onStopUpload","onXlsxUpload","_this$state2","dropable","empty","renderFileContent","renderSettings","renderProgress","_this$typeSpecificFie","typeSpecificFields","initials","modal","_this3","_this$state3","helpLink","HelpLink","total","totalStr","loadedStr","Progress","stack","uploadTableMaxSize","schema","withColumns","axios","isCancel","_error$response","response","_this4","_this$state4","readyUrl","uploadUrl","_this4$state","start_row","URLSearchParams","header","types","formData","FormData","post","withCredentials","withXSRFToken","xsrfCookieName","getXsrfCookieName","xsrfHeaderName","cancelToken","generateNextToken","_this5","footerContent","renderFooterContent","renderCustomConfirm","renderCustomCancel","contentClassName","renderOverwriteConfirmationDialog","connector","getSchema","_getCurrentClusterCon","getCurrentClusterConfig","DYN_TABLES_ALLOWED_STATES_OF_ACTION","mount","unmounted","unmount","mounted","frozen","freeze","unfreeze","DYN_TABLES_ALLOWED_ACTIONS_BY_STATE","mixed","showDynTablesStateModalByPaths","paths","DYN_TABLES_STATE_MODAL_PARTIAL","showModal","showDynTablesStateModalByNodes","selectedNodes","allowedFrom","dynTablesChangeState","wrapApiPromiseByToaster","navigationDynTableState","toasterName","successContent","isBatch","skipSuccessToast","waitWhileThereIsTransient","capitalize_","delayed","navigationGetTabletState","results","toRecheck","output","DynamicActions","Fragment","StaticActions","DownloadManager","table","mountUnmountTable","metrics","countEvent","navigation_dynamic_table_action","ytApiV3","console","getTableType","getTabletErrorsCount","MetaTable","ReplicatedTableSettingsButton","setVisible","toggleVisibility","ReplicatedTableSettingsDialog","_form$getState$values","auto_replica_tracker","replica_cluster","replica_path","getNavigationReplicatedTableLoadingStatus","store","replicatedTable","calculateLoadingStatus","getReplicatedTableReplicas","replicas","getAllowEnableReplicatedTracker","getReplicatedTableReplicasMap","error_count","getNumberDeprecated","cluster_name","replicated_table_tracker_enabled","getBoolean","replication_lag_time","tableSets","default","ReplicatedTable","renderActions","replica","performReplicaAction","replicaValue","replicaAttributes","isAsync","atomicity","replicaData","ClickableAttributesButton","modeState","updateEnableReplicatedTableTracker","loadReplicas","abortAndReset","tableMode","css","striped","itemHeight","isLoading","tableItems","sets","renderName","renderField","errors","renderErrors","renderAsReadableField","renderState","automatic_mode_switch","renderAutomaticModeSwitch","bind","renderAsTimeDuration","computeKey","hasActions","TableMeta","StickyContainer","Sticky","topOffset","HEADER_HEIGHT","isSticky","sticky","TableActions","ElementsTable","replicaLink","NAVIGATION","enableTableTracker","align","sort","flag","ReplicatedTableConnected","_getReplicatedTableDa","getReplicatedTableData","allowEnableReplicatedTracker","ReplicatedTableWithRum","NAVIGATION_CONTENT_REPLICATED_TABLE","LinkConnected","getAttributesWithTypes","targetPath","broken","getDownloadPath","cypressPath","makeDirectDownloadPath","encodeURIComponent","getIsEmpty","getIsTooBig","MAX_FILE_SIZE","getNavigationFileLoadingStatus","NavigationExtraActions","getNavigationPathAttributes","renderNavigationExtraActions","messageBlock","codeBlock","renderMeta","downloadPath","href","renderTooBigInfo","isTooBig","loadFile","LOAD_FILE","readFile","FileConnected","_state$navigation$con","isEmpty","getEffectiveMode","useEffect","initialLoading","Loader","rowKey","row","DataTableWrapper","useRawStrings","getSettingTableDisplayRawStrings","schemaByName","getSchemaByName","ysonSettings","isFullScreen","onShowPreview","rowIndex","showCellPreviewModal","dtColumns","updating","setTimeout","requestAnimationFrame","window","dispatchEvent","Event","fullscreen","DataTable","SharePresetButton","handleClick","visibleColumns","columnsEncoded","request","method","errorContent","saveColumnPreset","hash","openInNewTab","share_columns","pin","SavePresetButton","getAllColumns","ColumnsPresetButton","getColumnsPresetHash","actionStyle","marginRight","openColumnSelectorModal","OPEN_COLUMN_SELECTOR_MODAL","isStrict","getSchemaStrict","allowPickColumns","showAllColumns","allowUserColumnPresets","getConfigData","style","face","Secondary","methodMap","nativeAPI","document","unprefixedMethods","returnValue","methodList","exitFullscreenMethod","entries","eventNameMap","change","fullscreenchange","fullscreenerror","screenfull","element","documentElement","onFullScreenEntered","off","on","returnPromise","requestFullscreen","catch","exit","isFullscreen","onFullScreenExit","exitFullscreen","onchange","callback","onerror","eventName","addEventListener","removeEventListener","raw","defineProperties","fullscreenElement","enumerable","isEnabled","fullscreenEnabled","FullScreen","_ref$enabled","enabled","_ref$onChange","container","useRef","isFullScreenAllowed","changePageSize","pageSize","CHANGE_PAGE_SIZE","changeCellSize","cellSize","CHANGE_CELL_SIZE","setTableDisplayRawStrings","getPageSize","allowRawStrings","stringLimitProps","cellSizeRadioButtonItems","evt","pageSizeProps","pageSizeRadioButtonItems","RadioButton","xmlnsXlink","mixBlendMode","xlinkHref","transform","getNavigationPathAttributesLoadState","LOADING_STATUS","LOADED","basePath","getJupyterBasePath","Logo","height","moveOffset","prevOffsetValue","getOffsetValue","MOVE_OFFSET","openOffsetSelectorModal","OPEN_OFFSET_SELECTOR_MODAL","keyColumn","renderInput","onEndEditing","Filter","iconLeft","RangeInputPicker","onOutsideClick","onAfterUpdate","onSubmit","maxValue","infoPointsCount","renderPlaceholder","handleStartEditing","progressWidth","getProgressWidth","getRowCount","editing","changeEditing","edit","dynamic","OffsetSelectorButton","moveOffsetToStart","moveOffsetToLeft","getYqlTypes","getBottomBoundKey","moveOffsetToRight","getUpperBoundKey","moveOffsetToEnd","isPaginationDisabled","getIsPaginationDisabled","isTableEndReached","getIsTableEndReached","Pagination","handler","hotkeyHandler","hotkeyScope","hotkey","previous","last","CreateQueryFromTable","_useQueryWidgetSidePa","useQueryWidgetSidePanel","openWidget","widgetOpened","widgetContent","handleOpen","createQueryFromTablePath","QueryEngine","YQL","createNewQueryUrl","NAVIGATION_ATTRIBUTES_EDITOR_REQUEST","NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS","NAVIGATION_ATTRIBUTES_EDITOR_ERROR","NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL","getNavigationAttributesEditorAttributes","attributesEditor","attributesMap","getNavigationAttributesEditorPath","getNavigationAttributesEditorError","getNavigationAttributesEditorVisible","getNavigationAttributesEidtorNodesByTypes","attrsMap","staticTables","mapNodes","dynamicTables","forEach_","getNavigationAttributesEditorStaticTables","getNavigationAttributesEditorDynamicTables","getNavigationAttributesEditorMapNodes","EDITABLE_ATTRIBUTES","showNavigationAttributesEditor","attributesEditorGetAttrs","getBatchError","join_","EDIT_MARKER","makeUiMarker","EDIT_MERGE_MARKER","navigationSetNodeAttributes","generalAttrs","storageAttrs","runMerge","warn","stringify","in_memory_mode","tablet_cell_bundle","restGeneralAttrs","newAttrs","isDynTable","prepareSetCommandForBatch","attributesEditorSet","prepareMergeParams","spec","input_table_paths","output_table_path","force_transform","promises","merge","opId","AppStoreProvider","OperationShortInfo","output_attribute_name","successTitle","autoHide","all","attributesEditorMerge","prepareRestorePath","lastChar","SUPPRESS_REDIRECT","openDeleteModal","checkIsTrash","OPEN_DELETE_OBJECT_POPUP","getInfo","realPath","parsedRealPath","getKey","navigationGetPathInfo","createDestinationPath","unix","showTableEraseModal","TABLE_ERASE_MODAL_PARTIAL","runTableErase","combine_chunks","range","isNaN","erase","table_path","Node","iconType","parsedPath","parsedPathError","pathState","recursiveResourceUsage","sizePerMedium","chunks","nodes","tabletStaticMemory","tablets","masterMemory","locks","modified","created","linkParsedPath","linkPathState","targetPathBroken","targetPathState","unmergedRows","chunkRows","contentMode","prepareTitle","prepareCaption","YPath","clone","escapeSpecialCharacters","prepareNavigationState","recursive_resource_usage","getResource","lock_count","modification_time","creation_time","target_path","row_count","unmerged_row_count","chunk_row_count","tablet_state","prettyprint","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","selectAll","isAllSelected","selected","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","icon","OPEN_COPY_OBJECT_POPUP","OPEN_MOVE_OBJECT_POPUP","navigationRestorePath","restoreObjects","transferItem","editItem","mergeSortSection","showTableSortModal","showTableMergeModal","dynTablesSection","onCopyPathClick","copyToClipboard","handleClearAll","buttonText","onCopy","DropdownMenu","switcher","getFilterState","mapNode","getMediumType","mediumType","getTableColumns","customSort","chooser","renderHeader","disk_space","_node$sizePerMedium","MediumType","ALL","data_weight","chunk_count","node_count","tablet_static_memory","master_memory","tablet_count","multipleActions","getPreparedTableColumns","transform_","getContentMode","getSelected","getSortState","tables","NAVIGATION_MAP_NODE_TABLE_ID","nodesData","getNodes","getParsedPath","ContentMode","DEFAULT","makeGetSetting","getSetting","NAMESPACES","multifilter","factors","sortState","groupByType","SettingName","GROUP_NODES","TYPE_WEIGHTS","asc","groupBy","includes_","every_","weight","getSortedNodes","getNodesInfo","sumNodesType","aggregation","countValues","keyValue","_keyValue","getMapNodeResourcesLoading","resourcesLoading","DATE_REGEXP","shouldApplyCustomSort","USE_SMART_SORT","test","getLoadState","getError","getSelectedIndex","strictIndex","findIndex_","getSelectedNodesDynTablesStates","dynTablesStates","pickBy_","showLinkToModal","LINK_TO_MODAL_PARTIAL","hideLinkToModal","linkPath","dstPath","createLink","PathActions","_React$useMemo","handleUpdateView","onMove","onShowAttributes","onEditAttributes","onRestoreClick","onDeleteClick","onSort","onErase","onMerge","onMount","onUnmount","onFreeze","onUnfreeze","onLink","onTransfer","secondGroup","firstGroup","menuItems","commonProps","onlyDropdown","dropDownBtnClassName","_props$dropDownBtnThe","dropDownBtnTheme","_props$dropDownBtnSiz","dropDownBtnSize","EditTableActions","DataLensButton","_useSelector","getNavigationTableDataLensButtonAlerts","isEmptySchema","enableDynamicStoreRedRequired","datalensBaseUrl","datalensAllowedCluster","showTooltip","toUpperCase","btn","linkUrl","Warning","isSplit","splitScreen","allowQueryTracker","isQueryTrackerAllowed","Paginator","OffsetInput","ColumnSelectorButton","SettingsButton","JupyterButton","FullScreenButton","OffsetSelectorModal","_handleCONFIRMButtonClick","isTableSorted","closeOffsetSelectorModal","minKeyValue","offsetValues","_handleCANCELButtonClick","initialItems","_changeFilter","updateItemValue","prevItems","findIndex","changedItem","_handleInputChange","RegExp","escapeRegExp_","visibleItems","filterItemsByName","renderSearchBox","renderItems","isOffsetSelectorOpen","borderless","itemProps","isRequired","CLOSE_OFFSET_SELECTOR_MODAL","getCurrentOffsetValues","getIsTableSorted","TableColumnsPresetNotice","getColumnsPresetColumns","getColumnsPresetError","ErrorBlock","log","collapsed","Table","columnsProps","accessor","renderColumnSelectorModal","srcColumns","isColumnSelectorOpen","ColumnSelectorModal","srcItems","isVisible","renderTable","visibleRows","stickyTop","OVERVIEW_HEIGHT","stickyHead","syncHeadOnResize","sortable","stripedRows","displayIndices","emptyDataMessage","startIndex","getTableData","handleScreenChanged","TableOverview","hashToLoad","getColumnsPreset","ui_loadColumnPreset","_ref$data","encode","SET_TABLE_COLUMNS_PRESET","setTablePreset","setTablePresetError","_ref5$deniedKeyColumn","preset","_preset$columns","includes","waitForFontFamilies","tableSimilarityEnabled","isTableSimilarityEnabled","field_weight_limit","max_selected_column_count","max_all_column_names_count","column_names","restoreSimilarColumns","restoreExactColumns","restoreColumns","_excluded2","storedIsFullScreen","TableConnected","getTableYsonSettings","getSrcColumns","getVisibleRows","TTLInfo","ttlItems","forceLinksAppearance","getNoSuggestionsMsg","link","TableType","DYNAMIC","STATIC","AGGREGATE_CHOICES","SELECT_EMPTY_VALUE","AggrTypes","TABLE_SETTINGS","COLUMNS","CreateTableModalContentImpl","nextId","tableName","replicasCount","getNewTableReplicasCount","uniqueKeys","activeTabId","createNewColumn","selectedColumnTab","_primitiveTypes$","duplicate","userOptions","newTab","names","tmp","genNewName","_values$TABLE_SETTING","compCodec","storageOption","optimize_for","columnsRaw","reorderColumns","isEqual_","compression_codec","StorageOptions","REPLICATION","replication_factor","erasure_codec","schemaAttributes","unique_keys","aggregate","dataType","group","optional","lock","ascending","sort_order","type_name","createTable","validateTableName","parentDirectory","closeCreateTableModal","lastValidationResult","validateForm","set_","nameCounters","columnData","nameIndexes","validateColumnData","indices","validateTableSettings","formValidator","_assertThisInitialized","indexById","sortBy_","isDynamicTable","ColumnDataTypes","ANY","YSON","isOrderedColumn","isDescendingColumn","aggr","SUM","MIN","MAX","INT64","UINT64","DOUBLE","ordered","validateAggregate","validateColumnDataType","validateColumnLock","str","round","DESCENDING","hasOrderedColumn","colData","hasUnorderedColumn","nameError","replicasCountError","validateReplicasCount","_primitiveTypes$2","_field$visibilityCond","when","isActive","compressionCodecs","erasureCodecs","groupSuggestions","virtualized","isApplyDisabled","getFormValidator","onActiveTabChange","tab","separator","ERASURE","visibilityCondition","onCreateTab","getTitle","isRemovable","renderControls","_item","_onCreate","onRemove","touched","getItems","getNoItemsMessage","_value","_oldValue","_field","_fieldName","_form","allGroups","setCreateTableGroupSuggestions","allLocks","setCreateTableLockSuggestions","_getCreateTableModalS","getCreateTableModalState","columnNameCounters","getPrimitiveTypes","getColumnGroupSuggestions","lockSuggestions","getColumnLockSuggestions","getCompressionCodecs","getErasureCodecs","trimXLSX","fileName","_i","_arr","toLowerCase","endsWith","FILE_TYPES","getExcelBaseUrl","UploadManagerCreate","parentDir","EXCEL_BASE_URL","UPLOAD_CONFIG","NodesTypes","sortedNodes","orderBy_","slice_","sum","renderItem","displayedNodes","_prepareNodes","allNodesCount","_getSumCount","otherNodesCount","renderSelected","NodesInfo","nodesInfo","closeCreateACOModal","CREATE_ACO_MODAL","createACO","namespace","tbBlock","MapNode","fetchNodes","prevPath","prevTransaction","MapNodeToolbarConnected","_this$props$error","renderToolbar","MapNodesTable","ERROR","renderView","CreateTableModal","showACOCreateButton","filterState","getMediumList","showCreateTableModal","isCreateTableModalVisible","TYPE","CONTENT_MODE_OPTIONS","RESOURCES","setFilter","SET_TEXT_FILTER","setContentMode","SET_CONTENT_MODE","allowEffectiveExpiration","isSupportedEffectiveExpiration","FETCH_NODES","_UIFactory$getNavigat","NAVIGATION_CONTENT_MAP_NODE","navigationListNodes","list","getNavigationMapNodeSettings","additionalAttributes","saveRequestCancellation","getList","applyCustomSort","APPLY_CUSTOM_SORT","changeColumnSortOrder","tableId","setMediumType","SET_MEDIUM_TYPE","openCreateTableModal","openCreateACOModal","MapNodeConnected","MapNodeWithRum","LOADING","MapNodeToolbar","_React$PureComponent","_super2","uploadXlsRef","createDirectoryButtonClick","OPEN_CREATE_DIRECTORY_POPUP","createTableButtonClick","uploadTableButtonClick","createLinkButtonClick","createACOButtonClick","_UIFactory$getMapNode","getMapNodeExtraCreateActions","NoWrap","renderModals","prepareSimpleValue","ShowResourcesButton","SelectSingle","menuSize","popupClass","isRoot","saveDocument","documentString","SET_DOCUMENT_EDIT_MODE","GET_DOCUMENT","getNavigationDocumentLoadingStatus","selectNavigationDocument","EditButton","onEditClick","_ref2$document","layout","extraTools","onSave","handleSaveDocument","jsonEditor","fullWidth","initialSplitSize","initialShowPreview","editMode","prepareSettings","navigationGetDocument","handleEditClick","handleOnCancel","handleOnDocumentSave","DocumentBody","DocumentEditModal","NAVIGATION_CONTENT_DOCUMENT","Document","TransactionConnected","startTime","handleTransactionAbort","ABORT_TRANSACTION","navigateParent","handleModalClose","modalContent","confirmTheme","TransactionWithRum","NAVIGATION_CONTENT_TRANSACTION","Transaction","parentParsedPath","started","start_time","fragmentFromYSON","getFilteredTransactions","transactionMap","transactions","rawTransactions","getTransactions","NAVIGATION_TRANSACTION_MAP_TABLE_ID","filteredTransactions","getNavigationTransactionMapLoadingStatus","TransactionMap","handleFilterChange","changeFilter","loadTransactions","cssHover","renderIcon","renderId","renderOwner","renderStartTime","renderTitle","iconName","getIconNameForType","isLink","itemNavigationAllowed","LOAD_TRANSACTIONS","navigationListTransactions","CHANGE_FILTER","TransactionMapConnected","TranscationMapWithRum","NAVIGATION_CONTENT_TRANSACTION_MAP","supportedContentTypes","map_node","portal_entrance","portal_exit","rootstock","scion","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","tablet_cell","scheduler_pool_tree_map","scheduler_pool","string_node","int64_node","uint64_node","double_node","boolean_node","NAVIGATION_CONTENT_LINK","NAVIGATION_CONTENT_FILE","getNavigationTableLoadingState","getMeasureId","sybType","replicated_table","chaos_replicated_table","replication_log_table","nested_transaction","topmost_transaction_map","transaction_map","metaMock","cell_id","emptyRate","getFamily","_state$navigation$tab","tabs","queue","status","statusData","family","getPartitionCount","_state$navigation$tab2","partition_count","getWriteDataWeightRate","_state$navigation$tab7","_state$navigation$tab8","write_data_weight_rate","getWriteRowCountRate","_state$navigation$tab9","_state$navigation$tab10","write_row_count_rate","getStatusError","statusError","getStatusLoading","statusLoading","getStatusLoaded","statusLoaded","getQueueStatusDataAlerts","_state$navigation$tab11","alerts","getQueueMode","filters","queueMode","getQueuePartitionIndex","queuePartitionIndex","getQueuePartitionsColumns","partitionsColumns","getQueueTabletCellHost","queueTabletCellHost","getQueueTabletCellId","queueTabletCellId","getQueueConsumerName","queueConsumerName","getQueueOwner","queueOwner","getQueueRateMode","queueRateMode","getQueueTimeWindow","queueTimeWindow","getPartitions","partitions","partitionsData","_partitionsData$map$f","_partitionsData$map","partition","_partition$meta","_partition$write_data","_partition$write_row_","meta","partition_index","getPartitionsError","partitionsError","getPartitionsLoading","partitionsLoading","getPartitionsLoaded","partitionsLoaded","getConsumers","_state$navigation$tab12","registrations","consumers","consumer","read_data_weight_rate","read_row_count_rate","getConsumerPartitionIndex","consumerPartitionIndex","getConsumerRateMode","consumerRateMode","getConsumerPartitionsColumns","getConsumerTimeWindow","consumerTimeWindow","getTargetQueue","targetQueue","getConsumerRegisteredQueues","consumerData","getTargetQueueStatusData","_getTargetQueue","_statusData$queues","getStatusData","_ref$queue","queues","getOwner","_getTargetQueueStatus","_getTargetQueueStatus2","getReadDataWeightRate","_getTargetQueueStatus3","_getTargetQueueStatus4","getReadRowCountRate","_getTargetQueueStatus5","_getTargetQueueStatus6","getTargetQueueError","targetQueueStatusData","getConsumerMode","consumerMode","_partition$read_data_","_partition$read_row_c","changeConsumerFilters","CONSUMER_CHANGE_FILTERS","TargetQueue","clusterQueueUrl","firstColon","indexOf","genNavigationUrl","ConsumerQueueSelector","topMargin","_useSelector2","handleSelect","_registrations$0$queu","_registrations$","pref","findCommonPathParent","Prefix","abs","marginBottom","backgroundColor","_counters$show","counters","formatter","hummerFormat","counterNames","_counters$key","BarChart","_counters$key2","Meta","partitionCount","readDataWeightRate","readRowCountRate","vital","isNull","Multimeter","BytesPerSecond","RowsPerSecond","tabItems","CONSUMER_MODE","METRICS","PARTITIONS","changeConsumerMode","Extras","bool","getter","sortAccessor","datetime","valueOf","HoverContent","_error$message","multimeter","number","readRateName","_readRateName","CONSUMER_RATE_MODE","ROWS","DATA_WEIGHT","readRateGetter","_readRateGetter","rateMode","timeWindow","loadConsumerPartitions","CONSUMER_PARTITIONS_LOAD_REQUEST","queueConsumerPartitions","replace","CONSUMER_PARTITIONS_LOAD_SUCCESS","CONSUMER_PARTITIONS_LOAD_FAILURE","DataTableYT","useThemeYT","NoContent","hint","warning","rateItems","timeItems","CompactColumnSelector","ColumnSelector","changeConsumerPartitionIndex","changeConsumerRateMode","changeConsumerTimeWindow","changeConsumerPartitionsColumns","views","_views","ExtraControls","View","MetricsComponent","getComponentForConsumerMetrics","PartitionsExtraControls","Partitions","emptyView","loadConsumerStatus","CONSUMER_STATUS_LOAD_REQUEST","queueConsumerStatus","CONSUMER_STATUS_LOAD_SUCCESS","state2","CONSUMER_STATUS_LOAD_FAILURE","_useViewByMode","WithStickyToolbar","Toolbar","writeDataWeightRate","writeRowCountRate","changeQueueRateMode","QUEUE_CHANGE_PERSISTED_STATE","changeQueueTimeWindow","QUEUE_MODE","CONSUMERS","changeQueueMode","QueueMetrics","getComonentForQueueMetrics","QUEUE_RATE_MODE","_ref10","_consumer$split","_consumer$split2","changeQueueConsumerName","changeQueueOwner","writeRateName","_writeRateName","writeRateGetter","_writeRateGetter","classNames","_x$meta","_ref8","string","_x$meta2","loadQueuePartitions","QUEUE_PARTITIONS_LOAD_REQUEST","queuePartitions","QUEUE_PARTITIONS_LOAD_SUCCESS","QUEUE_PARTITIONS_LOAD_FAILURE","changeQueuePartitionIndex","changeQueueTabletCellHost","changeQueueTabletCellId","changeQueuePartitionsColumns","QUEUE_CHANGE_PARTITIONS_COLUMNS","queuePartitionsColumns","ConsumersExtraControls","consumersLoading","consumersLoaded","loadQueueStatus","QUEUE_STATUS_LOAD_REQUEST","queueStatus","QUEUE_STATUS_LOAD_SUCCESS","QUEUE_STATUS_LOAD_FAILURE","clusters","YT","getLocksModeFilter","modeFilter","getLocksLoadStatus","getLocksFiltered","Locks","renderTransaction","operationId","operation_id","cellTag","parseInt","clusterConfig","_clusterConfig$primar","primaryMaster","additional","findClusterConfigByOperationId","clusterId","operationIdUrl","page","Linkify","TemplateTime","onModeFilter","setLocksModeFilter","getLocks","renderIndex","renderLock","MAX_TRANSACTIONS_REQUESTS","itemsToWrap","CustomRadioButton","isPartial","renderModeFilter","renderMessage","child_key","attribute_key","GET_LOCKS","navigationLocks","rowLocks","navigationTransactions","_splitBatchResults","splitBatchResults","prepareData","IS_PARTIAL","PARTITION","LocksConnected","LocksWithRum","NAVIGATION_TAB_LOCKS","ErrorIcon","mdBlock","MarkdownLinePreview","_ref$allowHTML","allowHTML","hideModal","useMarkdown","html","div","createElement","innerHTML","plainText","innerText","footer","ExternalDescription","_data$glossaryEntity","hasWarning","markdown","glossaryEntity","typeMismatchElement","elementsBlock","COLUMNS_TO_HIDE","Schema","_loadExternalSchemaData","externalSchemaUrl","externalSchema","externalSchemaError","loadExternalSchemaData","renderExternalColumn","_this$props$computedC","computedColumns","preparedSet","col","preparedItems","omit_","_columns$column","externalSchemaDescriptionSetup","virtualType","truePath","_yield$UIFactory$exte","load","Map","filteredSchema","updateFilter","SCHEMA_UPDATE_FILTER","SchemaConnected","getAttributesPath","getSchemaMeta","getFilteredSchema","getComputedColumns","SchemaWithRum","NAVIGATION_TAB_SCHEMA","prepareFlatColumns","flatColumns","correctPrefix","getStorePreloadValues","tablet","completed","failed","pending","name_tablet_id","name_cell_id","tablet_id","cell_leader_address","allowedOrderTypes","DESC_ASC_UNORDERED","overall","replication_error_count","pivot_key","store_count","overlapping_store_count","store_preload","storePreload","aggregatedStorePreload","currentStorePreload","uncompressed_data_size","compressed_data_size","static_chunk","read","lookup","write","delete","unmerged_row_read_rate","merged_row_read_rate","static_chunk_read","static_chunk_lookup","dynamic_row_read_rate","dynamic_row_lookup_rate","dynamic_row_write_rate","dynamic_row_delete_rate","getRawTablets","getTabletsSortState","NAVIGATION_TABLETS_TABLE_ID","getActiveHistogram","histogramType","getSortedTablets","rawTablets","getFilteredTablets","tabletsFilter","sortedTablets","getPreparedDataForColumns","collection","mapValues_","getTablets","filteredTablets","preparedCollection","prepare","prepareAggregation","getHistograms","histogramItem","dataFormat","caps","histograms","getNavigationTabletsLoadingStatus","getTabletsExpandedHosts","expandedHosts","SUM_FIELDS","getTabletsMax","max_","getTabletsByNameRoot","tabletsMode","sortedAndFilteredItems","groupByKey","maxDst","maxHost","mapByName","dst","parent","level","leaves","addHostItem","isTopLevel","root","toArray_","childrenCount","_root$children$","sortTree","sortTreeInPlace","maxByLevel","getTabletsByName","expanded","isCollapsed","flattenTree","Tablets","useBytes","_this$props$maxByLeve","_item$level","getProgressBarColorByIndex","renderBytesProgress","renderNumberProgress","onRowClick","toggleExpandedHost","loadTablets","defaultItems","structure","performance","by_host","by_cell","renderTabletId","renderCellId","renderHost","renderPivotKey","renderStorePreload","dynamic_read","dynamic_lookup","dynamic_write","dynamic_delete","itemMods","changeTabletsFilter","changeTabletsMode","histogramCollapsed","toggleHistogram","changeActiveHistogram","collapsibleSize","onToggle","renderOverview","rowClassName","onItemClick","top","TABLET","renderIdWithLink","genTabletCellBundlesCellUrl","none","freezing","unfreezing","mounting","unmounting","pivotKey","storePreloadProgress","prepareStorePreloadProgress","_Tablets","typedValueProps","tabletProps","last_commit_timestamp","performance_counters","statistics","GET_TABLETS","navigationTablets","TYPED_OUTPUT_FORMAT","TOGGLE_HISTOGRAM","CHANGE_TABLETS_MODE","TABLETS_STATE_PARTIAL","CHANGE_ACTIVE_HISTOGRAM","TabletsConnected","TabletsWithRum","NAVIGATION_TAB_TABLETS","AttributesConnected","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","isCancelled","_e$response","ACCESS_LOG_FAILURE","setAccessLogFilters","ACCESS_LOG_FILTERS","setAccessLogFiltersPage","TransactionInfo","CopyText","transaction_title","operation_title","copyText","DateHeaderMemo","DateHeader","MOVING","stickyFooter","STICKY_DOUBLE_TOOLBAR_BOTTOM","stickyBottom","AccessLogTable","fieldSelector","instant","_ref3$row","original_path","PathTag","transaction_info","headerTitle","_ref9","AccountsLogTransactionInfo","pageCount","ColumnHeader","pageIndex","isTarget","capitalize","AccessLogError","valueToSelection","selectionToValue","emptyValue","ACCESS_LOG_FIELD_SELECTOR_ITEMS","ACCESS_LOG_METHOD_ITEMS","ACCESS_LOG_USER_TYPE_ITEMS","ACCESS_LOG_SCOPE_ITEMS","clipPath","fillRule","clipRule","AccessLogOpenQtButton","setLoading","_","newParams","_yield$wrapApiPromise","query_id","AbbrSqlIcon","AccessLogFilters","AccessLogPagination","AccessLogTimeline","AccessLogFieldselector","AccessLogMetadata","AccessLogDistictBy","AccessLogPathRegexp","growable","shrinkable","AccessLogUserRegexp","AccessLogUserTypeFilter","AccessLogScopeFilter","AccessLogMethod","AccessLogApplyFilters","hasChanges","SimplePagination","METADATA_ITEMS","valueStr","vals","DISTINCT_BY_ITEMS","handleUpdate","initialState","EMPTY_OBJECT","maxVisibleValues","TIMELINE_SHOURCUTS","updateTime","updateShortcut","shortcutValue","now","Date","_ref$from","_ref$to","TimelinePicker","onShortcut","topShortcuts","shortcuts","hasDatePicker","AvailableTimeRange","earliest","formatInterval","AccessLog","ACCESS_LOG_RESET_FILTERS","doubleHeight","getTabletErrors","tabletErrors","replicationErrors","getTabletErrorsReplicationErrors","TabletErrorsConnected","tablet_errors","TabletErrorsCountNotice","TabletErrorsBlock","sectionClassName","ReplicationErrorsBlock","TabletErrorsWithRum","getTabletErrorsLoadingStatus","NAVIGATION_TAB_TABLET_ERRORS","counter","replicaId","ReplicaErrorHeader","getTabletErrorCountNoticeVisbile","TabletErrorsHeader","disableLogger","getUserAttributes","userAttributes","userAttributeKeys","getUserAttributeKeys","GET_USER_ATTRIBUTE_KEYS","navigationUserAttributeKeys","UserAttributesConnected","UserAttributesWithRum","NAVIGATION_TAB_USER_ATTRIBUTES","TableMountConfig","getNavigationTableMountConfig","getNavigationMountConfigYsonSettings","Flow","withLazyLoading","supportedAttributeTypes","_supportedAttributeTy","acl","ACL","Attributes","TabletErrors","user_attributes","UserAttributes","Tab","ACCESS_LOG","AUTO","CONSUMER","Consumer","MOUNT_CONFIG","QUEUE","Queue","FLOW","getNavigationExtraTabs","component","getSupportedAttributeTypes","checkContentIsSupported","CONTENT","getComponentByContentType","getComponentByMode","noAccess","_WithKeyboardNavigation","ElementsTableBase","WithKeyboardNavigation","_args","hoverSelectedIndex","selectedIndex","wrapHotkeyHandler","_len2","_key2","selectIndex","maxIndex","selectNext","selectPrev","handleMouseMove","handleItemHover","handleItemSelect","querySelector","windowHeight","clientHeight","bounding","getBoundingClientRect","bottomCoordinate","topCoordinate","scrollIntoView","scrollBy","handleItemKeyboardClick","hotkeys","onItemHover","onMouseMove","onItemSelect","Hotkey","renderMapNodesTableIcon","renderNodeIcon","isTrashNode","isLinkToTrashNode","_index","_evt$target","_evt$target$contains","classList","contains","onChooserClick","batch","setMode","onSpaceHotkey","info","shiftKey","nativeEvent","setSelectedItem","renderChooser","renderRowCount","dyntable","defaultColumns","resources","resourcesColumns","renderLocks","renderModificationTime","renderCreationTime","renderAccount","tableProps","_createElement","TRASH_PATH","linkState","renderNameImpl","renderTags","renderTrash","textOrLink","poolTreeIndex","fragments","fragment","pool","ROOT_POOL_NAME","poolTree","SCHEDULING","SchedulingTab","OVERVIEW","arrow","goToLink","viewLink","lastSelected","getLastSelected","lastIndex","nameIndex","SET_SELECTED_ITEM","MapNodesTableConnected","MapNodesTableWithRum","DeleteObjectModal","deleteObject","deleteObjects","getRealPath","getRealPaths","loadingRealPath","errorRealPath","renderLoader","renderMultipleModeContent","errorDataRealPath","_this$props5","permanently","togglePermanentlyDelete","_this$props6","multipleInfo","resourceUsage","_item$index","nodeCount","renderPermanentlyCheckbox","_this$props7","buildItems","_this$props8","closeDeleteModal","helpLinkUrl","LOAD_REAL_PATH","navigationGetPath","_navigation$modals$de2","DELETE_OBJECT","CLOSE_DELETE_OBJECT_POPUP","_getState","_navigation$modals$de","remove","deleteCurrentObject","currentPath","realPathDecoded","decodeEscapedAbsPath","_getState3","_navigation$modals$de3","navigationDelete","permanentlyDeleteObjects","setAttributesRequests","navigationMoveToTrashRestorePath","navigationMoveToTrash","moveObjectsIntoTrash","responses","reverse","TOGGLE_PERMANENTLY_DELETE","denyColumns","getDenyColumnsItems","getIdmPermissionsRequestError","RequestPermissions","AnnotationVisibility","AnnotationWithPartial","annotation","isFullText","Markdown","ActionButtons","isSaving","onSaveClick","onCancelClick","getNavigationAnnotation","visibility","getSettingAnnotationVisibility","getNavigationAnnotationSaving","isEditing","getNavigationAnnotationEditing","annotationPath","getNavigationAnnotationPath","getNavigationAnnotationError","oldValue","handleToggleAnnotationCollapse","setSettingAnnotationVisibility","SET_ANNOTATION_EDITING","handleCancelClick","SET_ANNOTATION","handleChangeDescription","handleSaveClick","saveAnnotation","overview","EditAnnotationWithPreview","valuePath","hideReset","isContentTab","NavigationDescription","NavigationPermissionsNotice","isWriteable","getNavigationIsWritable","isAccountUsable","getNavigationIsAccountUsable","checkPermissionsError","getNavigationCheckPermissionsError","getNavigationPathAccount","accountAclLink","genAccountsAclLink","Block","AttributesEditorLoaded","singleMode","getMediumListNoCache","storeError","stateError","setErr","hasMapNodes","hasStaticTables","hasDynamicTables","hasTables","hasDynTableOrMapNode","pathsValues","annotationInitial","general","primary_medium","storage","compressionCodecValueFromString","normalizeErasureCodec","_storageOption","storageOptionFromErasureCodec","dataDiff","generalAttributes","storageAttributes","compressionCodecValueToString","erasureCodecFromStorageOption","forEachStaticTable","mergeNoticeAndError","DialogError","annotationTab","inMemoryModeField","InMemoryMode","NONE","COMPRESSED","UNCOMPRESSED","optimizeForField","AttributesEditor","validateStorage","validateReplicationFactor","getRemoteCopyModalVisible","remoteCopyModal","getRemoteCopyModalPaths","makeCompressionCodecFinder","findCompressionCodec","RemoteCopyModal","_pathsValues$","_response","calculateValueOnPoolsLoaded","loadedPoolNames","schema_inference_mode","override","excludeClusters","allowEphemeral","getNavigationTableEraseModalVisible","tableEraseModal","getNavigationTableEraseModalPath","TableEraseModal","validator","validateRange","RANGE","TableSortModal","getCurrentUserName","getNavigationTableSortVisible","getNavigationTableSortPaths","suggestError","getNavigationTableSortError","suggestColumns","getNavigationTableSortSuggestColumns","attributeValues","getNavigationTableAttributesValues","_paths","_outputPath","outputPath","sort_by","pool_trees","runTableSort","hideTableSortModal","handlePathsChange","tableSortModalLoadColumns","errorFields","WaitForDefaultPoolTree","defaultPoolTree","isPathStaticTable","allowDescending","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","_callee2","_context2","_callee3","_context3","getCreateACOModalState","createACOModal","CreateACOModal","Navigation","onTabChange","onEditButtonClick","trackVisit","updateTitleWithPath","onTransactionChange","updateTitle","tabSize","Tabs","active","underline","_this$props6$type","ContentViewer","_this$props8$error","isIdmSupported","permissionDeniedError","getPermissionDeniedError","isPermissionDenied","renderRequestPermission","_error$attributes","objectType","object_type","errorPath","_this$props9","isRequestPermissionsForPathAllowed","pathForRequest","getParentPath","textForRequest","renderRequestPermissionIsNotAllowed","parentPath","_this$props10","hasError","renderEditButton","renderTabs","renderWidget","NavigationConnected","isFinalState","isNavigationFinalLoadState","getIdmSupport","UI_TAB_SIZE","getTabs","NavigationWithRumMemo","NavigationWithMesure","NAVIGATION_PRELOAD","NavigationWithRum","Editor","cancelOnBlur","NavigationTopRowContent","getNavigationDefaultPath","RowWithName","urlParams","NavigationFavourites","EditableNavigationBreadcrumbs","NavigationTools","favourites","getFavouritePaths","isInFavourites","isCurrentPathInFavourites","handleToggle","navigationToggleFavourite","handleItemClick","Favourites","NavigationPathToClipboard","onCopyToClipboard","setEditMode","toggleEditMode","NavigationPathEditor","hideEditor","NavigationBreadcrumbs","actualPath","getActualPath","select","bcItems","getNavigationBreadcrumbs","getMode","history","useHistory","makeRoutedURL","pathname","navmode","ctrlKey","metaKey","isCurrent","NavigationBcItem","renderRoot","Breadcrumbs","lastDisplayedItemsCount","firstDisplayedItemsCount","renderItemContent","renderRootContent","Escaped","RefreshButton","RestoreButton","handleClearTransaction","clearTransaction","handleEdit","setTransaction","navigation_refresh","getNavigationRestorePath","handleRestore","SchedulingOperationsLoader","getSchedulingOperationsLoadingStatus","useRumMeasureStart","subPage","prepareUserPermissions","userPermissions","permissionTypes","getPathToCheckPermissions","entityName","UI_EFFECTIVE_ACL","POOL","pools","getPools","poolPath","computePathItems","search","TABLET_CELL_BUNDLE","loadAclData","normalizedPoolTree","userPermissionsPath","_state$global","_state$global$cluster","LOAD_DATA","getTree","pathToCheckPermissions","pathToCheckUserPermissions","getAcl","kind","sysPath","checkUserPermissionsUI","getResponsible","responsible","version","auditors","objectPermissions","column_groups","readApprovers","disableAclInheritance","bossApproval","disableInheritanceResponsible","deletePermissions","roleKey","itemToDelete","_getState$global$clus","DELETE_PERMISSION","deletePermissionsPath","deleteRole","_error$response2","_values$comment","_state$global$cluster2","REQUEST_PERMISSION","daysAfter","date","getTime","dateToDaysAfterNow","roles","rolesGroupedBySubject","_loop","subject","prepareAclSubject","commonPart","deprive_after_days","applyToRequestedRole","flattenPermissions","flatten_","convertFromUIPermissions","role_type","column_group_id","requestPermissionsPath","roles_grouped","_error$response3","_ref11","updateAcl","_ref12","_getState$global$clus2","UPDATE_ACL","responsibleApproval","disableInheritance","inheritanceResponsible","inheritAcl","_error$response4","cancelUpdateAcl","_ref14","_yield$ytApiV3Id$sele","_yield$ytApiV3Id$read","readTable","prepareHeaders","cellPath","parsed","typeIndex","_unipika$converters$y","isIncomplete","CELL_PREVIEW","openCellPreview","getDefaultRequestOutputFormat","PREVIEW_LIMIT","value_format","ytApiV4","cellPreviewCancelHelper","converters","yql","yql_type_registry","maxStringSize","maxListSize","treatValAsData","$incomplete","getApproversSubjectFilter","aclFilters","approversSubject","getObjectSubjectFilter","objectSubject","getObjectPermissionsFilter","getAclFilterColumns","columnsFilter","getAclFilterColumnGroupName","columnGroupNameFilter","getAclFilterExpandedSubjects","expandedSubjects","getAclCurrentTab","aclCurrentTab","prepareColumnsNames","columnsPermissions","uniq_","prepareApprovers","approvers","extra","subjectType","groupInfo","group_name","getAllUserPermissions","getAllObjectPermissions","getAllObjectPermissionsWithSplittedSubjects","isSplitted","subjectIndex","getObjectPermissionsTypesList","permissionsFilter","uniquePermisions","subjectFilterPredicate","_item$subjects$","_str","pop","getAllObjectPermissionsFiltered","subjectFilter","_partition_","partition_","_item$columns","_partition_2","mainPermissions","lowerNameFilter","toLocaleLowerCase","filterBySubject","permissionsFilterSet","filterByPermissions","_permissionsFilterPre","foundCount","some","p","permissionsFilterPredicate","filterByColumns","_columns$some","colName","mainPredicates","columnsPredicates","concatByAnd","getObjectPermissionsAggregated","aggregateBySubject","AggregateBySubject","aggrKey","inherited","allPermissions","aggregationKey","_item$permissions","_item$permissions2","_item$columns2","_this$first","_this$first2","_this$first3","_this$first4","isMissing","isUnrecognized","isApproved","isRequested","hasInherited","hasDenyAction","inheritedFrom","hasExpandable","objPermissions","aggregated","aggKey","_item$getItems","_partition_3","_partition_4","other","OrderByRoleStatus","getAllColumnGroupsActual","nameFilter","nameFilterLower","predicates","removed","_item$columns$some","_item$columns3","_item$name","filtered","unrecognized","requested","depriving","isDepriving","getReadApprovers","getResponsibles","getAuditors","getNotInheritedReadApprovers","readApprover","getNotInheritedResponsibles","responsibles","getNotInheritedAuditors","auditros","auditro","getAllApprovers","getHasApprovers","getApproversFiltered","getApproversFilteredAndOrdered","getAllAccessColumnsPermissions","filteredPermissions","_permission$columns","getAllDenyColumnsPermissions","_permission$columns2","getAllAccessColumnsNames","getAllDenyColumnsNames","isPermissionDeleted","permissionDeletionError","deletionError","getLastDeletedPermissionKey","deletedItemKey","idmPermissionsRequestError","getIdmManageAclRequestError","idmManageAclRequestError","getIdmPathVersion","attributesWithTypes","rawPath","navigationPath","ex","getSchedulingAbcFilter","scheduling","abcServiceFilter","getSchedulingAttributesToFilter","attributesToFilter","getSchedulingAttributesToFilterParams","attributesToFilterParams","schedulingOverviewHasFilter","abcFilter","getSchedulingFilteredPoolNames","getSchedulingPoolsMapByName","attrsToFilter","loadedPools","_attrs$abc","abc","poolName","getExpandedPoolCypressData","expandedPools","flattenCypressData","getSchedulingOperations","rawOperations","getExpandedPoolsTree","expandedPoolsTree","getSchedulingOperationsError","getSchedulingOperationsExpandedPools","getExpandedPoolsLoadAll","loadAll","RESOURCE_LIMIT_MAPPER","user_memory","preparePoolChildResource","treeResources","resource","guaranteed","getNumber","usage","demand","limitResource","cypressAttributes","detailed","updatePoolChild","cypressData","_data$leaves","_initedBy","leaf","child_pool_count","incomplete","pool_operation_count","emptyOp","operationCount","maxOperationCount","maxOperationCountEdited","runningOperationCount","maxRunningOperationCount","maxRunningOperationCountEdited","starvation_status","weightEdited","minShareRatio","maxShareRatio","fairShareRatio","fifoIndex","usageRatio","demandRatio","isEphemeral","integralType","userDefinedBurstCPU","burstCPU","userDefinedFlowCPU","flowCPU","userDefinedFlowGPU","flowGPU","accumulated","accumulatedCpu","burstDuration","fifoSortParams","param","forbidImmediateOperations","createEphemeralSubpools","dominantResource","appendInnerErrors","getPoolsRaw","rawPools","getSchedulingTreeOperations","tree","getOperationsFiltered","getPoolsPrepared","wrap","preparedPools","preparePools","getSchedulingPoolsExtraInfo","poolsMap","calcChildrenIntegrals","childrenBurstCPU","childrenFlowCPU","itemExtraInfo","itemExtra","getResourcesText","resourceLimit","getNetworkResourceText","getMemoryResourceText","getDefaultResourceText","getResourceProgressValue","prepareResources","resourceLimits","getResourceProgress","getPoolsImpl","getSchedulingIsInitialLoading","_state$scheduling$sch","_state$scheduling$exp","getExpandedPoolsIsInitialLoading","getTreeResources","getPoolChildrenFilter","poolChildrenFilter","getSchedulingTreeState","treeState","getPool","getSchedulingEditItem","getPoolsNames","_v","DETAILS_CONTENT_MODES","cpu","memory","gpu","user_slots","operations","integral","getIsRoot","getTreesSelectItems","trees","getPoolsSelectItems","getCurrentPool","getPoolIsEphemeral","currentPool","getCurrentPoolChildren","getCurrentPoolOperations","getResources","getFilteredTree","treeRoot","visiblePools","treeList","filterTree","getTableItems","SCHEDULING_POOL_TREE_TABLE_ID","filteredTree","sortedTree","poolsTableItems","getSchedulingOverviewMaxDepth","allExpanded","expandedPoolsMap","_ref$level","getPoolChildrenData","getFilteredPoolChildren","poolChildrenData","getSortedPoolChildren","SCHEDULING_POOL_CHILDREN_TABLE_ID","filteredPoolChildren","poolChildrenSortState","childTableItems","addGetParams","getPollChildrenTableItems","sortedPoolChildren","isChildPool","CLUSTERS_WITHOUT_POOL_ACL","isPoolAclAllowed","getCurrentPoolPath","calculatePoolPath","pathStr","getSchedulingTopPoolOfEditItem","mapOfPools","isAbcPoolName","isTopLevelPool","getSchedulingSourcesOfEditItem","topPool","visitTreeItems","isNeedToSkipChildren","getSchedulingSourcesOfEditItemSkipParent","toSkip","concat_","toAdd","YqlValue","formattedValue","getFormattedValue","titleSettings","formatRaw","formatFromYQL","classes","dir","yqlValue","defaultUnipikaSettings","unquote","isValueTruncated","_getArrayValue","candidate","getArrayValue","inc","isValueEmptyOrTruncated","ColumnCell","_ref$value","formatType","escapedValue","isIncompleteTagged","_value$","yqlType","allowRawCopy","useRawString","copyTooltip","visibleValue","alignItems","UIKitIcon","Eye","sortOrder","isKeyColumn","unescapeKeyValue","prepareDetailedColumn","_item$resources","prepareLimitColumn","_item$resources2","sortWithUndefined","prepareMinResourcesColumn","_item$resources3","prepareAbsGuaranteedColumn","_item$resources4","prepareRelGuaranteedColumn","prepareAbsDemandColumn","_item$resources5","prepareAbsUsageColumn","_item$resources6","prepareRelUsageColumn","prepareGuaranteedUsageColumn","captionTail","FI","min_share","max_share","fair_share","fair_share_usage","dominant_resource","resource_detailed_cpu","resource_detailed_memory","resource_detailed_gpu","resource_detailed_user_slots","resource_limit_cpu","resource_limit_memory","resource_limit_gpu","resource_limit_user_slots","min_resources_cpu","min_resources_memory","min_resources_gpu","min_resources_user_slots","abs_guaranteed_cpu","abs_guaranteed_memory","abs_guaranteed_gpu","abs_guaranteed_user_slots","rel_guaranteed_cpu","rel_guaranteed_memory","rel_guaranteed_gpu","rel_guaranteed_user_slots","abs_usage_cpu","abs_usage_memory","abs_usage_gpu","abs_usage_user_slots","abs_demand_cpu","abs_demand_memory","abs_demand_gpu","abs_demand_user_slots","rel_usage_cpu","rel_usage_memory","rel_usage_gpu","rel_usage_user_slots","guaranteed_usage_cpu","guaranteed_usage_memory","guaranteed_usage_gpu","guaranteed_usage_user_slots","operation_overview","operation_count","max_operation_count","operation_progress","running_operation_count","max_running_operation_count","running_operation_progress","integral_type","burst_cpu","flow_cpu","children_burst_cpu","children_flow_cpu","accumulated_cpu","burst_duration","prepareTrees","prepareCurrentTree","defaultTree","treeNodesMap","prepareTree","entry","attachTreeLeaves","operation","pathItems","computePoolPath","parentPool","flattenAttributes","obj","toReturn","object","hasOwnProperty","innerObject","is","flatObject","getResourceLimit","limitKey","INTEGRAL_GUARANTEES_PREFIX","POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR","guaranteeType","burstCpu","burstRam","burstGpu","flowCpu","flowRam","flowGpu","POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE","cpuStrong","gpuStrong","memoryStrong","POOL_GENERAL_TYPE_TO_ATTRIBUTE","POOL_RESOURCE_TYPE_TO_ATTRIBUTE","getPoolResourceInfo","childrenSum","firstValidNumber","prepareMinGuaranteed","prepareValueDetails","getPoolResourceInitialValue","allowSource","source","getInitialValues","allowedSources","slug","indexOf_","abcService","resourceGuarantee","integralGuarantee","userSlots","otherSettings","i18nFactory","registerKeysets","CHARTKIT_ERROR_CODE","INVALID_DATA","UNKNOWN","TOO_MANY_LINES","ChartKitError","originalError","isCustomError","mergeSettingStrategy","objValue","srcValue","currentPlugins","newPlugins","newSettingsPlugins","currentPlugin","newPluginIndex","newPlugin","settingsEventEmitter","events","eventId","updateLang","configure","setLang","updates","filteredUpdates","withNaming","m","getRandomCKId","chars","random","randomString","AlertContext","useAlertContext","context","AlertAction","bAlert","AlertContextProvider","Provider","typeToIcon","danger","filled","outlined","CircleInfo","success","CircleCheck","TriangleExclamation","utility","Thunderbolt","normal","addComponentKeysets","en","corners","Card","spacing","py","px","grow","justifyContent","Title","Actions","extraProps","I","Xmark","colorText","iconByTheme","minContent","Action","cnDropdownMenu","DropdownMenuContext","moveBack","activeItemIndex","skip","newActiveItemIndex","moveForward","rootMenuPath","DropdownMenuNavigationContext","activeMenuPath","setActiveMenuPath","DropdownMenuNavigationContextProvider","contextValue","dropdownMenuSeparator","isSeparator","shouldSkipItemNavigation","stringifyNavigationPath","DropdownMenuPopup","menuProps","popupProps","navigationAnchorRef","isSubmenu","activateParent","handleMouseEnter","handleMouseLeave","activeItem","handleKeydown","isSubmenuToggleActive","isNavigationActive","setActiveItemIndex","reset","resetNavigation","processHomeKey","processEndKey","onAnchorKeyDown","previousActiveItemIndex","useListNavigation","Menu","isActiveParent","DropdownMenuItem","closeMenu","isSubmenuOpen","every","useSubmenu","hasSubmenu","closeSubmenu","openSubmenu","subMenuItems","menuItemRef","useDirection","handleCloseMenu","handleMenuItemClick","subMenuPlacement","iconEnd","ChevronLeft","ChevronRight","Item","toItemList","updatedItems","addedGroup","groupItems","updatedItem","DropdownMenuExport","Ellipsis","onOpenToggle","hideOnScroll","renderSwitcher","switcherWrapperClassName","defaultSwitcherProps","defaultSwitcherClassName","onSwitcherClick","isPopupShown","togglePopup","closePopup","onChangeVisibility","setPopupShown","property","setProperty","isControlled","nextValue","previousState","newState","useStateWithCallback","useConditionallyControlledState","isShown","usePopupVisibility","onScroll","handleScroll","useScrollHandler","itemsList","handleSwitcherClick","handleSwitcherKeyDown","useActionHandlers","switcherProps","MenuGroup","labelId","useUniqId","u","role","MenuItem","iconStart","rel","handleClickCapture","publish","componentId","domEvent","onClickCapture","tabIndex","interactive","Group"],"sourceRoot":""}