@ytsaurus/ui 1.83.0 → 1.84.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 (94) hide show
  1. package/dist/public/build/assets-manifest.json +61 -61
  2. package/dist/public/build/css/{2209.ee64dbab.chunk.css → 2209.b618d964.chunk.css} +2 -2
  3. package/dist/public/build/css/2209.b618d964.chunk.css.map +1 -0
  4. package/dist/public/build/css/components.6375c10d.chunk.css +2 -0
  5. package/dist/public/build/css/components.6375c10d.chunk.css.map +1 -0
  6. package/dist/public/build/css/{navigation.d170ba80.chunk.css → navigation.b6f988cd.chunk.css} +2 -2
  7. package/dist/public/build/css/navigation.b6f988cd.chunk.css.map +1 -0
  8. package/dist/public/build/css/{query-tracker.94d91868.chunk.css → query-tracker.7c9d0851.chunk.css} +2 -2
  9. package/dist/public/build/css/{query-tracker.94d91868.chunk.css.map → query-tracker.7c9d0851.chunk.css.map} +1 -1
  10. package/dist/public/build/js/{1604.72f6d465.chunk.js → 1604.7b5c7976.chunk.js} +3 -3
  11. package/dist/public/build/js/1604.7b5c7976.chunk.js.map +1 -0
  12. package/dist/public/build/js/{1983.e3e6d5e8.chunk.js → 1983.034a4de9.chunk.js} +2 -2
  13. package/dist/public/build/js/1983.034a4de9.chunk.js.map +1 -0
  14. package/dist/public/build/js/{3724.f72a2691.chunk.js → 3724.1674ced1.chunk.js} +2 -2
  15. package/dist/public/build/js/3724.1674ced1.chunk.js.map +1 -0
  16. package/dist/public/build/js/3751.147f6dd9.chunk.js +2 -0
  17. package/dist/public/build/js/3751.147f6dd9.chunk.js.map +1 -0
  18. package/dist/public/build/js/4319.3407fde8.chunk.js +3 -0
  19. package/dist/public/build/js/4319.3407fde8.chunk.js.map +1 -0
  20. package/dist/public/build/js/5088.bee0a42a.chunk.js +2 -0
  21. package/dist/public/build/js/5088.bee0a42a.chunk.js.map +1 -0
  22. package/dist/public/build/js/{5653.45eec4e2.chunk.js → 5653.cff8909f.chunk.js} +2 -2
  23. package/dist/public/build/js/5653.cff8909f.chunk.js.map +1 -0
  24. package/dist/public/build/js/{acl.614f12c4.chunk.js → acl.f6256b52.chunk.js} +2 -2
  25. package/dist/public/build/js/{acl.614f12c4.chunk.js.map → acl.f6256b52.chunk.js.map} +1 -1
  26. package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js → app-navigation.e7dd869b.chunk.js} +2 -2
  27. package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js.map → app-navigation.e7dd869b.chunk.js.map} +1 -1
  28. package/dist/public/build/js/cluster-menu.68f5e677.chunk.js +2 -0
  29. package/dist/public/build/js/{cluster-menu.381d4a48.chunk.js.map → cluster-menu.68f5e677.chunk.js.map} +1 -1
  30. package/dist/public/build/js/cluster-page-wrapper.e42322f0.chunk.js +2 -0
  31. package/dist/public/build/js/{cluster-page-wrapper.b70c30d4.chunk.js.map → cluster-page-wrapper.e42322f0.chunk.js.map} +1 -1
  32. package/dist/public/build/js/components.1ea8e03b.chunk.js +2 -0
  33. package/dist/public/build/js/components.1ea8e03b.chunk.js.map +1 -0
  34. package/dist/public/build/js/{dashboard.a63eef8c.chunk.js → dashboard.303faf7e.chunk.js} +2 -2
  35. package/dist/public/build/js/{dashboard.a63eef8c.chunk.js.map → dashboard.303faf7e.chunk.js.map} +1 -1
  36. package/dist/public/build/js/default-subject-link.f30c100a.chunk.js +2 -0
  37. package/dist/public/build/js/default-subject-link.f30c100a.chunk.js.map +1 -0
  38. package/dist/public/build/js/job.47f7b4c0.chunk.js +2 -0
  39. package/dist/public/build/js/job.47f7b4c0.chunk.js.map +1 -0
  40. package/dist/public/build/js/main.4f383c25.js +3 -0
  41. package/dist/public/build/js/main.4f383c25.js.map +1 -0
  42. package/dist/public/build/js/navigation.5512d9c6.chunk.js +2 -0
  43. package/dist/public/build/js/navigation.5512d9c6.chunk.js.map +1 -0
  44. package/dist/public/build/js/odin.96cec50a.chunk.js +2 -0
  45. package/dist/public/build/js/odin.96cec50a.chunk.js.map +1 -0
  46. package/dist/public/build/js/{operations.3535a692.chunk.js → operations.1a486c6e.chunk.js} +2 -2
  47. package/dist/public/build/js/operations.1a486c6e.chunk.js.map +1 -0
  48. package/dist/public/build/js/{query-tracker.d266354f.chunk.js → query-tracker.028a8ccf.chunk.js} +2 -2
  49. package/dist/public/build/js/query-tracker.028a8ccf.chunk.js.map +1 -0
  50. package/dist/public/build/js/{runtime.948c8e30.js → runtime.ad8a9439.js} +2 -2
  51. package/dist/public/build/js/{runtime.948c8e30.js.map → runtime.ad8a9439.js.map} +1 -1
  52. package/dist/public/build/js/{tablet.4e3852cc.chunk.js → tablet.68f185b6.chunk.js} +2 -2
  53. package/dist/public/build/js/{tablet.4e3852cc.chunk.js.map → tablet.68f185b6.chunk.js.map} +1 -1
  54. package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js → yt-df-dialog.bbf72b55.chunk.js} +2 -2
  55. package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js.map → yt-df-dialog.bbf72b55.chunk.js.map} +1 -1
  56. package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js +2 -0
  57. package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js.map +1 -0
  58. package/dist/public/build/manifest.json +56 -56
  59. package/package.json +2 -2
  60. package/dist/public/build/css/2209.ee64dbab.chunk.css.map +0 -1
  61. package/dist/public/build/css/components.fd2fa23a.chunk.css +0 -2
  62. package/dist/public/build/css/components.fd2fa23a.chunk.css.map +0 -1
  63. package/dist/public/build/css/navigation.d170ba80.chunk.css.map +0 -1
  64. package/dist/public/build/js/1604.72f6d465.chunk.js.map +0 -1
  65. package/dist/public/build/js/1983.e3e6d5e8.chunk.js.map +0 -1
  66. package/dist/public/build/js/3724.f72a2691.chunk.js.map +0 -1
  67. package/dist/public/build/js/3745.aa320ee5.chunk.js +0 -2
  68. package/dist/public/build/js/3745.aa320ee5.chunk.js.map +0 -1
  69. package/dist/public/build/js/4319.20f80209.chunk.js +0 -3
  70. package/dist/public/build/js/4319.20f80209.chunk.js.map +0 -1
  71. package/dist/public/build/js/5088.91897d9a.chunk.js +0 -2
  72. package/dist/public/build/js/5088.91897d9a.chunk.js.map +0 -1
  73. package/dist/public/build/js/5653.45eec4e2.chunk.js.map +0 -1
  74. package/dist/public/build/js/cluster-menu.381d4a48.chunk.js +0 -2
  75. package/dist/public/build/js/cluster-page-wrapper.b70c30d4.chunk.js +0 -2
  76. package/dist/public/build/js/components.4b381a1a.chunk.js +0 -2
  77. package/dist/public/build/js/components.4b381a1a.chunk.js.map +0 -1
  78. package/dist/public/build/js/default-subject-link.17448a19.chunk.js +0 -2
  79. package/dist/public/build/js/default-subject-link.17448a19.chunk.js.map +0 -1
  80. package/dist/public/build/js/job.c5cdc8c6.chunk.js +0 -2
  81. package/dist/public/build/js/job.c5cdc8c6.chunk.js.map +0 -1
  82. package/dist/public/build/js/main.03147e02.js +0 -3
  83. package/dist/public/build/js/main.03147e02.js.map +0 -1
  84. package/dist/public/build/js/navigation.1f7a0ea4.chunk.js +0 -2
  85. package/dist/public/build/js/navigation.1f7a0ea4.chunk.js.map +0 -1
  86. package/dist/public/build/js/odin.45cc399f.chunk.js +0 -2
  87. package/dist/public/build/js/odin.45cc399f.chunk.js.map +0 -1
  88. package/dist/public/build/js/operations.3535a692.chunk.js.map +0 -1
  89. package/dist/public/build/js/query-tracker.d266354f.chunk.js.map +0 -1
  90. package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js +0 -2
  91. package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js.map +0 -1
  92. /package/dist/public/build/js/{1604.72f6d465.chunk.js.LICENSE.txt → 1604.7b5c7976.chunk.js.LICENSE.txt} +0 -0
  93. /package/dist/public/build/js/{4319.20f80209.chunk.js.LICENSE.txt → 4319.3407fde8.chunk.js.LICENSE.txt} +0 -0
  94. /package/dist/public/build/js/{main.03147e02.js.LICENSE.txt → main.4f383c25.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/navigation.5512d9c6.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/shared/tablet-errors-manager.ts","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/ClickableAttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dropdown/Dropdown.js","webpack://@ytsaurus/ui/./src/ui/components/EditableAsText/EditableAsText.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/histogram.js","webpack://@ytsaurus/ui/./src/ui/components/Histogram/HistogramChart.tsx","webpack://@ytsaurus/ui/./src/ui/components/Histogram/Histogram.js","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/info-icon2.svg","webpack://@ytsaurus/ui/./src/ui/components/Info/Info.tsx","webpack://@ytsaurus/ui/./src/ui/components/LoadDataHandler/LoadDataHandler.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/compression.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/erasure-replication.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/main.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/RowsCount/RowsCount.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/AutomaticModeSwitch.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/presets.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/commonFields.tsx","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/size.js","webpack://@ytsaurus/ui/./src/ui/components/MetaTable/presets/ttl.tsx","webpack://@ytsaurus/ui/./src/ui/components/SchemaDataType/SchemaDataType.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/components/TextInputWithDebounce/TextInputWithDebounce.tsx","webpack://@ytsaurus/ui/./src/ui/components/WarningIcon/WarningIcon.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/react.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/ErrorBoundary/ErrorBoundary.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/getErrorMessage.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/Loader/Loader.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/components/ChartKit.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/plugins/yagr/index.js","webpack://@ytsaurus/ui/./src/ui/components/YagrChartKit/YagrChartKit.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/YTTimeline.tsx","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedTextOrLink.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/FormattedId/FormattedId.js","webpack://@ytsaurus/ui/./src/ui/components/formatters/index.js","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/constants/pagination.ts","webpack://@ytsaurus/ui/./src/ui/containers/ACL/RequestPermissions/RequestPermissions.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/modals/cell-preview.ts","webpack://@ytsaurus/ui/./src/ui/containers/CellPreviewModal/CellPreviewModal.tsx","webpack://@ytsaurus/ui/./src/ui/containers/Host/Host.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withSplit.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/use-side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/hooks/useResizeObserver.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountLink.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/helpers/pathToFileName.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/path-editing-popup.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/path-editing-popup.js","webpack://@ytsaurus/ui/./src/ui/hocs/components/Modal/withScope.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/PathEditorModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/copy-object.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/CopyObjectModal/CopyObjectModal.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-directory.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/CreateDirectoryModal/CreateDirectoryModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/move-object.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/MoveObjectModal/MoveObjectModal.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/restore-object.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/restore-object.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/RestoreObjectModal/RestoreObjectModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/ACL/ACL.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table-rum-id.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/columns-preset.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/table.js","webpack://@ytsaurus/ui/./src/ui/components/FilePicker/FilePicker.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/UploadManager/UploadManager.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/map-node-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/dyn-tables-state-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableActions.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/RemountAlert/RemountAlert.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/remount-table.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableMeta/TableMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTableSettings.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/replicated-table.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTable.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/ReplicatedTable/ReplicatedTableMeta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Link/Link.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/file.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/file.js","webpack://@ytsaurus/ui/./src/ui/containers/NavigationExtraActions/NavigationExtraActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/File/File.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/DataTableWrapper/DataTableWrapper.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/ColumnsPresetButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/ColumnSelectorButton.tsx","webpack://@ytsaurus/ui/./node_modules/screenfull/index.js","webpack://@ytsaurus/ui/./src/ui/components/FullScreen/FullScreen.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/FullScreenButton.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/SettingsButton.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/jupyter-logo.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/JupyterButton.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/pagination.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/OffsetSelectorButton.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/OffsetInput.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/Paginator.js","webpack://@ytsaurus/ui/./src/ui/containers/YQLKitButton/YQLKitButton.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/settings/navigation.ts","webpack://@ytsaurus/ui/./src/ui/containers/OpenQueryButtons/OpenQueryButtons.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/CreateQueryFromTable.tsx","webpack://@ytsaurus/ui/./src/ui/constants/navigation/modals/attributes-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/attributes-editor.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/attributes-editor.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/delete-object.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/table-erase-modal.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/map-nodes/node.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/map-node.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/Chooser.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/remote-copy-modal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MultipleActions.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/map-node.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/link-to-modal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/PathActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/EditTableActions.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/DatalensButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableOverview.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/OffsetSelectorModal/OffsetSelectorModal.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/TableOverview/TableColumnsPresetNotice.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/Table.js","webpack://@ytsaurus/ui/./src/ui/components/TTLInfo/TTLInfo.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/CreateTableModal/CreateTableModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Table/UploadManager/UploadManagerCreate.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/NodesTypes/NodesTypes.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/create-aco.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNode.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/document.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/document.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentBody.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentEditModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/Document.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Document/DocumentWithRum.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/transaction.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/Transaction/Transaction.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/transaction-map/transaction.js","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/transaction-map.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/transaction-map/table.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/content/transaction-map.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/TransactionMap/TransactionMap.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/getComponentByContentType.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/queue.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/consumer.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/filters.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/TargetQueue/TargetQueue.tsx","webpack://@ytsaurus/ui/./src/ui/components/Multimeter/BarChart.tsx","webpack://@ytsaurus/ui/./src/ui/components/Multimeter/Multimeter.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Meta/Meta.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Toolbar/Toolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/utils/column-builder.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/Partitions/Partitions.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/partitions.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/Partitions/PartitionsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/Consumer.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Consumer/views/ConsumerMetrics/ConsumerMetrics.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/consumer/status.ts","webpack://@ytsaurus/ui/./src/ui/components/Alerts/Alerts.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Meta/Meta.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/filters.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Toolbar/Toolbar.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/QueueMetrics/QueueMetrics.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/Consumers.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Consumers/ConsumersExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Partitions/Partitions.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/partitions.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/views/Partitions/PartitionsExtraControls.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Queue/Queue.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/queue/status.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/locks.js","webpack://@ytsaurus/ui/./src/ui/utils/clusters.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/locks.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Locks/Locks.js","webpack://@ytsaurus/ui/./src/ui/components/ErrorIcon/ErrorIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/MarkdownLinePreview/MarkdownLinePreview.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Schema/ExternalDescription/ExternalDescription.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Schema/Schema.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/schema.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/tables.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablets-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablets.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Tablets/Tablets.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/attributes.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/attributes/attributes.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Attributes/Attributes.tsx","webpack://@ytsaurus/ui/./src/ui/components/common/Timeline/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/access-log.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/access-log/access-log.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccountsLogTransactionInfo.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogError.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/tabs/access-log.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/abbr-sql.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogOpenQtButton.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLogFilters.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/AccessLog/AccessLog.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrorsBackground.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/tablet-errors-by-path.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/tablet-errors/tablet-errors-by-path.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrorsByPath/TabletErrorsByPathTable.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrorsByPath/TabletErrorsByPath.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TabletErrors/TabletErrors.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/tabs/user-attributes.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/tabs/user-attributes.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/UserAttributes/UserAttributes.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/TableMountConfig/TableMountConfig.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Flow/index.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/getComponentByMode.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/helpers/checkContentIsSupported.ts","webpack://@ytsaurus/ui/./src/ui/components/ElementsTable/hocs/withKeyboardNavigation.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/content/MapNode/MapNodesTable.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/PathEditorModal/DeleteObjectModal/DeleteObjectModal.tsx","webpack://@ytsaurus/ui/./src/shared/constants/settings-ts.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/AnnotationWithPartial.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/ActionButtons.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/NavigationDiscription/NavigationDescription.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/ContentViewer/ContentViewer.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/NavigationErrorImage.tsx","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/500.svg","webpack://@ytsaurus/ui/./src/ui/assets/img/svg/901.svg","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/ACL/RequestPermissions/RequestPermissions.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/RequestPermission/RequestPermissionIsNotAllowed.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/RequestPermission/RequestPermission.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/helpers/helpers.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationError/NavigationError.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationPermissionsNotice.tsx","webpack://@ytsaurus/ui/./src/ui/utils/accounts/accounts.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/AttributesEditor.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/remote-copy-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/RemoteCopyModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/table-erase-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableEraseModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableMergeSortModal/TableSortModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/TableMergeSortModal/TableMergeModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/dyn-tables-state-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/DynTablesStateModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/link-to-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/LinkToModal.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/modals/create-aco-modal.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/modals/CreateACOModal.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/Navigation.js","webpack://@ytsaurus/ui/./src/ui/components/Editor/Editor.js","webpack://@ytsaurus/ui/./src/ui/pages/navigation/Navigation/NavigationTopRowContent.tsx","webpack://@ytsaurus/ui/./src/ui/pages/query-tracker/QueryWidget/side-panel.tsx","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader.tsx","webpack://@ytsaurus/ui/./src/ui/rum/rum-app-measures.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/acl.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/readDynamicTable.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/content/table/readStaticTable.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/format.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/dynamic-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/static-table.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/navigation/modals/cell-preview/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl-filters.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/acl.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chaos_cell_bundles/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/chyt/index.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/favourites.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/navigation/index.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/attributes-to-filter.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/expanded-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool-child.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling-pools.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overview.js","webpack://@ytsaurus/ui/./src/ui/store/selectors/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/thor/unipika.ts","webpack://@ytsaurus/ui/./src/ui/utils/navigation/content/table/table-ts.ts","webpack://@ytsaurus/ui/./src/ui/components/YqlValue/YqlValue.tsx","webpack://@ytsaurus/ui/./src/ui/components/ColumnCell/ColumnCell.tsx","webpack://@ytsaurus/ui/./src/ui/utils/navigation/prepareColumns.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/detailsTable.tsx","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/overviewTable.js","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/pool.ts","webpack://@ytsaurus/ui/./src/ui/utils/scheduling/scheduling.ts","webpack://@ytsaurus/ui/./src/ui/utils/yql-types.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/chartkit-error/chartkit-error.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/mergeSettingStrategy.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/settings.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/libs/settings/eventEmitter.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/cn.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/chartkit/build/utils/common.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronLeft.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ChevronRight.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Ellipsis.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/useAlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertAction.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContextProvider.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertIcon.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmarkFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmark.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleInfoFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleCheckFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/TriangleExclamationFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ThunderboltFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/Alert.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertTitle.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertActions.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenu.classname.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/moveBack.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/moveForward.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuNavigationContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/isSeparator.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/shouldSkipItemNavigation.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/stringifyNavigationPath.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuPopup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/useListNavigation/useListNavigation.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/isSubmenuOpen.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/useSubmenu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenuItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/utils/toItemList.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/DropdownMenu.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/usePopupVisibility.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useConditionallyControlledState/useConditionallyControlledState.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/hooks/private/useStateWithCallback/useStateWithCallback.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/utils/typeCheckers.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/DropdownMenu/hooks/useScrollHandler.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/MenuGroup.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/MenuItem.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Menu/Menu.js"],"sourcesContent":["import axios, {AxiosResponse, CancelToken} from 'axios';\nimport {YTError} from '../@types/types';\n\nexport const TABLET_ERRORS_MANAGER_POST_ACTIONS = new Set([\n 'tablet_errors_by_bundle',\n 'tablet_errors_by_table',\n 'tablet_errors_by_table_and_timestamp',\n] as const);\n\nexport type TabletErrorsManagerPostActionType = Parameters<\n (typeof TABLET_ERRORS_MANAGER_POST_ACTIONS)['add']\n>[0];\n\nexport type MethodCount = {\n method: string;\n count: number;\n};\n\nexport type TableMethodErrorsCount = {\n table_path: string;\n last_error_timestamp: number;\n method_counts: Record<string, number>;\n};\n\nexport type TabletErrorsByBundleResponse = {\n all_methods: Array<string>;\n presented_methods: Array<string>;\n errors: Array<TableMethodErrorsCount>;\n fixed_end_timestamp: unknown;\n total_row_count: number;\n};\n\nexport type TabletErrorsBaseParams = {\n start_timestamp: number;\n end_timestamp: number;\n methods?: Array<string>;\n count_limit: number;\n offset: number;\n fixed_end_timestamp?: unknown;\n};\n\nexport type TabletMethodError = {\n tablet_id: string;\n timestamp: number;\n method: string;\n error: YTError;\n};\n\nexport type MethodErrors = {\n method: string;\n errors: Array<TabletError>;\n fixed_end_timestamp: number;\n total_row_count: number;\n all_methods: Array<string>;\n};\n\nexport type TabletError = {\n tablet_id: string;\n timestamp: number;\n error: YTError;\n method: string;\n host: string;\n};\n\nexport type TabletErrorsApi = {\n tablet_errors_by_bundle: {\n body: TabletErrorsBaseParams & {tablet_cell_bundle: string; table_path?: string};\n response: TabletErrorsByBundleResponse;\n };\n tablet_errors_by_table: {\n body: TabletErrorsBaseParams & {table_path: string; table_id: string; tablet_id?: string};\n response: MethodErrors;\n };\n tablet_errors_by_table_and_timestamp: {\n body: TabletErrorsBaseParams & {table_id: string};\n response: Array<TabletMethodError>;\n };\n};\n\nexport function fetchFromTabletErrorsApi<K extends keyof TabletErrorsApi>(\n action: K,\n cluster: string,\n params: TabletErrorsApi[K]['body'],\n cancelToken: CancelToken,\n): Promise<AxiosResponse<TabletErrorsApi[K]['response']>> {\n type ApiMethod = TabletErrorsApi[K];\n\n return axios.post<\n ApiMethod['response'],\n AxiosResponse<ApiMethod['response']>,\n ApiMethod['body']\n >(`/api/tablet-errors/${cluster}/${action}`, {...params, cluster}, {cancelToken});\n}\n","import React from 'react';\n\nimport Button, {ButtonProps} from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\n\nexport interface AttributesButtonProps extends ButtonProps {}\n\nexport default function AttributesButton({\n view = 'flat-secondary',\n size = 'm',\n ...rest\n}: AttributesButtonProps) {\n return (\n <Button view={view} size={size} {...rest}>\n <Icon awesome=\"at\" />\n </Button>\n );\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport AttributesButton, {AttributesButtonProps} from './AttributesButton';\n\nimport {openAttributesModal} from '../../store/actions/modals/attributes-modal';\nimport {ButtonProps} from '../Button/Button';\n\ninterface Props extends Omit<AttributesButtonProps, 'onClick' | 'title'> {\n title: React.ReactNode;\n\n // The function is called inside click handler, and overrides path and exactPath\n getPathProps?: () => Pick<Partial<Props>, 'path' | 'exactPath'>;\n path?: string;\n exactPath?: string;\n\n attribute?: string;\n attributes?: object;\n\n size?: ButtonProps['size'];\n view?: ButtonProps['view'];\n}\n\nfunction ClickableAttributesButton({\n title,\n getPathProps = () => {\n return {};\n },\n path,\n exactPath,\n attribute,\n attributes,\n openAttributesModal,\n withTooltip = true,\n tooltipProps = {placement: 'bottom-end', content: 'Show attributes'},\n ...rest\n}: Props & ConnectedProps<typeof connector>) {\n return (\n <AttributesButton\n {...rest}\n tooltipProps={tooltipProps}\n withTooltip={withTooltip}\n onClick={() => {\n const pathProps = {\n path,\n exactPath,\n ...getPathProps(),\n };\n\n openAttributesModal({\n title,\n ...pathProps,\n attribute,\n attributes,\n });\n }}\n />\n );\n}\n\nconst connector = connect(null, {openAttributesModal});\n\nexport default connector(ClickableAttributesButton);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport templates from '../templates/templates';\n\nimport {Popup} from '@gravity-ui/uikit';\n\nconst block = cn('elements-dropdown');\n\nclass Dropdown extends Component {\n static propTypes = {\n button: PropTypes.oneOfType([PropTypes.element, PropTypes.object]).isRequired,\n className: PropTypes.string,\n popup: PropTypes.object,\n directions: PropTypes.array,\n trigger: PropTypes.oneOf(['click', 'hover']).isRequired,\n template: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.shape({\n key: PropTypes.string.isRequired,\n data: PropTypes.object,\n }),\n ]).isRequired,\n zIndexGroupLevel: PropTypes.number,\n };\n\n static defaultProps = {\n zIndexGroupLevel: 1,\n directions: ['bottom-end', 'top-end'],\n };\n\n state = {\n popupVisible: false,\n };\n\n anchor = React.createRef();\n\n toggle = () =>\n this.setState((prevState) => ({\n popupVisible: !prevState.popupVisible,\n }));\n\n open = () => this.setState({popupVisible: true});\n\n close = () => this.setState({popupVisible: false});\n\n renderButton() {\n const {button, trigger} = this.props;\n\n const actionProps = {\n onClick: trigger === 'click' ? this.toggle : undefined,\n onMouseEnter: trigger === 'hover' ? this.open : undefined,\n onMouseLeave: trigger === 'hover' ? this.close : undefined,\n };\n\n return React.cloneElement(button, actionProps);\n }\n\n renderTemplate() {\n const {template} = this.props;\n const {key, data} = this.props.template;\n const renderer = templates.get(key).__default__;\n\n return React.isValidElement(template)\n ? React.cloneElement(template)\n : renderer.call(this, data);\n }\n\n renderPopup() {\n const {popup, directions} = this.props;\n\n return (\n <Popup\n placement={directions}\n onClose={this.close}\n open={true}\n anchorRef={this.anchor}\n hasArrow\n {...popup}\n >\n {this.renderTemplate()}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n\n return (\n <span className={block(null, className)} ref={this.anchor}>\n {this.renderButton()}\n {this.state.popupVisible && this.renderPopup()}\n </span>\n );\n }\n}\n\nexport default Dropdown;\n","import React, {useCallback, useEffect} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Icon from '../Icon/Icon';\n\nimport './EditableAsText.scss';\nimport Button, {ButtonProps} from '../Button/Button';\nconst block = cn('editable-as-text');\n\ninterface Props {\n className?: string;\n editorClassName?: string;\n\n text?: string;\n children: React.ReactNode;\n onChange: (v?: string) => void;\n disableEdit?: boolean;\n withControls?: boolean;\n cancelOnClose?: boolean;\n openOnClick?: boolean;\n size?: 's' | 'm' | 'l' | 'xl';\n saveButtonView?: ButtonProps['view'];\n cancelButtonView?: ButtonProps['view'];\n\n renderEditor?: (props: {\n value?: string;\n onBlur: () => void;\n onChange: (value?: string) => void;\n className?: string;\n onApply: (value?: string) => void;\n }) => React.ReactNode;\n onModeChange?: (isEdit: boolean) => void;\n}\n\nexport function EditableAsText(props: Props) {\n const {\n children,\n onChange,\n text,\n className,\n withControls,\n size,\n disableEdit,\n cancelOnClose,\n openOnClick,\n renderEditor,\n onModeChange,\n saveButtonView = 'normal',\n cancelButtonView = 'normal',\n } = props;\n const [editMode, setEditMode] = React.useState(false);\n const [input, setInput] = React.useState(text || '');\n\n useEffect(() => {\n setInput(text || '');\n }, [text]);\n\n const handleChangeMode = useCallback(\n (isEdit: boolean) => {\n if (onModeChange) onModeChange(isEdit);\n setEditMode(isEdit);\n },\n [onModeChange],\n );\n\n const closeEditMode = React.useCallback(() => {\n handleChangeMode(false);\n if (cancelOnClose) setInput(text || '');\n }, [cancelOnClose, handleChangeMode, text]);\n\n const startTextEdit = useCallback(() => {\n handleChangeMode(true);\n }, [handleChangeMode]);\n\n const handleWrapClick = () => {\n if (!editMode && openOnClick) {\n startTextEdit();\n }\n };\n\n const handleChange = React.useCallback((val?: string) => setInput(val ?? ''), [setInput]);\n\n const applyValue = useCallback(() => {\n handleChangeMode(false);\n onChange(input);\n }, [onChange, handleChangeMode, input]);\n\n const closeAndResetValue = useCallback(() => {\n handleChangeMode(false);\n setInput(text || '');\n }, [handleChangeMode, text]);\n\n const onApply = useCallback(\n (value?: string) => {\n handleChangeMode(false);\n onChange(value);\n },\n [handleChangeMode, onChange],\n );\n\n const handleKeyDown = React.useCallback(\n (evt: React.KeyboardEvent<HTMLElement>) => {\n if (evt.key === 'Enter') {\n applyValue();\n }\n if (evt.key === 'Escape') {\n closeAndResetValue();\n }\n },\n [applyValue, closeAndResetValue],\n );\n\n const controlSize = size ? size : 'm';\n\n return (\n <div\n className={block(null, [className || '', editMode ? 'edit' : ''])}\n onClick={handleWrapClick}\n >\n {editMode ? (\n <>\n {renderEditor ? (\n renderEditor({\n value: input,\n onChange: handleChange,\n className: block('control'),\n onBlur: closeEditMode,\n onApply,\n })\n ) : (\n <TextInput\n className={block('control')}\n autoFocus\n size={controlSize}\n value={input}\n onUpdate={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={closeEditMode}\n />\n )}\n {withControls && (\n <>\n <Button\n className={block('control')}\n view={saveButtonView}\n extraProps={{onMouseDown: applyValue}}\n size={controlSize}\n >\n <Icon awesome={'check'} size={controlSize} />\n </Button>\n <Button\n className={block('control')}\n view={cancelButtonView}\n extraProps={{onMouseDown: closeAndResetValue}}\n size={controlSize}\n >\n <Icon awesome={'times'} size={controlSize} />\n </Button>\n </>\n )}\n </>\n ) : (\n <React.Fragment>\n {children}\n {!disableEdit && (\n <Button\n className={block('control', {type: 'edit'})}\n view=\"outlined\"\n onClick={startTextEdit}\n size={controlSize}\n >\n <Icon awesome={'pencil'} size={controlSize} />\n </Button>\n )}\n </React.Fragment>\n )}\n </div>\n );\n}\n\nexport function EditButton({\n onClick,\n size = 'm',\n}: {\n onClick: () => void;\n size?: ButtonProps['size'];\n}) {\n return (\n <Button className={block('edit-btn')} onClick={onClick} size={size}>\n <Icon awesome={'pencil'} />\n </Button>\n );\n}\n","import hammer from '../../common/hammer';\nimport {createSelector} from 'reselect';\n\nconst getHistogram = (state, props) => props.histogram;\n\nexport const createGetQuartiles = () =>\n createSelector(getHistogram, (histogram) => hammer.stat.quartiles(histogram.data));\n\nexport const createGetPDF = () =>\n createSelector(getHistogram, (histogram) => hammer.stat.pdf(histogram.data));\n\nexport const createGetECDF = () =>\n createSelector([getHistogram, createGetPDF()], (histogram, pdf) => {\n const ecdf = hammer.stat.ecdf(histogram.data);\n\n // Create fake points\n ecdf.steps.unshift({\n x: pdf.min,\n y: 0,\n });\n ecdf.steps.push({\n x: pdf.min + pdf.bucketNumber * pdf.bucketSize,\n y: 100,\n });\n\n return ecdf;\n });\n\nexport const createGetIsDataGood = () =>\n createSelector(\n [createGetPDF(), createGetECDF(), createGetQuartiles()],\n (pdfData, ecdfData, quartiles) => {\n if (pdfData.min === pdfData.max) {\n // All points are the same\n return false;\n } else if (ecdfData.steps.length < 5) {\n // We have got too few different points in data (including fake points)\n return false;\n } else if (quartiles.q75 - quartiles.q25 === 0) {\n // All points are almost the same\n return false;\n } else {\n return true;\n }\n },\n );\n","import compact_ from 'lodash/compact';\nimport React from 'react';\nimport YagrChartKit, {\n RawSerieData,\n YagrWidgetData,\n getSerieColor,\n} from '../YagrChartKit/YagrChartKit';\n\nimport formatLib from '../../common/hammer/format';\n\nexport interface HistogramChartProps {\n className: string;\n format: 'Number' | 'Bytes';\n ecdf: ECDFData;\n pdf: PDFData;\n dataName: string;\n lineOnly?: boolean;\n}\n\ninterface ECDFData {\n min: number;\n max: number;\n steps: Array<XY>;\n}\n\ntype XY = [X, Y] | {x: X; y: Y};\n\ninterface PDFData {\n bucketNumber: number;\n bucketSize: number;\n buckets: Array<[X, Y]>;\n min: X;\n max: X;\n}\n\ntype X = number;\ntype Y = number;\n\nfunction HistogramChart({className, pdf, ecdf, format, dataName, lineOnly}: HistogramChartProps) {\n const yagrData = React.useMemo(() => {\n const xFormat = format === 'Bytes' ? formatLib.Bytes : formatLib.Number;\n const {timeline, graphs, step} = lineOnly\n ? getLineOnlyData(pdf, ecdf)\n : getColumnData(pdf, ecdf);\n const res: YagrWidgetData = {\n data: {\n timeline,\n graphs,\n },\n libraryConfig: {\n axes: {\n x: {\n values: (_d, x) => x.map(xFormat),\n side: 'bottom',\n grid: {\n show: false,\n },\n },\n y1: {\n side: 'right',\n show: false,\n },\n y: {\n side: 'left',\n show: false,\n },\n },\n scales: {\n y1: {\n min: 0,\n max: 100,\n },\n y: {\n min: 0,\n },\n },\n tooltip: {\n render: (tooltipData) => {\n const {\n x,\n scales: [first, second],\n } = tooltipData;\n const columnValue = lineOnly ? undefined : first?.rows?.[0]?.originalValue;\n const lineValue = lineOnly\n ? first?.rows?.[0]?.originalValue\n : second?.rows?.[0]?.originalValue;\n\n return (\n renderDefaultTooltip({\n colValue:\n columnValue !== undefined\n ? formatLib.Number(columnValue)\n : undefined,\n colX0: xFormat(x - step / 2),\n colX1: xFormat(x + step / 2),\n lineValue:\n lineValue !== undefined\n ? formatLib.Number(lineValue, {digits: 2}) + '%'\n : undefined,\n lineX: xFormat(x),\n dataName,\n lineOnly,\n }) ?? '-'\n );\n },\n },\n },\n sources: {},\n };\n return res;\n }, [pdf, ecdf, format, lineOnly]);\n\n return (\n <div className={className}>\n <YagrChartKit type={'yagr'} data={yagrData} />\n </div>\n );\n}\n\nexport default React.memo(HistogramChart);\n\nfunction getColumnData(\n {buckets, min, bucketSize}: PDFData,\n {steps}: ECDFData,\n): YagrWidgetData['data'] & {step: number} {\n const timeline = [min - 0.1 * bucketSize];\n const data: Array<number> = [undefined!];\n const lineData: Array<number> = [undefined!];\n let j = 0;\n for (let i = 0; i < buckets.length; ++i) {\n const [x, y] = buckets[i];\n const bestX = x + bucketSize / 2;\n data.push(y);\n timeline.push(bestX);\n while (j < steps.length) {\n const item = steps[j];\n const itemX = getX(item);\n if (itemX === bestX) {\n lineData[i + 1] = Array.isArray(item) ? item[1] : item.y;\n break;\n } else if (itemX === undefined || itemX < bestX) {\n ++j;\n continue;\n } else {\n lineData[i + 1] = calcBestY(\n bestX,\n steps[Math.min(steps.length - 1, j - 1)],\n steps[j],\n )!;\n break;\n }\n }\n }\n timeline.push(min + (0.1 + bucketSize) * buckets.length);\n data.push(undefined!);\n lineData.push(undefined!);\n\n const graphs: RawSerieData[] = [\n {\n type: 'line' as const,\n data: lineData,\n scale: 'y1',\n color: getSerieColor(1),\n },\n {\n type: 'column' as const,\n data,\n color: getSerieColor(0),\n ...{\n renderOptions: {\n size: [1],\n gap: 1,\n },\n },\n },\n ];\n return {\n graphs,\n timeline,\n step: bucketSize,\n };\n}\n\nfunction getLineOnlyData(\n {min, buckets, bucketSize}: PDFData,\n {steps}: ECDFData,\n): ReturnType<typeof getColumnData> {\n const timeline: Array<number> = [min - 0.1 * bucketSize];\n const data: Array<number> = [NaN];\n\n for (const item of steps) {\n timeline.push(getX(item)!);\n data.push(getY(item)!);\n }\n\n timeline.push(min + (0.1 + bucketSize) * buckets.length);\n data.push(NaN);\n\n const graphs: Array<RawSerieData> = [\n {\n type: 'line' as const,\n data,\n color: getSerieColor(1),\n },\n ];\n\n return {\n timeline,\n graphs,\n step: NaN,\n };\n}\n\nfunction renderDefaultTooltip({\n colValue,\n colX0,\n colX1,\n lineValue,\n lineX,\n dataName,\n lineOnly,\n}: {\n colValue?: string;\n colX0: string;\n colX1: string;\n lineValue?: string;\n lineX: string;\n dataName: string;\n lineOnly?: boolean;\n}) {\n const lp = lineOnly ? '' : '~';\n return compact_([\n colValue !== undefined\n ? `<b>${colValue}</b> partitions contain in range from <b>${colX0}</b> to <b>${colX1}</b> - ${dataName}`\n : undefined,\n lineValue !== undefined\n ? `<b>${lp}${lineValue}</b> of tablets conains <b>${lp}${lineX}</b> or less`\n : undefined,\n ]).join('<br/>');\n}\n\nfunction getX(v?: XY) {\n return Array.isArray(v) ? v[0] : v?.x;\n}\n\nfunction getY(v?: XY) {\n return Array.isArray(v) ? v[1] : v?.y;\n}\n\nfunction calcBestY(bestX: number, left?: XY, right?: XY) {\n const ly = getY(left);\n const ry = getY(right);\n if (ly === undefined) {\n return ry;\n }\n\n if (ry === undefined) {\n return ly;\n }\n\n const lx = getX(left);\n const rx = getX(right);\n const k = (bestX - lx!) / (rx! - lx!);\n\n return ly + k * (ry - ly);\n}\n","import {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../common/hammer';\nimport cn from 'bem-cn-lite';\nimport React from 'react';\n\nimport keys_ from 'lodash/keys';\nimport map_ from 'lodash/map';\n\nimport {\n createGetECDF,\n createGetIsDataGood,\n createGetPDF,\n createGetQuartiles,\n} from '../../store/selectors/histogram';\nimport HistogramChart from './HistogramChart';\n\nimport './Histogram.scss';\nimport {Checkbox, Select} from '@gravity-ui/uikit';\n\nconst block = cn('histogram');\n\nHistogram.quartilesProps = PropTypes.shape({\n min: PropTypes.number,\n q25: PropTypes.number,\n q50: PropTypes.number,\n q75: PropTypes.number,\n max: PropTypes.number,\n});\n\nHistogram.pdfProps = PropTypes.shape({\n bucketNumber: PropTypes.number,\n bucketSize: PropTypes.number,\n max: PropTypes.number,\n min: PropTypes.number,\n valueMax: PropTypes.number,\n valueMin: PropTypes.number,\n quartiles: Histogram.quartilesProps,\n buckets: PropTypes.array,\n});\n\nHistogram.ecdfProps = PropTypes.shape({\n min: PropTypes.number,\n max: PropTypes.number,\n steps: PropTypes.array,\n});\n\nHistogram.propTypes = {\n // from parent\n activeHistogram: PropTypes.string.isRequired,\n handleHistogramChange: PropTypes.func.isRequired,\n histogramItems: PropTypes.object.isRequired,\n\n histogram: PropTypes.shape({\n data: PropTypes.array.isRequired,\n format: PropTypes.string.isRequired,\n dataName: PropTypes.string.isRequired,\n dataFormat: PropTypes.string.isRequired,\n }).isRequired,\n\n // from connect\n quartiles: Histogram.quartilesProps.isRequired,\n pdf: Histogram.pdfProps.isRequired,\n ecdf: Histogram.ecdfProps.isRequired,\n isDataGood: PropTypes.bool.isRequired,\n};\n\nfunction Histogram(props) {\n const {activeHistogram, handleHistogramChange, histogramItems} = props;\n const {histogram, quartiles, pdf, ecdf, isDataGood} = props;\n\n const params = {...histogram, pdf, ecdf};\n\n const [isDatailedLine, setDetailed] = React.useState(false);\n\n return (\n <div className={block()}>\n <div className={block('toolbar')}>\n <Select\n value={[activeHistogram]}\n onUpdate={(values) => handleHistogramChange(values[0])}\n options={map_(keys_(histogramItems), (value) => {\n return {value, content: value};\n })}\n width=\"max\"\n />\n <Checkbox\n className={block('detailed')}\n checked={isDatailedLine}\n onUpdate={setDetailed}\n >\n Detailed line\n </Checkbox>\n </div>\n\n {isDataGood ? (\n <HistogramChart className={block('chart')} {...params} lineOnly={isDatailedLine} />\n ) : (\n <div className={block('bad-data')}>\n <p className={block('bad-data-message')}>\n Could not draw a descriptive chart with given data.\n </p>\n </div>\n )}\n\n <ul className={block('quartiles')}>\n <li className={block('quartiles-item')}>\n Min –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.min)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q25% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q25)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q50% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q50)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Q75% –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.q75)}\n </span>\n </li>\n <li className={block('quartiles-item')}>\n Max –{' '}\n <span className={block('quartiles-count')}>\n {hammer.format[histogram.format](quartiles.max)}\n </span>\n </li>\n </ul>\n </div>\n );\n}\n\n// https://github.com/reduxjs/reselect#sharing-selectors-with-props-across-multiple-component-instances\nconst makeMapStateToProps = () => {\n const getQuartiles = createGetQuartiles();\n const getPDF = createGetPDF();\n const getECDF = createGetECDF();\n const getIsDataGood = createGetIsDataGood();\n\n return (state, props) => {\n const quartiles = getQuartiles(state, props);\n const pdf = getPDF(state, props);\n const ecdf = getECDF(state, props);\n const isDataGood = getIsDataGood(state, props);\n\n return {quartiles, pdf, ecdf, isDataGood};\n };\n};\n\nexport default connect(makeMapStateToProps)(Histogram);\n","const SvgInfoIcon2 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 14 14\" {...props}><path fill=\"#027BF3\" d=\"M7 .828C3.521.828.703 3.672.703 7.125A6.296 6.296 0 0 0 7 13.422c3.453 0 6.297-2.818 6.297-6.297C13.297 3.672 10.453.828 7 .828m0 11.375a5.06 5.06 0 0 1-5.078-5.078A5.077 5.077 0 0 1 7 2.047c2.793 0 5.078 2.285 5.078 5.078A5.077 5.077 0 0 1 7 12.203m0-8.582c-.61 0-1.066.483-1.066 1.067 0 .609.457 1.066 1.066 1.066.584 0 1.066-.457 1.066-1.066 0-.584-.482-1.067-1.066-1.067m1.422 6.45v-.61a.33.33 0 0 0-.305-.305h-.305V6.617a.33.33 0 0 0-.304-.304H5.883a.31.31 0 0 0-.305.304v.61c0 .177.127.304.305.304h.305v1.625h-.305a.31.31 0 0 0-.305.305v.61c0 .177.127.304.305.304h2.234a.31.31 0 0 0 .305-.305\" /></svg>;\nexport default SvgInfoIcon2;","import React, {ReactNode} from 'react';\nimport block from 'bem-cn-lite';\nimport {Icon} from '@gravity-ui/uikit';\n\nimport infoIcon from '../../assets/img/svg/info-icon2.svg';\n\nimport './Info.scss';\n\nconst b = block('info-block');\n\ninterface InfoProps {\n children: ReactNode;\n className?: string;\n}\nexport function Info({children, className}: InfoProps) {\n return (\n <div className={b(null, className)}>\n <div className={b('icon')}>\n <Icon data={infoIcon} />\n </div>\n <div className={b('body')}>{children}</div>\n </div>\n );\n}\n","import React, {Component} from 'react';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Error from '../../components/Error/Error';\nimport hammer from '../../common/hammer';\n\nimport {showErrorPopup} from '../../utils/utils';\nimport {YTError} from '../../types';\n\nconst toaster = new Toaster();\n\ninterface LoadDataHandlerProps {\n alwaysShowError?: boolean;\n loaded: boolean;\n error: boolean;\n errorData?: YTError;\n children: React.ReactNode;\n}\n\nexport default class LoadDataHandler extends Component<LoadDataHandlerProps> {\n componentDidUpdate() {\n const {error, loaded, errorData} = this.props;\n\n if (error && loaded) {\n toaster.add({\n theme: 'danger',\n name: 'network',\n autoHiding: 500000,\n title: 'Oops! something went wrong.',\n content: errorData ? (errorData as YTError).message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(errorData as YTError),\n },\n ],\n });\n }\n }\n\n render() {\n const {alwaysShowError = false, error, errorData, loaded, children} = this.props;\n\n const initialLoading = !loaded;\n\n if (error && (alwaysShowError || initialLoading)) {\n return <Error error={errorData} />;\n }\n\n return children;\n }\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '@ytsaurus/interface-helpers/lib/hammer';\n\nexport default (attributes) => {\n const [compressionRatio, compressionCodec] = ypath.getValues(attributes, [\n '/compression_ratio',\n '/compression_codec',\n ]);\n\n return [\n {\n key: 'compression_ratio',\n value: hammer.format['Number'](compressionRatio, {digits: 5}),\n },\n {\n key: 'compression_codec',\n value: compressionCodec,\n },\n ];\n};\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\nexport default (attributes) => {\n const [erasureCodec, replicationFactor] = ypath.getValues(attributes, [\n '/erasure_codec',\n '/replication_factor',\n ]);\n\n const hideReplicationFactor = erasureCodec && erasureCodec !== 'none';\n return [\n {\n key: 'erasure codec',\n value: erasureCodec,\n helpUrl: docsUrl(UIFactory.docsUrls['storage:replication#erasure']),\n visible: erasureCodec !== 'none',\n },\n {\n key: 'replication factor',\n value: replicationFactor,\n visible: !hideReplicationFactor && replicationFactor !== 'none',\n },\n ];\n};\n","import React from 'react';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {Template} from '../../../components/MetaTable/templates/Template';\nimport {SubjectCard} from '../../SubjectLink/SubjectLink';\nimport AccountLink from '../../../pages/accounts/AccountLink';\nimport UIFactory from '../../../UIFactory';\nimport {makeTTLItems} from './ttl';\n\nexport default function metaTablePresetMain(attributes) {\n const [id, owner, account, creationTime, modificationTime, accessTime, yql_op_id] =\n ypath.getValues(attributes, [\n '/id',\n '/owner',\n '/account',\n '/creation_time',\n '/modification_time',\n '/access_time',\n '/_yql_op_id',\n ]);\n\n const yqlLink = yql_op_id ? UIFactory.yqlWidgetSetup?.renderYqlOperationLink(yql_op_id) : null;\n\n return [\n {\n key: 'id',\n value: <Template.Id id={id} />,\n },\n {\n key: 'owner',\n value: <SubjectCard name={owner} />,\n },\n {\n key: 'account',\n value: <AccountLink account={account} />,\n visible: Boolean(account),\n },\n {\n key: 'creation_time',\n value: <Template.Time time={creationTime} valueFormat=\"DateTime\" />,\n visible: Boolean(creationTime),\n },\n ...makeTTLItems(attributes, {showTTLLabel: true}),\n {\n key: 'modification_time',\n value: <Template.Time time={modificationTime} valueFormat=\"DateTime\" />,\n visible: Boolean(modificationTime),\n },\n {\n key: 'access_time',\n value: <Template.Time time={accessTime} valueFormat=\"DateTime\" />,\n visible: Boolean(accessTime),\n },\n {\n key: 'YQL operation',\n value: yqlLink,\n visible: Boolean(yqlLink),\n },\n ];\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Popover} from '@gravity-ui/uikit';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport hammer from '../../../../../../common/hammer';\n\nimport './RowsCount.scss';\n\nconst block = cn('rows-count');\n\nexport function RowsCount(props: {count: number; isDynamic: boolean}) {\n const {count, isDynamic} = props;\n return (\n <React.Fragment>\n {isDynamic ? '≈ ' : ''}\n {hammer.format['Number'](count)}\n {!isDynamic ? null : (\n <Popover\n content={\n <span>\n This value corresponds to the number of rows stored in the on-disk\n chunks. The actual value may be different: it may be either larger due\n to new rows residing only in memory or smaller due to unsynced deleted\n rows and multiple versions stored on disks. It is not possible to\n calculate the real value without reading all the rows.\n </span>\n }\n >\n <span className={block('question')}>\n <Icon awesome={'question-circle'} />\n </span>\n </Popover>\n )}\n </React.Fragment>\n );\n}\n","import React from 'react';\n\nimport {Switch} from '@gravity-ui/uikit';\n\nimport StatusBulb from '../../../../../components/StatusBulb/StatusBulb';\nimport {FormApi, YTDFDialog, makeErrorFields} from '../../../../../components/Dialog';\nimport {YTError} from '../../../../../types';\n\nexport interface Props {\n value?: boolean;\n onEdit?: (currentValue?: Props['value']) => Promise<void>;\n}\n\ninterface FormValues {\n value?: string;\n}\n\nfunction AutomaticModeSwitchEditor({value, onEdit, onClose}: Props & {onClose: () => void}) {\n const [error, setError] = React.useState<YTError | undefined>(undefined);\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n const {values} = form.getState();\n try {\n await onEdit?.(values.value === 'enabled');\n } catch (e: any) {\n setError(e);\n throw e;\n }\n },\n [setError],\n );\n\n return (\n <YTDFDialog<FormValues>\n pristineSubmittable={true}\n headerProps={{\n title: 'Edit',\n }}\n onAdd={handleAdd}\n onClose={onClose}\n visible={true}\n initialValues={{\n value: value ? 'enabled' : 'disabled',\n }}\n fields={[\n {\n name: 'value',\n type: 'radio',\n caption: 'Automatic mode switch',\n extras: {\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n );\n}\n\nfunction AutomaticModeSwitch({value, onEdit}: Props) {\n const [showEditor, setShowEditor] = React.useState(false);\n\n const handleShow = React.useCallback(() => {\n setShowEditor(true);\n }, []);\n\n const handleClose = React.useCallback(() => {\n setShowEditor(false);\n }, []);\n\n if (onEdit) {\n return (\n <React.Fragment>\n <Switch\n checked={value}\n onUpdate={handleShow}\n title={value ? 'Enabled' : 'Disabled'}\n />\n {showEditor && (\n <AutomaticModeSwitchEditor\n value={!value}\n onEdit={onEdit}\n onClose={handleClose}\n />\n )}\n </React.Fragment>\n );\n }\n\n return (\n <React.Fragment>\n <StatusBulb theme={value ? 'enabled' : 'unknown'} />{' '}\n </React.Fragment>\n );\n}\n\nexport default React.memo(AutomaticModeSwitch);\n","import React from 'react';\nimport hammer from '../../../common/hammer';\nimport ypath from '../../../common/thor/ypath';\nimport {RowsCount} from '../../../pages/navigation/content/Table/TableMeta/RowsCount/RowsCount';\nimport {tabletActiveBundleLink} from '../../../utils/components/tablet-cells';\nimport Label, {LabelOnOff} from '../../Label/Label';\nimport Link from '../../Link/Link';\nimport {Template} from '../templates/Template';\nimport compression from './compression';\nimport erasureReplication from './erasure-replication';\nimport size from './size';\nimport {CypressNodeTypes} from '../../../utils/cypress-attributes';\nimport {main} from './index';\nimport {getCommonFields} from '../../../pages/navigation/content/Table/TableMeta/commonFields';\nimport {Props as AutomaticModeSwitchProps} from '../../../pages/navigation/content/Table/TableMeta/AutomaticModeSwitch';\n\nexport function replicatedTableTracker(attributes: any) {\n const value = ypath.getValue(\n attributes,\n '/replicated_table_options/replicated_table_tracker_enabled',\n );\n return {\n key: 'replicated_table_tracker',\n value: <LabelOnOff value={value} />,\n visible: value !== undefined,\n };\n}\n\nexport function tableSize(attributes: any, isDynamic: boolean, mediumList: string[]) {\n const [rowCount, chunkCount, dataWeight] = ypath.getValues(attributes, [\n '/chunk_row_count',\n '/chunk_count',\n '/data_weight',\n ]);\n return [\n {\n key: 'rowCount',\n label: 'Rows',\n value: <RowsCount isDynamic={isDynamic} count={rowCount} />,\n visible: Boolean(rowCount),\n },\n {\n key: 'chunkCount',\n label: 'Chunks',\n value: hammer.format['Number'](chunkCount),\n visible: Boolean(dataWeight),\n },\n ...size(attributes, mediumList),\n {\n key: 'dataWeight',\n label: 'Data weight',\n value: <Template.FormattedValue value={dataWeight} format=\"Bytes\" />,\n visible: Boolean(chunkCount),\n },\n ];\n}\n\nexport function tableStorage(attributes: any, tableType: string) {\n const optimizeFor = ypath.getValue(attributes, '/optimize_for');\n return [\n {\n key: 'tableType',\n label: 'Table type',\n value: tableType,\n },\n {\n key: 'optimizeFor',\n label: 'Optimize for',\n value: <Label text={hammer.format['ReadableField'](optimizeFor)} theme=\"info\" />,\n visible: optimizeFor !== 'undefined',\n },\n ...compression(attributes),\n ...erasureReplication(attributes),\n replicatedTableTracker(attributes),\n ];\n}\n\nexport function dynTableInfo(attributes: any, cluster: string, tabletErrorCount: number) {\n const [tabletCellBundle, tabletState, inMemoryMode] = ypath.getValues(attributes, [\n '/tablet_cell_bundle',\n '/tablet_state',\n '/in_memory_mode',\n ]);\n\n const tabletUrl = tabletActiveBundleLink(cluster, tabletCellBundle);\n return [\n {\n key: 'tabletCellBundle',\n label: 'Tablet cell bundle',\n value: (\n <Link theme={'primary'} routed url={tabletUrl}>\n {tabletCellBundle}\n </Link>\n ),\n },\n {\n key: 'tabletState',\n label: 'Tablet state',\n value: (\n <Label\n theme={tabletState === 'mounted' ? 'info' : 'default'}\n text={hammer.format['ReadableField'](tabletState)}\n />\n ),\n },\n {\n key: 'inMemoryMode',\n label: 'In memory mode',\n value: (\n <Label\n theme={inMemoryMode && inMemoryMode !== 'none' ? 'info' : 'default'}\n text={hammer.format['ReadableField'](inMemoryMode || 'none')}\n />\n ),\n },\n {\n key: 'tabletErrorCount',\n label: 'Tablet error count',\n value: hammer.format['Number'](tabletErrorCount),\n },\n ];\n}\n\nexport const makeMetaItems = ({\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList = [],\n tabletErrorCount = 0,\n onEditEnableReplicatedTableTracker,\n}: {\n cluster: string;\n attributes: any;\n mediumList?: string[];\n isDynamic: boolean;\n tableType: string;\n tabletErrorCount?: number;\n onEditEnableReplicatedTableTracker?: AutomaticModeSwitchProps['onEdit'];\n}) => {\n const cf = getCommonFields({\n cluster,\n attributes,\n isDynamic,\n tableType: attributes.type,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n });\n\n switch (attributes.type) {\n case CypressNodeTypes.REPLICATED_TABLE:\n case CypressNodeTypes.REPLICATION_LOG_TABLE:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n tableStorage(attributes, attributes.type),\n [\n cf.sorted,\n ...dynTableInfo(attributes, cluster, tabletErrorCount),\n cf.automaticModeSwitch,\n ],\n ];\n\n case CypressNodeTypes.CHAOS_REPLICATED_TABLE:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n [\n cf.tableType,\n replicatedTableTracker(attributes),\n cf.sorted,\n cf.chaosCellBundle,\n cf.automaticModeSwitch,\n ],\n ];\n\n default:\n return [\n main(attributes),\n tableSize(attributes, isDynamic, mediumList),\n tableStorage(attributes, tableType),\n [\n cf.sorted,\n ...(isDynamic ? dynTableInfo(attributes, cluster, tabletErrorCount) : []),\n ],\n ];\n }\n};\n","import React from 'react';\nimport ypath from '../../../../../common/thor/ypath';\nimport Link from '../../../../../components/Link/Link';\nimport AutomaticModeSwitch, {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\nimport reduce_ from 'lodash/reduce';\nimport {MetaTableItem} from '../../../../../components/MetaTable/MetaTable';\nimport {tabletActiveChaosBundleLink} from '../../../../../utils/components/tablet-cells';\n\nexport const getCommonFields = ({\n cluster,\n attributes,\n tableType,\n onEditEnableReplicatedTableTracker,\n}: {\n cluster: string;\n attributes: any;\n isDynamic: boolean;\n tableType: string;\n tabletErrorCount: number;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}) => {\n const [sorted, chaosCellBundle, enable_replicated_table_tracker] = ypath.getValues(attributes, [\n '/sorted',\n '/chaos_cell_bundle',\n '/replicated_table_options/enable_replicated_table_tracker',\n ]);\n\n const chaosUrl = tabletActiveChaosBundleLink(cluster, chaosCellBundle);\n\n const fields = [\n {\n key: 'tableType',\n label: 'Table type',\n value: tableType,\n },\n {\n key: 'sorted',\n value: sorted,\n visible: sorted !== undefined,\n },\n {\n key: 'chaosCellBundle',\n label: 'Chaos cell bundle',\n value: (\n <Link theme={'primary'} routed url={chaosUrl}>\n {chaosCellBundle}\n </Link>\n ),\n },\n {\n key: 'automaticModeSwitch',\n label: 'Table automatic mode switch',\n value: (\n <AutomaticModeSwitch\n value={enable_replicated_table_tracker}\n onEdit={onEditEnableReplicatedTableTracker}\n />\n ),\n },\n ] as const;\n\n type Fields = typeof fields;\n\n const commonFields = reduce_(\n fields,\n (acc, item) => {\n acc[item.key] = item;\n return acc;\n },\n {} as Record<Fields[number]['key'], MetaTableItem>,\n );\n\n return commonFields;\n};\n","import map_ from 'lodash/map';\n\nimport React from 'react';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {Template} from '../../../components/MetaTable/templates/Template';\n\nexport default function metaTablePresetSize(attributes, mediumList) {\n const [uncompressedDataSize, compressedDataSize, primaryMedium] = ypath.getValues(attributes, [\n '/uncompressed_data_size',\n '/compressed_data_size',\n '/primary_medium',\n ]);\n const [usageDiskSpace, diskSpace] = ypath.getValues(attributes, [\n '/resource_usage/disk_space',\n '/disk_space',\n ]);\n\n const mediumsTemplates = map_(mediumList, (medium) => {\n const usageMediumDiskSpace = ypath.getValue(\n attributes,\n `/resource_usage/disk_space_per_medium/${medium}`,\n );\n const mediumDiskSpace = ypath.getValue(attributes, `/disk_space_per_medium/${medium}`);\n\n return {\n key: medium + '_disk_space',\n value: (\n <Template.FormattedValue\n value={usageMediumDiskSpace || mediumDiskSpace}\n format=\"Bytes\"\n />\n ),\n visible: Boolean(usageMediumDiskSpace || mediumDiskSpace),\n };\n });\n\n const showMediums = mediumsTemplates.filter((medium) => medium.visible).length > 1;\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 label: 'Total disk space',\n value: <Template.FormattedValue value={usageDiskSpace || diskSpace} format=\"Bytes\" />,\n visible: Boolean(usageDiskSpace || diskSpace),\n },\n ...(showMediums ? mediumsTemplates : []),\n ];\n}\n","import React from 'react';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Label, LabelProps} from '@gravity-ui/uikit';\n\nimport ypath from '../../../common/thor/ypath';\n\nimport {formatTimeDuration} from '../../../components/TimeDuration/TimeDuration';\nimport Link from '../../../components/Link/Link';\nimport Icon from '../../../components/Icon/Icon';\nimport UIFactory from '../../../UIFactory';\n\nimport {MetaTableItem} from '../MetaTable';\nimport {Template} from '../templates/Template';\nimport {makeNavigationLink} from '../../../utils/app-url';\n\nconst block = cn('meta-table-ttl');\n\nexport function makeTTLItems(attrs: unknown, {showTTLLabel}: {showTTLLabel?: false} = {}) {\n const expiration_time = ypath.getValue(attrs, '/expiration_time');\n const expiration_timeout = ypath.getValue(attrs, '/expiration_timeout');\n const {time, timeout} = ypath.getValue(attrs, '/effective_expiration') ?? {};\n\n const res: Array<MetaTableItem> = [];\n\n const className = block('ttl');\n\n if (time && time.value !== expiration_time) {\n res.push({\n key: 'effective_expiration_time',\n value: withTTL(moment(time.value).format('DD MMM YYYY HH:mm:ss'), showTTLLabel),\n className,\n });\n res.push({\n key: 'effective_expiration_time_path',\n qa: 'expiration_timeout_path',\n value: <Template.Link url={makeNavigationLink({path: time.path})} text={time.path} />,\n });\n }\n if (expiration_time) {\n res.push({\n key: 'expiration_time',\n value: withTTL(moment(expiration_time).format('DD MMM YYYY HH:mm:ss'), showTTLLabel),\n className,\n });\n }\n\n if (timeout && timeout.value !== expiration_timeout) {\n res.push({\n key: 'effective_expiration_timeout',\n value: withTTL(formatTimeDuration(timeout.value), showTTLLabel),\n className,\n });\n res.push({\n key: 'effective_expiration_timeout_path',\n qa: 'expiration_timeout_path',\n value: (\n <Template.Link url={makeNavigationLink({path: timeout.path})} text={timeout.path} />\n ),\n });\n }\n if (expiration_timeout) {\n res.push({\n key: 'expiration_timeout',\n value: withTTL(formatTimeDuration(expiration_timeout), showTTLLabel),\n className,\n });\n }\n\n return res;\n}\n\nfunction withTTL(children: React.ReactNode, showTTLLabel = false) {\n return (\n <React.Fragment>\n {children}{' '}\n <Link\n className={block('ttl-info')}\n url={UIFactory.docsUrls['cypress:ttl']}\n theme=\"secondary\"\n >\n <Icon awesome={'question-circle'} />\n </Link>{' '}\n {showTTLLabel && <TTLLabel />}\n </React.Fragment>\n );\n}\n\nexport function TTLLabel({size}: {size?: LabelProps['size']}) {\n return (\n <Label theme={'warning'} size={size}>\n TTL\n </Label>\n );\n}\n","import React from 'react';\n\nimport {getPrimitiveTypesMap} from '../../store/selectors/global/supported-features';\nimport {useSelector} from 'react-redux';\nimport {getType} from './dataTypes';\nimport DataType from './DataType/DataType';\nimport {parseV3Type} from './dateTypesV3';\n\ninterface Props {\n type_v3: any;\n}\n\nfunction SchemaDataType({type_v3}: Props) {\n const primitiveTypes = useSelector(getPrimitiveTypesMap);\n\n const dataTypeProps = React.useMemo(() => {\n try {\n return getType(parseV3Type(type_v3, primitiveTypes));\n } catch {\n return undefined;\n }\n }, [type_v3, primitiveTypes]);\n\n return dataTypeProps ? (\n <DataType {...dataTypeProps} />\n ) : (\n <>There is no type description in the schema</>\n );\n}\n\nexport default React.memo(SchemaDataType);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './Text.scss';\nimport unipika from '../../common/thor/unipika';\nimport {UNIPIKA_ESCAPED_SETTINGS} from '../../utils';\n\nconst block = cn('yt-text');\n\ninterface Props {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function Secondary({children, disabled}: Props & {disabled?: boolean}) {\n return <span className={block('secondary', {disabled})}>{children}</span>;\n}\n\nexport function Bold({children}: Props) {\n return <span className={block('bold')}>{children}</span>;\n}\n\nexport function SecondaryBold({children}: Props) {\n return (\n <Secondary>\n <Bold>{children}</Bold>\n </Secondary>\n );\n}\n\nexport function Warning({children, className}: Props) {\n return <span className={block('warning', className)}>{children}</span>;\n}\n\nexport function WarningLight({children, className}: Props) {\n return <span className={block('warning-light', className)}>{children}</span>;\n}\n\nexport function NoWrap({children}: Props) {\n return <span className={block('no-wrap')}>{children}</span>;\n}\n\nexport function Escaped({text, onClick}: {text: string; onClick?: (e: React.MouseEvent) => void}) {\n const textNode = unipika.prettyprint(text, {\n ...UNIPIKA_ESCAPED_SETTINGS,\n asHTML: true,\n });\n return (\n <span\n onClick={onClick}\n className={block('escaped')}\n dangerouslySetInnerHTML={{__html: textNode}}\n />\n );\n}\n","import React from 'react';\nimport throttle_ from 'lodash/throttle';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nexport interface TextInputWithDebounceProps extends TextInputProps {\n debounce?: number;\n onBlur?: (e: React.FocusEvent) => void;\n onEnterKeyDown?: (e: React.KeyboardEvent) => void;\n}\n\nfunction TextInputWithDebounce(props: TextInputWithDebounceProps) {\n const {\n debounce = 400,\n onUpdate = () => {},\n onBlur,\n value,\n onEnterKeyDown,\n onKeyDown,\n ...rest\n } = props;\n\n const [input, setInput] = React.useState<string | undefined>();\n\n const handleChangeExt = React.useMemo(() => {\n return throttle_(onUpdate as any, debounce);\n }, [debounce, onUpdate]);\n\n const handleChange = React.useCallback(\n (text: string) => {\n setInput(text);\n handleChangeExt.cancel();\n handleChangeExt(text);\n },\n [handleChangeExt, setInput],\n );\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onKeyDown) {\n onKeyDown(e);\n }\n if (e.key === 'Enter' && onEnterKeyDown) {\n onEnterKeyDown(e);\n }\n },\n [onEnterKeyDown, onKeyDown],\n );\n\n const handleBlur = React.useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n setInput(undefined);\n\n if (onBlur) {\n onBlur(e);\n }\n },\n [setInput, onBlur],\n );\n\n return (\n <TextInput\n onUpdate={handleChange}\n {...rest}\n value={input === undefined ? value : input}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n}\n\nexport default React.memo(TextInputWithDebounce);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Text} from '@gravity-ui/uikit';\n\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../Tooltip/Tooltip';\n\nimport './WarningIcon.scss';\n\nconst b = cn('yt-warning-icon');\n\ninterface Props {\n className?: string;\n hoverContent?: React.ReactNode;\n color?: 'warning' | 'danger';\n children?: React.ReactNode;\n}\n\nexport default function WarningIcon(props: Props) {\n const {className, hoverContent, children, color} = props;\n return (\n <span className={b(null, className)}>\n <Tooltip className={b('tooltip')} content={hoverContent}>\n <Icon className={b('icon', {color})} awesome=\"exclamation-triangle\" />\n {children && (\n <Text variant=\"inherit\" color={color}>\n {children}\n </Text>\n )}\n </Tooltip>\n </span>\n );\n}\n","import React from 'react';\n// For some reason React.memo drops the generic prop type and creates a regular union type\n// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087#issuecomment-542793243\nexport const typedMemo = React.memo;\n","import React from 'react';\nimport { CHARTKIT_ERROR_CODE } from '../../libs';\nimport { getErrorMessage } from '../../utils/getErrorMessage';\nexport class ErrorBoundary extends React.Component {\n constructor() {\n super(...arguments);\n this.state = {\n error: undefined,\n };\n this.resetError = () => {\n if (this.state.error) {\n this.setState({ error: undefined });\n }\n };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n componentDidCatch() {\n var _a, _b;\n const { error } = this.state;\n if (error) {\n (_b = (_a = this.props).onError) === null || _b === void 0 ? void 0 : _b.call(_a, { error });\n }\n }\n componentDidUpdate(prevProps) {\n if (prevProps.data !== this.props.data) {\n const { error } = this.state;\n if (error && 'code' in error && error.code === CHARTKIT_ERROR_CODE.NO_DATA) {\n this.resetError();\n }\n }\n }\n render() {\n const { error } = this.state;\n if (error) {\n const message = getErrorMessage(error);\n if (this.props.renderError) {\n return this.props.renderError({\n error,\n message,\n resetError: this.resetError,\n });\n }\n return React.createElement(\"div\", null, message);\n }\n return this.props.children;\n }\n}\n","import { i18n } from '../i18n';\nexport function getErrorMessage(error) {\n const code = 'code' in error && error.code;\n return (error.message || code || i18n('error', 'label_unknown-error')).toString();\n}\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { Loader as BaseLoader } from '@gravity-ui/uikit';\nimport { block } from '../../utils/cn';\nimport './Loader.css';\nconst b = block('loader');\nexport const Loader = (_a) => {\n var { renderPluginLoader } = _a, props = __rest(_a, [\"renderPluginLoader\"]);\n const pluginLoader = renderPluginLoader === null || renderPluginLoader === void 0 ? void 0 : renderPluginLoader();\n // React.Suspense complains about possible undefined in \"fallback\" property\n if (typeof pluginLoader !== 'undefined') {\n return pluginLoader;\n }\n return (React.createElement(\"div\", { className: b() },\n React.createElement(BaseLoader, Object.assign({}, props))));\n};\n","import { __rest } from \"tslib\";\nimport React from 'react';\nimport { i18n } from '../i18n';\nimport { CHARTKIT_ERROR_CODE, ChartKitError, settings } from '../libs';\nimport { getRandomCKId, typedMemo } from '../utils';\nimport { cn } from '../utils/cn';\nimport { ErrorBoundary } from './ErrorBoundary/ErrorBoundary';\nimport { Loader } from './Loader/Loader';\nimport './ChartKit.css';\nconst b = cn('chartkit');\nconst ChartKitComponent = (props) => {\n const widgetRef = React.useRef();\n const { instanceRef, id: propsId, type, isMobile, renderPluginLoader } = props, restProps = __rest(props, [\"instanceRef\", \"id\", \"type\", \"isMobile\", \"renderPluginLoader\"]);\n const ckId = React.useMemo(() => getRandomCKId(), []);\n const id = propsId || ckId;\n const lang = settings.get('lang');\n const plugins = settings.get('plugins');\n const plugin = plugins.find((iteratedPlugin) => iteratedPlugin.type === type);\n if (!plugin) {\n throw new ChartKitError({\n code: CHARTKIT_ERROR_CODE.UNKNOWN_PLUGIN,\n message: i18n('error', 'label_unknown-plugin', { type }),\n });\n }\n const ChartComponent = plugin.renderer;\n React.useImperativeHandle(instanceRef, () => ({\n reflow(details) {\n var _a;\n if ((_a = widgetRef.current) === null || _a === void 0 ? void 0 : _a.reflow) {\n widgetRef.current.reflow(details);\n }\n },\n }), []);\n return (React.createElement(React.Suspense, { fallback: React.createElement(Loader, { renderPluginLoader: renderPluginLoader }) },\n React.createElement(\"div\", { className: b({ mobile: isMobile }, 'chartkit-theme_common') },\n React.createElement(ChartComponent, Object.assign({ ref: widgetRef, id: id, lang: lang }, restProps)))));\n};\nconst ChartKitComponentWithErrorBoundary = React.forwardRef(function ChartKitComponentWithErrorBoundary(props, ref) {\n return (React.createElement(ErrorBoundary, { onError: props.onError, data: props.data, renderError: props.renderError },\n React.createElement(ChartKitComponent, Object.assign({ instanceRef: ref }, props))));\n}) /* https://stackoverflow.com/a/58473012 */;\nexport const ChartKit = typedMemo(ChartKitComponentWithErrorBoundary);\n","import { ChartKit } from './components/ChartKit';\nimport { settings } from './libs';\nexport * from './types/widget-data';\nexport * from './libs/chartkit-error/chartkit-error';\nexport { settings };\nexport default ChartKit;\n","import React from 'react';\nexport * from './types';\nexport const YagrPlugin = {\n type: 'yagr',\n renderer: React.lazy(() => import('./renderer/YagrWidget')),\n};\n","import ChartKit, {settings} from '@gravity-ui/chartkit';\nimport {YagrPlugin} from '@gravity-ui/chartkit/yagr';\nexport type {RawSerieData, YagrWidgetData} from '@gravity-ui/chartkit/yagr';\n\nimport '@gravity-ui/yagr/dist/index.css';\n\nsettings.set({plugins: [YagrPlugin]});\n\nconst COLORS = ['rgb(77, 162, 241)', 'rgb(255, 61, 100)'];\n\nexport function getSerieColor(serieIndex: number) {\n return COLORS[serieIndex % COLORS.length];\n}\n\nexport default ChartKit;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport useResizeObserver from '../../hooks/useResizeObserver';\n\nimport {Timeline, TimelineProps} from './Timeline/Timeline';\nimport {calculateShortcutTime} from './Timeline/util';\n\nimport './YTTimeline.scss';\n\nconst block = cn('yt-timeline');\n\ninterface Props extends Omit<TimelineProps, 'padding' | 'hasPicker' | 'wrapper'> {\n className?: string;\n}\n\nconst DEFAULT_SHORTCUTS = [\n {\n title: '30m',\n time: '30m',\n },\n {\n title: '2h',\n time: '2h',\n },\n {\n title: '1d',\n time: '1d',\n },\n {\n title: '1w',\n time: '1w',\n },\n {\n title: '1mo',\n time: '1mo',\n },\n {\n time: 'custom',\n },\n];\n\nfunction YTTimelineImpl({className, topShortcuts, ...rest}: Props) {\n const [width, setWidth] = React.useState<number | undefined>();\n const [ref, setRef] = React.useState<HTMLDivElement | null>(null);\n\n const onResize = React.useCallback(\n ([item]: Array<ResizeObserverEntry>) => {\n const {width: w} = item?.contentRect || {};\n if (w !== width) {\n setWidth(w);\n }\n },\n [width, setWidth],\n );\n\n useResizeObserver({\n element: ref || undefined,\n onResize,\n });\n\n return (\n <Timeline\n {...rest}\n padding={0.05}\n hasPicker={true}\n topShortcuts={topShortcuts || DEFAULT_SHORTCUTS}\n wrapper={({ruler, picker}) => {\n return (\n <div className={block(null, className)} ref={setRef}>\n {picker}\n <div className={block('ruler')}>{ruler}</div>\n </div>\n );\n }}\n />\n );\n}\n\nexport type TimelineUpdateValue = Parameters<Required<TimelineProps>['onUpdate']>[0];\n\nexport const YTTimeline = React.memo(YTTimelineImpl);\n\nconst ONE_DAY_MS = 24 * 3600 * 1000;\n\nexport function calcFromTo(timeRange: {from?: number; to?: number; shortcutValue?: string}) {\n const {from = Math.floor(Date.now() - ONE_DAY_MS), to = Math.ceil(Date.now())} =\n timeRange.shortcutValue !== undefined\n ? calculateShortcutTime(timeRange.shortcutValue)\n : timeRange;\n\n return {...timeRange, from, to};\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {withRouter} from 'react-router';\n\nimport {computeStateQuery} from '../../utils/index';\nimport Link from '../../components/Link/Link';\nimport FormattedText from './FormattedText';\n\nfunction FormattedLink(props) {\n const {state, theme = 'ghost', className, text, match, onClick, ...rest} = props;\n const url = computeStateQuery({cluster: match.params.cluster, ...state});\n return (\n <Link routed url={url} theme={theme} onClick={onClick} className={className}>\n {React.isValidElement(text) ? text : <FormattedText text={text} {...rest} />}\n </Link>\n );\n}\nFormattedLink.propTypes = {\n state: PropTypes.shape({\n page: PropTypes.string.isRequired,\n cluster: PropTypes.string,\n tab: PropTypes.string,\n }).isRequired,\n text: PropTypes.oneOfType([PropTypes.node, PropTypes.string]).isRequired,\n className: PropTypes.string,\n theme: PropTypes.string,\n onClick: PropTypes.func,\n // from react-router\n match: PropTypes.shape({\n params: PropTypes.shape({\n cluster: PropTypes.string,\n }),\n }),\n};\nexport default withRouter(FormattedLink);\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport FormattedText from './FormattedText';\nimport FormattedLink from './FormattedLink';\n\nexport default function FormattedTextOrLink({asLink = false, ...props}) {\n return asLink ? <FormattedLink {...props} /> : <FormattedText {...props} />;\n}\nFormattedTextOrLink.propTypes = {\n asLink: PropTypes.bool,\n};\n","import React, {useState} from 'react';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n\nimport './FormattedId.scss';\n\nconst block = cn('table-formatters-id');\n\nFormattedId.propTypes = {\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n};\n\nexport default function FormattedId({id}) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n return (\n <div\n className={block({hovered: hovered ? 'yes' : 'no'})}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n <span className=\"elements-ellipsis\">{id}</span>\n {hovered && (\n <div className={block('clipboard-button-wrapper')}>\n <ClipboardButton view=\"flat-secondary\" size=\"m\" text={id} />\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../common/hammer';\n\n// TODO: here are defiend reworked components from /templates/utils, drop original functions once we switch to\n// new components everywhere\nexport {default as FormattedText} from './FormattedText';\nexport {default as FormattedLink} from './FormattedLink';\nexport {default as FormattedTextOrLink} from './FormattedTextOrLink';\nexport {default as FormattedId} from './FormattedId/FormattedId';\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsFloatNumber(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['Number'](column.get(item), {\n digits: 2,\n digitsOnlyForFloat: true,\n });\n}\n\nexport function printColumnAsProgress(item, columnName) {\n const column = this.props.columns[columnName];\n return <Progress {...column.get(item)} />;\n}\n\nexport function printColumnAsTimeDuration(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.props.columns[columnName];\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.props.columns[columnName];\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","export const ROWS_PER_PAGE = 100;\n","import {compose} from 'redux';\nimport cn from 'bem-cn-lite';\nimport React, {useCallback, useMemo} from 'react';\nimport {DialogField, FormApi, YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport {Button, ButtonProps} from '@gravity-ui/uikit';\nimport PermissionsControl from '../RequestPermissions/PermissionsControl/PermissionsControl';\n\nimport withVisible, {WithVisibleProps} from '../../../hocs/withVisible';\n\nimport './RequestPermissions.scss';\nimport {YTError} from '../../../types';\nimport {AclMode, INHERITANCE_MODE_TYPES, IdmObjectType} from '../../../constants/acl';\n\nimport UIFactory from '../../../UIFactory';\nimport hammer from '../../../common/hammer';\nimport map_ from 'lodash/map';\n\nimport {docsUrl} from '../../../config';\nimport {makeLink} from '../../../utils/utils';\nimport {AclColumnGroup, IdmKindType} from '../../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../../utils/acl/acl-api';\nimport {PermissionToRequest} from '../../../store/actions/acl';\n\nconst block = cn('acl-request-permissions');\n\nconst FLAG_NAME_PREFIX = '##_flag_';\n\nexport type RequestPermissionsFieldsNames =\n | 'cluster'\n | 'path'\n | 'permissions'\n | 'subjects'\n | 'duration'\n | 'commentHeader'\n | 'comment'\n | 'inheritance_mode'\n | 'permissionFlags'\n | 'readColumns'\n | 'readColumnGroup';\n\nexport interface Props extends WithVisibleProps {\n className?: string;\n buttonClassName?: string;\n buttonProps?: ButtonProps;\n cluster?: string;\n normalizedPoolTree?: string;\n path: string;\n idmKind: IdmKindType;\n requestPermissions: (params: {\n values: PermissionToRequest;\n idmKind: IdmKindType;\n }) => Promise<void>;\n cancelRequestPermissions: (params: {idmKind: IdmKindType}) => unknown;\n error?: YTError;\n onSuccess?: () => void;\n columnGroups?: Array<AclColumnGroup>;\n aclMode?: AclMode;\n}\n\ntype FormValues = {\n path: string;\n cluster: string;\n permissions: {[x: string]: Array<YTPermissionTypeUI>} | null;\n subjects: Array<{\n value: string;\n type: 'users' | 'groups' | 'app';\n text?: string;\n }>;\n inheritance_mode?: string;\n duration?: Date;\n comment?: string;\n readColumnGroup?: string;\n} & Record<`${typeof FLAG_NAME_PREFIX}${string}`, boolean>;\n\nconst SHORT_TITLE: Partial<Record<IdmKindType, string>> = {\n access_control_object: 'ACO',\n};\n\nconst COLUMNS_FELDS = new Set<RequestPermissionsFieldsNames>(['readColumns', 'readColumnGroup']);\n\nfunction RequestPermissions(props: Props) {\n const {\n aclMode,\n visible,\n handleShow,\n handleClose,\n className,\n buttonClassName,\n path,\n idmKind,\n requestPermissions,\n cancelRequestPermissions,\n error,\n cluster,\n columnGroups,\n buttonProps,\n /*denyColumns,*/\n } = props;\n\n const onClose = useCallback(() => {\n handleClose();\n cancelRequestPermissions({idmKind});\n }, [handleClose, cancelRequestPermissions, idmKind]);\n\n const {\n requestPermissionsFields,\n requestPermissionsFlags = {},\n buttonsTitle,\n } = UIFactory.getAclApi();\n\n const onAdd = useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n const values = {...form.getState().values};\n const permissionFlags: Record<string, boolean> = {};\n Object.keys(requestPermissionsFlags).forEach((k) => {\n const key = `${FLAG_NAME_PREFIX}${k}` as keyof typeof values;\n permissionFlags[k] = Boolean(values[key]);\n\n delete values[key];\n });\n return requestPermissions({\n values: {...values, permissionFlags},\n idmKind,\n });\n },\n [requestPermissions, idmKind],\n );\n\n const currentCaption = `Current ${SHORT_TITLE[idmKind] ?? idmKind}`;\n const {permissionsToRequest, getAvailablePermissions} =\n UIFactory.getAclPermissionsSettings()[idmKind];\n\n const [availablePermissions, setAvailablePermissions] = React.useState<\n typeof permissionsToRequest | undefined\n >(undefined);\n\n const onShow = useCallback(async () => {\n try {\n const value = await getAvailablePermissions?.({path});\n setAvailablePermissions(value);\n } catch {\n setAvailablePermissions(undefined);\n } finally {\n handleShow();\n }\n }, [path, handleShow, getAvailablePermissions]);\n\n const firstItemDisabled = idmKind === IdmObjectType.ACCOUNT;\n\n const choices = availablePermissions ?? permissionsToRequest;\n const permissions = firstItemDisabled ? valueWithCheckedFirstChoice(choices) : null;\n\n const availableFields: Record<\n RequestPermissionsFieldsNames,\n Omit<DialogField, 'name'>\n > = useMemo(() => {\n const disabledChoices = idmKind === IdmObjectType.ACCOUNT ? [0] : undefined;\n return {\n cluster: {\n type: 'plain',\n caption: 'Cluster',\n extras: {\n className: block('cluster'),\n },\n },\n path: {\n type: 'text',\n caption: currentCaption,\n extras: {\n disabled: !error,\n },\n },\n permissions: {\n type: 'permissions',\n caption: 'Permissions',\n required: true,\n tooltip: (\n <>\n {docsUrl(\n makeLink(UIFactory.docsUrls['acl:permissions'], 'Permissions types'),\n 'Permissions types',\n )}\n </>\n ),\n extras: {\n choices: choices,\n disabledChoices,\n },\n },\n readColumns: {\n type: 'acl-columns',\n caption: 'Read columns',\n required: true,\n },\n readColumnGroup: {\n type: 'acl-column-group',\n caption: 'Read column group',\n required: true,\n extras: {\n columnGroups,\n },\n },\n subjects: {\n type: 'acl-subjects',\n caption: 'Subjects',\n required: false,\n extras: {\n placeholder: 'Enter group name, user name or login...',\n allowedTypes: ['users', 'groups', 'app'],\n },\n },\n duration: {\n type: 'before-date',\n caption: 'Duration',\n },\n commentHeader: {\n type: 'block',\n className: block('modal-comments-header'),\n extras: {\n children: (\n <React.Fragment>\n <div className={'is-dialog__label'}>Comment</div>\n <div className={block('comment-notice')}>\n Teams and people can be requested through the IDM after the access\n group is created. If you have a more complex case please describe it\n in the comments.\n </div>\n </React.Fragment>\n ),\n },\n },\n comment: {\n type: 'textarea',\n className: block('modal-comments'),\n },\n inheritance_mode: {\n type: 'yt-select-single',\n caption: 'Inheritance mode',\n extras: {\n items: map_(INHERITANCE_MODE_TYPES, (value) => ({\n value: value,\n text: hammer.format['ReadableField'](value),\n })),\n hideClear: true,\n hideFilter: true,\n with: 'max',\n },\n },\n permissionFlags: {\n type: 'block',\n caption: 'Permission flags',\n extras: {children: 'Not implemented'},\n },\n };\n }, [choices, currentCaption, error, idmKind]);\n\n const useColumns = aclMode === AclMode.COLUMN_GROUPS_PERMISSISONS;\n\n const dialogFields = useMemo(() => {\n let flagsIndex = -1;\n const res = requestPermissionsFields.reduce(\n (acc, field) => {\n const allowField = useColumns ? field !== 'permissions' : !COLUMNS_FELDS.has(field);\n if (!allowField) {\n return acc;\n }\n\n if (field === 'permissionFlags') {\n flagsIndex = acc.length;\n }\n\n acc.push({\n ...availableFields[field],\n name: field,\n } as DialogField<FormValues>);\n\n return acc;\n },\n [] as Array<DialogField<FormValues>>,\n );\n\n if (flagsIndex !== -1) {\n const flags: typeof res = Object.keys(requestPermissionsFlags ?? []).map((key) => {\n const flagInfo = requestPermissionsFlags[key];\n return {\n type: 'tumbler',\n caption: hammer.format.ReadableField(flagInfo?.title),\n name: `${FLAG_NAME_PREFIX}${key}`,\n tooltip: flagInfo.help,\n initialValue: flagInfo.initialValue,\n };\n });\n res.splice(flagsIndex, 1, ...flags);\n }\n return res;\n }, [availableFields, requestPermissionsFields, useColumns]);\n\n const {editAcl = 'Edit ACL', editColumnsAcl = 'Edit columns ACL'} = buttonsTitle ?? {};\n const title = useColumns ? editColumnsAcl : editAcl;\n\n return !choices?.length ? null : (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <Button className={buttonClassName} view=\"action\" {...buttonProps} onClick={onShow}>\n {title}\n </Button>\n\n <YTDFDialog<FormValues>\n pristineSubmittable\n onClose={onClose}\n className={block('modal')}\n visible={Boolean(visible)}\n onAdd={onAdd}\n headerProps={{\n title,\n }}\n initialValues={{\n path,\n permissions,\n cluster,\n inheritance_mode: INHERITANCE_MODE_TYPES.OBJECT_AND_DESCENDANTS,\n }}\n validate={(values) => {\n const subjects = values.subjects;\n const validationError: Record<\n keyof Pick<FormValues, 'subjects'>,\n string | undefined\n > = {\n subjects: undefined,\n };\n\n if (!subjects.length) {\n const errorMessage = 'At least one subject should be selected.';\n validationError.subjects = errorMessage;\n }\n\n return validationError;\n }}\n fields={[...dialogFields, ...makeErrorFields([error])]}\n />\n </div>\n </ErrorBoundary>\n );\n}\n\nexport default compose(withVisible)(RequestPermissions) as unknown as React.ComponentType<\n Omit<Props, keyof WithVisibleProps>\n>;\n\nfunction valueWithCheckedFirstChoice(choices: string | any[]) {\n if (!choices || choices.length < 1) {\n return {};\n }\n\n return {\n [PermissionsControl.getChoiceName(choices[0])]: choices[0],\n };\n}\n","import type {RootState} from '../../reducers';\n\nexport const selectCellPreviewVisible = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.visible;\nexport const selectCellPreviewLoading = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.loading;\nexport const selectCellPreviewData = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.data;\nexport const selectCellPreviewYtCliDownloadCommand = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.ytCliDownloadCommand;\nexport const selectCellPreviewNoticeText = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.noticeText;\nexport const selectErrorPreviewCellPath = (state: RootState) =>\n state.navigation.modals.cellPreviewModal.error;\n","import React from 'react';\n\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Flex, Text} from '@gravity-ui/uikit';\n\nimport SimpleModal from '../../components/Modal/SimpleModal';\nimport {\n selectCellPreviewData,\n selectCellPreviewLoading,\n selectCellPreviewNoticeText,\n selectCellPreviewVisible,\n selectCellPreviewYtCliDownloadCommand,\n selectErrorPreviewCellPath,\n} from '../../store/selectors/modals/cell-preview';\n\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport block from 'bem-cn-lite';\n\nimport Yson from '../../components/Yson/Yson';\nimport Error from '../../components/Error/Error';\nimport {type YsonSettings, getPreviewCellYsonSettings} from '../../store/selectors/thor/unipika';\nimport {closeCellPreviewAndCancelRequest} from '../../store/actions/modals/cell-preview';\nimport {isMediaTag} from '../../utils/yql-types';\n\nimport './CellPreviewModal.scss';\n\nconst b = block('cell-preview-modal');\n\nexport const CellPreviewModal: React.FC = () => {\n const dispatch = useDispatch();\n\n const loading = useSelector(selectCellPreviewLoading);\n const data = useSelector(selectCellPreviewData);\n const visible = useSelector(selectCellPreviewVisible);\n const ytCliDownloadCommand = useSelector(selectCellPreviewYtCliDownloadCommand);\n const noticeText = useSelector(selectCellPreviewNoticeText);\n const error = useSelector(selectErrorPreviewCellPath);\n\n const unipikaSettings = useSelector(getPreviewCellYsonSettings);\n\n return (\n <SimpleModal\n title=\"Preview\"\n visible={visible}\n loading={loading}\n onCancel={() => dispatch(closeCellPreviewAndCancelRequest())}\n wrapperClassName={b('wrapper')}\n >\n <Flex\n qa=\"cell-preview-modal-content\"\n className={b('content')}\n gap={2}\n direction=\"column\"\n >\n <Flex gap={2} direction=\"column\">\n <Text variant=\"subheader-3\" color=\"secondary\">\n {noticeText}\n </Text>\n {ytCliDownloadCommand ? (\n <code className={b('command-wrapper')}>\n <div className={b('command')}>\n <div\n data-qa=\"cell-preview-command\"\n className={b('command-content')}\n title={ytCliDownloadCommand}\n >\n {ytCliDownloadCommand}\n </div>\n <ClipboardButton\n view={'flat-secondary'}\n text={ytCliDownloadCommand}\n size={'s'}\n />\n </div>\n </code>\n ) : null}\n </Flex>\n {error ? (\n <Error error={error} />\n ) : (\n <PreviewContent data={data} unipikaSettings={unipikaSettings} />\n )}\n </Flex>\n </SimpleModal>\n );\n};\n\ntype PreviewContentProps = {\n data: {$type?: string; $value?: any; $tag?: string} | undefined;\n unipikaSettings: YsonSettings;\n};\n\nfunction PreviewContent(props: PreviewContentProps) {\n const {data, unipikaSettings} = props;\n\n if (data?.$type === 'yql.string' || data?.$type === 'yql.json') {\n return <pre className=\"elements-code\">{data?.$value}</pre>;\n }\n\n if (data?.$type === 'yql.tagged' && data.$tag && isMediaTag(data.$tag)) {\n return <img src={`data:${data.$tag};base64,${data?.$value}`} alt=\"image-preview\" />;\n }\n\n return (\n <Yson\n className={b('yson-container')}\n folding={true}\n value={data?.$value}\n tableSettings={{dynamicRenderScrollParentGetter: undefined}}\n settings={unipikaSettings}\n customLayout={({toolbar, content}) => {\n return (\n <>\n <div className={b('toolbar')}>{toolbar}</div>\n {content}\n </>\n );\n }}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {getCluster} from '../../store/selectors/global';\nimport Link from '../../components/Link/Link';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {uiSettings} from '../../config/ui-settings';\nimport {makeRegexpFromSettings} from '../../../shared/utils';\n\nimport './Host.scss';\n\nconst reShortName = makeRegexpFromSettings(uiSettings.reShortNameFromAddress);\nconst reTabletNodeShortName = makeRegexpFromSettings(uiSettings.reShortNameFromTabletNodeAddress);\n\nexport function calcShortNameByRegExp(address: string, asTabletNode?: boolean) {\n const re = asTabletNode ? reTabletNodeShortName : reShortName;\n if (re) {\n const res = re?.exec(address);\n if (res?.groups?.shortname) {\n return [res.groups.shortname, res.groups.suffix].filter(Boolean).join('');\n }\n }\n return undefined;\n}\n\nconst block = cn('yt-host');\n\ninterface Props {\n address: string;\n className?: string;\n copyBtnClassName?: string;\n onClick?: () => void;\n useText?: boolean;\n prefix?: React.ReactNode;\n asTabletNode?: boolean;\n inlineMargins?: boolean;\n}\n\nexport function Host({\n address = '',\n prefix,\n className,\n copyBtnClassName,\n onClick,\n useText,\n asTabletNode,\n inlineMargins,\n}: Props) {\n const host = React.useMemo(() => {\n return calcShortNameByRegExp(address, asTabletNode) || address;\n }, [address, asTabletNode]);\n\n const cluster = useSelector(getCluster);\n\n return (\n <span\n className={block(\n {hidden: !host, 'inline-margins': inlineMargins},\n ['elements-monospace', className].filter(Boolean).join(' '),\n )}\n onClick={onClick}\n >\n {prefix}\n <Tooltip className={block('tooltip')} content={address}>\n {useText ? (\n host\n ) : (\n <Link url={`/${cluster}/components/nodes/${address}`} routed>\n {host}\n </Link>\n )}\n </Tooltip>\n <span className={block('copy-btn', copyBtnClassName)}>\n <ClipboardButton view={'flat-secondary'} text={address} />\n </span>\n </span>\n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport {getDisplayName} from '../utils';\nimport {SPLIT_PANE_ID} from '../constants/index';\n\nexport default function withSplit<P>(Component: React.ComponentType<P>): React.ComponentType<P> {\n return class WithSplit extends React.Component<P> {\n static displayName = `WithSplit(${getDisplayName(Component)})`;\n\n render() {\n return ReactDOM.createPortal(\n <Component {...this.props} />,\n document.getElementById(SPLIT_PANE_ID)!,\n );\n }\n };\n}\n","import React from 'react';\nimport {useDispatch} from 'react-redux';\n\nimport withSplit from '../hocs/withSplit';\nimport {mergeScreen, splitScreen} from '../store/actions/global';\n\ntype SidePanelContentProps = {\n onClose: () => void;\n renderContent(props: {visible: boolean; onClose: () => void}): React.ReactNode;\n};\n\nexport const SidePanelPortal = withSplit(SideContent);\n\nexport function useSidePanel(\n name: string,\n {renderContent}: Pick<SidePanelContentProps, 'renderContent'>,\n) {\n const [widgetOpened, setWidgetOpened] = React.useState(false);\n const dispatch = useDispatch();\n\n const openWidget = React.useCallback(() => {\n dispatch(splitScreen(name));\n setWidgetOpened(true);\n }, [setWidgetOpened, dispatch]);\n\n const onClose = React.useCallback(() => {\n setWidgetOpened(false);\n dispatch(mergeScreen());\n }, [setWidgetOpened, dispatch]);\n\n return {\n closeWidget: onClose,\n openWidget,\n widgetOpened,\n widgetContent: widgetOpened ? (\n <SidePanelPortal>{renderContent({onClose, visible: widgetOpened})}</SidePanelPortal>\n ) : null,\n };\n}\n\nfunction SideContent({children}: {children: React.ReactNode}) {\n return children;\n}\n","import React from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\n\ninterface Props {\n element?: Element;\n onResize: ResizeObserverCallback;\n}\n\nexport default function useResizeObserver({element, onResize}: Props) {\n React.useEffect(() => {\n if (element) {\n const observer = new ResizeObserver(onResize);\n observer.observe(element);\n return () => {\n if (element) {\n observer.unobserve(element);\n }\n };\n } else {\n return undefined;\n }\n }, [element, onResize]);\n}\n","import React from 'react';\nimport Link from '../../components/Link/Link';\nimport {AccountsTab} from '../../constants/accounts/accounts';\nimport {Page} from '../../constants';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../../store/selectors/global';\nimport hammer from '../../common/hammer';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\ninterface Props {\n className?: string;\n account?: string;\n cluster?: string;\n\n inline?: boolean;\n}\n\nexport function genAccountsUrl(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}?account=${account}`;\n}\n\nexport default function AccountLink(props: Props) {\n const {cluster: propsCluster, account, className, inline} = props;\n const currentCluster = useSelector(getCluster);\n const cluster = propsCluster || currentCluster;\n\n return (\n <Tooltip\n ellipsis={inline}\n className={className}\n content={\n !account ? null : (\n <>\n <ClipboardButton text={account} view=\"flat-secondary\" /> {account}\n </>\n )\n }\n >\n {account ? (\n <Link theme={'primary'} routed url={genAccountsUrl(cluster, account)}>\n {account}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n )}\n </Tooltip>\n );\n}\n","export const pathToFileName = (path: string) => {\n return path.replace(/\\/+/g, '_');\n};\n","import {ErrorMessage, NetworkCode} from '../../constants/navigation/modals/path-editing-popup';\n\nimport filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport some_ from 'lodash/some';\nimport values_ from 'lodash/values';\n\nexport function getOnlyFolders(suggestions) {\n return filter_(suggestions, (child) => child.type === 'map_node');\n}\n\nfunction getCorrectInnerError(innerErrors = []) {\n const correctErrorCodes = values_(NetworkCode);\n\n return find_(innerErrors, (error) => {\n return some_(correctErrorCodes, (code) => code === error.code);\n });\n}\n\nexport function prepareErrorMessage(error) {\n return (\n ErrorMessage[error.code] ||\n ErrorMessage[getCorrectInnerError(error.inner_errors)?.code] ||\n ErrorMessage['DEFAULT']\n );\n}\n","import {prepareErrorMessage} from '../../../../utils/navigation/path-editing-popup';\nimport {\n HIDE_ERROR,\n SET_PATH,\n SHOW_ERROR,\n} from '../../../../constants/navigation/modals/path-editing-popup';\n\nexport function showErrorInModal(error) {\n const message = prepareErrorMessage(error);\n\n return {\n type: SHOW_ERROR,\n data: {message, error},\n };\n}\n\nexport function setPath(newPath) {\n return {\n type: SET_PATH,\n data: {newPath},\n };\n}\n\nexport function hideError() {\n return {\n type: HIDE_ERROR,\n };\n}\n\nexport function openEditingPopup(objectPath, path, type, multipleMode = false, items = []) {\n return {\n type,\n data: {path, objectPath, items, multipleMode},\n };\n}\n\nexport function closeEditingPopup(type) {\n return {type};\n}\n","import React from 'react';\n\nimport {getDisplayName} from '../../../utils';\nimport {useHotkeysScope} from '../../../hooks/use-hotkeysjs-scope';\n\nexport default function withScope(scope: string) {\n return function wrap<P>(Component: React.ComponentType<P>) {\n type Props = P & {visible: true};\n const ResComponent: React.FC<Props> = function WithScope(props) {\n useHotkeysScope(scope, props.visible);\n return <Component {...props} />;\n };\n\n ResComponent.displayName = `WithScope(${getDisplayName(Component)})`;\n return ResComponent;\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {compose} from 'redux';\n\nimport ErrorMessage from '../../../../components/ErrorMessage/ErrorMessage';\nimport PathEditor from '../../../../containers/PathEditor/PathEditor';\nimport Modal from '../../../../components/Modal/Modal';\nimport Error from '../../../../components/Error/Error';\n\nimport {hideError, setPath} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {getOnlyFolders} from '../../../../utils/navigation/path-editing-popup';\nimport withScope from '../../../../hocs/components/Modal/withScope';\n\nimport './PathEditorModal.scss';\n\nconst b = block('path-editor-modal');\n\nclass PathEditorModal extends Component {\n static propTypes = {\n // from parent component\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n placeholder: PropTypes.string.isRequired,\n modalTitle: PropTypes.string.isRequired,\n\n visible: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n inProcess: PropTypes.bool.isRequired,\n errorMessage: PropTypes.string.isRequired,\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n editingPath: PropTypes.string.isRequired,\n options: PropTypes.node,\n\n onConfirmButtonClick: PropTypes.func.isRequired,\n onCancelButtonClick: PropTypes.func.isRequired,\n\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onApply: PropTypes.func,\n onFocus: PropTypes.func,\n\n // from connect\n setPath: PropTypes.func.isRequired,\n hideError: PropTypes.func.isRequired,\n };\n\n _handleBlur(newPath) {\n this.props.setPath(newPath);\n }\n _handleFocus(newPath) {\n this.props.setPath(newPath);\n }\n _handleApply(newPath) {\n this.props.setPath(newPath);\n }\n _handleChange(newPath) {\n this.props.setPath(newPath);\n this.props.hideError();\n }\n\n handleBlur = (path) => {\n const {onBlur} = this.props;\n\n if (typeof onBlur === 'function') {\n onBlur(path);\n } else {\n this._handleBlur(path);\n }\n };\n handleFocus = (event, {path}) => {\n const {onFocus} = this.props;\n\n if (typeof onFocus === 'function') {\n onFocus(path);\n } else {\n this._handleFocus(path);\n }\n };\n handleChange = (newPath) => {\n const {onChange} = this.props;\n\n if (typeof onChange === 'function') {\n onChange(newPath);\n } else {\n this._handleChange(newPath);\n }\n };\n handleApply = (newPath) => {\n const {onApply} = this.props;\n\n if (typeof onApply === 'function') {\n onApply(newPath);\n } else {\n this._handleApply(newPath);\n }\n };\n\n renderContent() {\n const {\n editingPath,\n inProcess,\n placeholder,\n title,\n description,\n showError,\n errorMessage,\n error,\n options,\n } = this.props;\n\n return (\n <div className={b()}>\n <strong>{title}</strong>\n <p className={b('text')}>{description}</p>\n\n <PathEditor\n placeholder={placeholder}\n customFilter={getOnlyFolders}\n onChange={this.handleChange}\n onApply={this.handleApply}\n onFocus={this.handleFocus}\n onBlur={this.handleBlur}\n defaultPath={editingPath}\n disabled={inProcess}\n showErrors={false}\n autoFocus\n hasClear\n />\n\n {options}\n\n {showError && (\n <div className={b('error-wrapper')}>\n <ErrorMessage message={errorMessage} />\n <Error error={error} />\n </div>\n )}\n </div>\n );\n }\n\n render() {\n const {visible, inProcess, showError, modalTitle} = this.props;\n\n const content = visible && this.renderContent();\n const isDisabled = () => inProcess || showError;\n\n return (\n <Modal\n onConfirm={this.props.onConfirmButtonClick}\n onCancel={this.props.onCancelButtonClick}\n isConfirmDisabled={isDisabled}\n confirmText=\"Confirm\"\n loading={inProcess}\n title={modalTitle}\n content={content}\n visible={visible}\n />\n );\n }\n}\n\nexport default compose(\n withScope('path-editor-modal'),\n connect(null, {setPath, hideError}),\n)(PathEditorModal);\n","import React from 'react';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {COPY_OBJECT} from '../../../../constants/navigation/modals/copy-object';\nimport {showErrorInModal} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {prepareDestinationPath, preparePath} from '../../../../utils/navigation';\nimport CancelHelper from '../../../../utils/cancel-helper';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {wrapBatchPromise} from '../../../../utils/utils';\nimport {Dispatch} from 'redux';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\ninterface CopyOptions {\n preserve_account?: boolean;\n recursive?: boolean;\n}\n\nfunction copyObjectIntoDirectory(from: string, to: string, options: CopyOptions) {\n const parts = from.split('/');\n const name = parts[parts.length - 1];\n return yt.v3.copy({\n parameters: {\n source_path: preparePath(from),\n destination_path: prepareDestinationPath(to, name),\n ...options,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction copyObjectWithRename(from: string, to: string, options: CopyOptions) {\n return yt.v3.copy({\n parameters: {\n source_path: preparePath(from),\n destination_path: to,\n ...options,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction copySingleObject(from: string, to: string, options: CopyOptions) {\n const lastChar = to.charAt(to.length - 1);\n\n if (lastChar === '/') {\n return copyObjectIntoDirectory(from, to, options);\n }\n\n return yt.v3\n .exists({parameters: {path: `${to}&`}, cancellation: requests.saveCancelToken})\n .then((exist: boolean) => {\n return exist\n ? copyObjectIntoDirectory(from, to, options)\n : copyObjectWithRename(from, to, options);\n });\n}\n\nfunction copyObjects(\n items: Array<{path: string; titleUnquoted: string}>,\n copyingPath: string,\n options: CopyOptions,\n) {\n if (items.length === 1) {\n const [{path}] = items;\n return copySingleObject(path, copyingPath, options);\n }\n\n return yt.v3.startTransaction({timeout: 120000}).then((id: string) => {\n const copyRequests = map_(items, (node) => {\n return {\n command: 'copy' as const,\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: prepareDestinationPath(copyingPath, node.titleUnquoted),\n ...options,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationCopy, copyRequests, {\n errorTitle: 'Failed to copy the object(s)',\n saveCancelSourceCb: requests.saveCancelToken,\n }),\n 'Failed to copy the object(s)',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3.abortTransaction({transaction_id: id}).then(() => Promise.reject(err)),\n );\n });\n}\n\nexport function copyObject(\n objectPath: string,\n copyingPath: string,\n onSuccess: () => void,\n multipleMode: boolean,\n items: Array<{path: string; titleUnquoted: string}>,\n options: CopyOptions,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: COPY_OBJECT.REQUEST});\n\n return Promise.resolve()\n .then(() =>\n multipleMode\n ? copyObjects(items, copyingPath, options)\n : copySingleObject(objectPath, copyingPath, options),\n )\n .then(() => {\n dispatch({type: COPY_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess();\n }\n\n toaster.add({\n name: 'copy',\n autoHiding: 10000,\n theme: 'success',\n title: multipleMode\n ? 'Objects were successfully copied'\n : 'Object was successfully copied',\n content: <Link url={`navigation?path=${copyingPath}`}>{copyingPath}</Link>,\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: COPY_OBJECT.CANCELLED,\n });\n } else {\n dispatch({type: COPY_OBJECT.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React, {Component} from 'react';\nimport {Checkbox, Flex} from '@gravity-ui/uikit';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_COPY_OBJECT_POPUP} from '../../../../../constants/navigation/modals/copy-object';\nimport {\n abortRequests,\n copyObject,\n} from '../../../../../store/actions/navigation/modals/copy-object';\nimport {\n closeEditingPopup,\n hideError,\n} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updateView} from '../../../../../store/actions/navigation';\n\nclass CopyObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n items: PropTypes.array.isRequired,\n errorMessage: PropTypes.string.isRequired,\n copyPath: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n copying: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n multipleMode: PropTypes.bool.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n\n updateView: PropTypes.func.isRequired,\n copyObject: PropTypes.func.isRequired,\n abortRequests: PropTypes.func.isRequired,\n closeEditingPopup: PropTypes.func.isRequired,\n hideError: PropTypes.func.isRequired,\n };\n\n state = {preserve_account: false, recursive: false};\n\n handleConfirmButtonClick = () => {\n const {copyPath} = this.props;\n this.doCopy(copyPath);\n };\n\n handleCancelButtonClick = () => {\n const {closeEditingPopup, abortRequests} = this.props;\n\n this.resetOptions();\n closeEditingPopup(CLOSE_COPY_OBJECT_POPUP);\n abortRequests();\n };\n\n handleApply = (newPath) => {\n const {copying, showError} = this.props;\n const disabled = copying || showError;\n\n if (!disabled) {\n this.doCopy(newPath);\n }\n };\n\n doCopy(toPath) {\n const {copyObject, updateView, objectPath, multipleMode, items} = this.props;\n const {preserve_account, recursive} = this.state;\n\n copyObject(objectPath, toPath, updateView, multipleMode, items, {\n preserve_account,\n recursive,\n }).then(() => this.resetOptions());\n }\n\n render() {\n const {popupVisible, copying, copyPath, showError, errorMessage, error, multipleMode} =\n this.props;\n\n const modalTitle = 'Copy';\n const title = multipleMode\n ? 'Enter a destination path for copied objects.'\n : 'Enter a destination path for the copied object.';\n const description = multipleMode\n ? 'Objects will be copied with the specified path.'\n : 'The object will be copied with the specified path.';\n const placeholder = 'Enter a destination path for the copied object...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n visible={popupVisible}\n inProcess={copying}\n editingPath={copyPath}\n showError={showError}\n error={error}\n options={this.renderOptions()}\n errorMessage={errorMessage}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n\n renderOptions() {\n return (\n <Flex direction=\"column\" gap={2}>\n <Checkbox onUpdate={this.onUpdatePreserveAccount}>Preserve account</Checkbox>\n <Checkbox onUpdate={this.onUpdateRecursiveCopy}>\n Create intermediate directories as required\n </Checkbox>\n </Flex>\n );\n }\n\n resetOptions() {\n this.onUpdatePreserveAccount(false);\n this.onUpdateRecursiveCopy(false);\n }\n\n onUpdateRecursiveCopy = (recursive) => {\n this.props.hideError();\n this.setState((state) => ({...state, recursive}));\n };\n\n onUpdatePreserveAccount = (preserve_account) => {\n this.props.hideError();\n this.setState((state) => ({...state, preserve_account}));\n };\n}\n\nconst mapStateToProps = ({navigation}) => {\n const {\n copyPath,\n objectPath,\n popupVisible,\n showError,\n copying,\n errorMessage,\n error,\n multipleMode,\n items,\n } = navigation.modals.copyObject;\n\n return {\n items,\n multipleMode,\n copyPath,\n copying,\n popupVisible,\n errorMessage,\n error,\n showError,\n objectPath,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n copyObject,\n abortRequests,\n closeEditingPopup,\n hideError,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CopyObjectModal);\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\n// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {Dispatch} from 'redux';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n CREATE_DIRECTORY,\n CREATE_MESSAGE,\n} from '../../../../constants/navigation/modals/create-directory';\nimport {\n hideError,\n showErrorInModal,\n} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {RootState} from '../../../../store/reducers';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\nexport function createDirectory(\n {path, recursive}: {path: string; recursive?: boolean},\n onSuccess: () => void,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: CREATE_DIRECTORY.REQUEST});\n\n return yt.v3\n .create({\n parameters: {\n path: path,\n recursive,\n type: 'map_node',\n },\n cancellation: requests.saveCancelToken,\n })\n .then(() => {\n dispatch({type: CREATE_DIRECTORY.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess();\n }\n\n toaster.add({\n name: CREATE_MESSAGE,\n autoHiding: 10000,\n theme: 'success',\n title: CREATE_MESSAGE,\n content: <Link url={`navigation?path=${path}`}>{path}</Link>,\n });\n })\n .catch((error: any) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: CREATE_DIRECTORY.CANCELLED,\n });\n } else {\n dispatch({type: CREATE_DIRECTORY.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n });\n };\n}\n\nexport function clearCreateDirectoryError(): ThunkAction<void, RootState, unknown, any> {\n return (dispatch: Dispatch) => {\n dispatch(hideError());\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_CREATE_DIRECTORY_POPUP} from '../../../../../constants/navigation/modals/create-directory';\nimport {\n abortRequests,\n clearCreateDirectoryError,\n createDirectory,\n} from '../../../../../store/actions/navigation/modals/create-directory';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport {RootState} from '../../../../../store/reducers';\nimport {Checkbox} from '@gravity-ui/uikit';\n\ntype State = {\n recursive: boolean;\n};\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\nclass CreateDirectoryModal extends React.Component<ReduxProps> {\n state: State = {\n recursive: false,\n };\n\n render() {\n const {popupVisible, creating, creatingPath, showError, errorMessage, error} = this.props;\n\n const modalTitle = 'Create Directory';\n const title = 'Enter a name for the new directory.';\n const description = 'The new object will be created at the specified path.';\n const placeholder = 'Enter a new directory path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n editingPath={creatingPath}\n errorMessage={errorMessage}\n error={error}\n visible={popupVisible}\n showError={showError}\n inProcess={creating}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n options={\n <Checkbox checked={this.state.recursive} onUpdate={this.onRecursiveUpdate}>\n Make parent directories as needed\n </Checkbox>\n }\n />\n );\n }\n\n onRecursiveUpdate = (recursive: boolean) => {\n this.setState({recursive});\n this.props.clearCreateDirectoryError?.();\n };\n\n handleConfirmButtonClick = () => {\n const {creatingPath, createDirectory, updateView} = this.props;\n\n createDirectory({path: creatingPath, recursive: this.state.recursive}, updateView);\n };\n\n handleCancelButtonClick = () => {\n this.props.closeEditingPopup(CLOSE_CREATE_DIRECTORY_POPUP);\n this.props.abortRequests();\n };\n\n handleApply = (newPath: string) => {\n const {creating, showError, createDirectory, updateView} = this.props;\n const disabled = creating || showError;\n\n if (!disabled) {\n createDirectory({path: newPath, recursive: this.state.recursive}, updateView);\n }\n };\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {creatingPath, popupVisible, showError, creating, errorMessage, error} =\n state.navigation.modals.createDirectory;\n\n return {\n popupVisible,\n errorMessage,\n error,\n showError,\n creating,\n creatingPath: creatingPath as string,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n abortRequests,\n createDirectory,\n closeEditingPopup,\n clearCreateDirectoryError,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(CreateDirectoryModal);\n","import React from 'react';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {MOVE_OBJECT} from '../../../../constants/navigation/modals/move-object';\nimport {showErrorInModal} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {HIDE_ERROR} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {prepareDestinationPath, preparePath} from '../../../../utils/navigation';\nimport CancelHelper from '../../../../utils/cancel-helper';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {rumLogError} from '../../../../rum/rum-counter';\nimport {wrapBatchPromise} from '../../../../utils/utils';\nimport {Dispatch} from 'redux';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\ninterface MoveOptions {\n preserve_account?: boolean;\n}\n\nfunction moveObjectIntoDirectory(from: string, to: string, {preserve_account}: MoveOptions) {\n const parts = from.split('/');\n const name = parts[parts.length - 1];\n return yt.v3.move({\n parameters: {\n source_path: preparePath(from),\n destination_path: prepareDestinationPath(to, name),\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction moveObjectWithRename(from: string, to: string, {preserve_account}: MoveOptions) {\n return yt.v3.move({\n parameters: {\n source_path: preparePath(from),\n destination_path: to,\n preserve_account,\n },\n cancellation: requests.saveCancelToken,\n });\n}\n\nfunction moveSingleObject(from: string, to: string, options: MoveOptions): Promise<string> {\n const lastChar = to.charAt(to.length - 1);\n\n if (lastChar === '/') {\n return moveObjectIntoDirectory(from, to, options);\n }\n\n return yt.v3\n .exists({parameters: {path: `${to}&`}, cancellation: requests.saveCancelToken})\n .then((exist: boolean) => {\n return exist\n ? moveObjectIntoDirectory(from, to, options)\n : moveObjectWithRename(from, to, options);\n });\n}\n\nfunction moveObjects(\n items: Array<{path: string; titleUnquoted: string}>,\n to: string,\n {preserve_account}: MoveOptions,\n) {\n if (items.length === 1) {\n const [{path}] = items;\n return moveSingleObject(path, to, {preserve_account});\n }\n\n return yt.v3.startTransaction({}).then((id: string) => {\n const moveRequests = map_(items, (node) => {\n return {\n command: 'move' as const,\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: prepareDestinationPath(to, node.titleUnquoted),\n preserve_account,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMove, moveRequests, {\n errorTitle: 'Failed to move the object(s)',\n saveCancelSourceCb: requests.saveCancelToken,\n }),\n 'Failed to move the object(s)',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3.abortTransaction({transaction_id: id}).then(() => Promise.reject(err)),\n );\n });\n}\n\nfunction resolveEntityPath(entityId: string): Promise<string> {\n try {\n return yt.v3.get({\n path: `#${entityId}/@path`,\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n });\n } catch (e) {\n rumLogError(e as Error);\n }\n return Promise.resolve('');\n}\n\nexport function moveObject(\n objectPath: string,\n movedPath: string,\n onSuccess: (destFullPath: string) => void,\n multipleMode: boolean,\n items: Array<{path: string; titleUnquoted: string}>,\n {preserve_account}: MoveOptions,\n) {\n return (dispatch: Dispatch) => {\n dispatch({type: MOVE_OBJECT.REQUEST});\n\n return Promise.resolve()\n .then(() =>\n multipleMode\n ? moveObjects(items, movedPath, {preserve_account}).then(() => movedPath)\n : moveSingleObject(objectPath, movedPath, {preserve_account}).then((value) =>\n resolveEntityPath(JSON.parse(value)),\n ),\n )\n .then((result) => {\n dispatch({type: MOVE_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess(result);\n }\n\n toaster.add({\n name: 'move',\n autoHiding: 10000,\n theme: 'success',\n title: `Object${multipleMode ? 's' : ''} was successfully moved`,\n content: <Link url={`navigation?path=${result}`}>{result}</Link>,\n });\n return result;\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({\n type: MOVE_OBJECT.CANCELLED,\n });\n } else {\n dispatch({type: MOVE_OBJECT.FAILURE});\n\n const action = showErrorInModal(error);\n\n dispatch(action);\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function abortRequests() {\n return (dispatch: Dispatch) => {\n requests.removeAllRequests();\n\n dispatch({type: HIDE_ERROR});\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_MOVE_OBJECT_POPUP} from '../../../../../constants/navigation/modals/move-object';\nimport {\n abortRequests,\n moveObject,\n} from '../../../../../store/actions/navigation/modals/move-object';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {updatePath, updateView} from '../../../../../store/actions/navigation';\nimport {Checkbox} from '@gravity-ui/uikit';\nimport {getPath} from '../../../../../store/selectors/navigation';\n\nclass MoveObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n afterMoveStrategy: PropTypes.oneOf(['refresh', 'redirect']),\n items: PropTypes.array.isRequired,\n errorMessage: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n multipleMode: PropTypes.bool.isRequired,\n movedPath: PropTypes.string.isRequired,\n showError: PropTypes.bool.isRequired,\n renaming: PropTypes.bool.isRequired,\n\n closeEditingPopup: PropTypes.func.isRequired,\n abortRequests: PropTypes.func.isRequired,\n moveObject: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n updatePath: PropTypes.func.isRequired,\n };\n\n static defaultProps = {\n afterMoveStrategy: 'refresh',\n };\n\n state = {preserve_account: false};\n\n handleConfirmButtonClick = () => {\n const {movedPath} = this.props;\n this.doMove(movedPath);\n };\n\n handleCancelButtonClick = () => {\n const {closeEditingPopup, abortRequests} = this.props;\n\n this.resetOptions();\n closeEditingPopup(CLOSE_MOVE_OBJECT_POPUP);\n abortRequests();\n };\n\n handleApply = (newPath) => {\n const {renaming, showError} = this.props;\n const disabled = renaming || showError;\n\n if (!disabled) {\n this.doMove(newPath);\n }\n };\n\n doMove(toPath) {\n const {\n moveObject,\n objectPath,\n afterMoveStrategy,\n updateView,\n updatePath,\n multipleMode,\n items,\n } = this.props;\n const {preserve_account} = this.state;\n\n const onSucess = (destinationPath) => {\n if (destinationPath && afterMoveStrategy === 'redirect') {\n updatePath(destinationPath);\n return;\n }\n updateView();\n };\n\n moveObject(objectPath, toPath, onSucess, multipleMode, items, {\n preserve_account,\n }).then(() => this.resetOptions());\n }\n\n render() {\n const {popupVisible, renaming, movedPath, showError, errorMessage, error, multipleMode} =\n this.props;\n\n const modalTitle = 'Move';\n const title = multipleMode\n ? 'Enter a new path for objects.'\n : 'Enter a new path for the object.';\n const description = multipleMode\n ? 'Objects will be moved with the specified path.'\n : 'The object will be moved with the specified path.';\n const placeholder = 'Enter a new object path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n editingPath={movedPath}\n errorMessage={errorMessage}\n error={error}\n visible={popupVisible}\n showError={showError}\n inProcess={renaming}\n options={this.renderOptions()}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n\n renderOptions() {\n return (\n <Checkbox\n title={'Preserve account'}\n checked={this.state.preserve_account}\n onUpdate={this.onUpdatePreserveAccount}\n >\n Preserve account\n </Checkbox>\n );\n }\n\n resetOptions() {\n this.onUpdatePreserveAccount(false);\n }\n\n onUpdatePreserveAccount = (preserve_account) => this.setState({preserve_account});\n}\n\nconst mapStateToProps = (state) => {\n const {navigation} = state;\n const path = getPath(state);\n const {\n error,\n errorMessage,\n popupVisible,\n showError,\n renaming,\n movedPath,\n objectPath,\n multipleMode,\n items,\n } = navigation.modals.moveObject;\n\n const entityPath = !multipleMode ? objectPath : items.length !== 1 ? undefined : items[0]?.path;\n\n return {\n error,\n errorMessage,\n popupVisible,\n showError,\n renaming,\n movedPath,\n objectPath,\n multipleMode,\n items,\n afterMoveStrategy: entityPath === path ? 'redirect' : 'refresh',\n };\n};\n\nconst mapDispatchToProps = {\n closeEditingPopup,\n abortRequests,\n moveObject,\n updateView,\n updatePath,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(MoveObjectModal);\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {showErrorPopup} from '../../utils/utils';\nimport {INITIAL_STEP} from '../../constants/navigation/modals/restore-object';\n\nfunction getNextObjectName(initialPath, step = INITIAL_STEP) {\n return `${initialPath}(${step})`;\n}\n\nfunction checkPathExists(initialPath, path, step = INITIAL_STEP) {\n return yt.v3\n .exists({path})\n .then((isExists) => {\n if (isExists) {\n const newPath = getNextObjectName(initialPath, ++step);\n\n return checkPathExists(initialPath, newPath, step);\n }\n\n return path;\n })\n .catch(showErrorPopup);\n}\n\nexport function findCorrectObjectName(initialPath) {\n const path = getNextObjectName(initialPath);\n\n return checkPathExists(initialPath, path);\n}\n\nexport function inTrash(path) {\n return path.startsWith('//tmp/trash/') || path.startsWith('//trash/');\n}\n","import {\n OPEN_RESTORE_POPUP,\n RESTORE_OBJECT,\n} from '../../../../constants/navigation/modals/restore-object';\nimport {\n openEditingPopup,\n showErrorInModal,\n} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {findCorrectObjectName} from '../../../../utils/navigation/restore-object';\nimport {NetworkCode} from '../../../../constants/navigation/modals/path-editing-popup';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {preparePath} from '../../../../utils/navigation';\nimport Link from '../../../../components/Link/Link';\nimport {showErrorPopup, wrapBatchPromise} from '../../../../utils/utils';\nimport {updateView} from '../index';\nimport ypath from '../../../../common/thor/ypath';\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport React from 'react';\n\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\n\nconst toaster = new Toaster();\n\nexport function restoreObjects(items) {\n return (dispatch) => {\n dispatch({type: RESTORE_OBJECT.REQUEST});\n return yt.v3\n .startTransaction({})\n .then((id) => {\n const requests = map_(items, (node) => {\n const restorePath = ypath.getValue(node, '/@_restore_path');\n return {\n command: 'move',\n parameters: {\n transaction_id: id,\n source_path: preparePath(node.path),\n destination_path: restorePath,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationRestorePath, requests, {\n errorTitle: 'Failed to get restore path',\n }),\n 'Failed to get restore path',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: id}))\n .catch((err) =>\n yt.v3\n .abortTransaction({transaction_id: id})\n .then(() => Promise.reject(err)),\n );\n })\n .then(() => {\n dispatch({type: RESTORE_OBJECT.SUCCESS});\n dispatch(updateView());\n\n toaster.add({\n theme: 'success',\n name: 'restore objects',\n timeout: 10000,\n title: 'Objects restored',\n content: 'Objects have been successfully restored',\n });\n })\n .catch((err) => {\n dispatch({type: RESTORE_OBJECT.FAILURE});\n\n toaster.add({\n name: 'restore objects',\n theme: 'danger',\n autoHiding: false,\n title: 'Could not restore objects.',\n content: err?.message || 'Oops, something went wrong',\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n });\n };\n}\n\nexport function restoreObject(objectPath, restorePath, onSuccess) {\n return (dispatch, getState) => {\n dispatch({type: RESTORE_OBJECT.REQUEST});\n\n return yt.v3\n .move({\n source_path: preparePath(objectPath),\n destination_path: restorePath,\n })\n .then(() => {\n dispatch({type: RESTORE_OBJECT.SUCCESS});\n\n if (typeof onSuccess === 'function') {\n onSuccess(objectPath, restorePath);\n }\n\n toaster.add({\n theme: 'success',\n name: 'restore object',\n timeout: 10000,\n title: 'Object restored',\n content: (\n <div>\n Object has been successfully{' '}\n <Link url={`navigation?path=${restorePath}`}>restored</Link>\n </div>\n ),\n });\n })\n .catch((error) => {\n dispatch({type: RESTORE_OBJECT.FAILURE});\n\n const isModalOpen = getState().navigation.modals.restoreObject.popupVisible;\n\n if (isModalOpen) {\n const action = showErrorInModal(error);\n\n dispatch(action);\n } else {\n switch (error.code) {\n case NetworkCode.EXIST: {\n findCorrectObjectName(restorePath)\n .then((correctRestorePath) => {\n const action = openEditingPopup(\n objectPath,\n correctRestorePath,\n OPEN_RESTORE_POPUP,\n );\n\n dispatch(action);\n })\n .catch(showErrorPopup);\n break;\n }\n case NetworkCode.INCORRECT_PATH: {\n const openAction = openEditingPopup(\n objectPath,\n restorePath,\n OPEN_RESTORE_POPUP,\n );\n const errorAction = showErrorInModal(error);\n\n dispatch(errorAction);\n dispatch(openAction);\n break;\n }\n default:\n showErrorPopup(error);\n break;\n }\n }\n });\n };\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport PathEditorModal from '../PathEditorModal';\n\nimport {CLOSE_RESTORE_POPUP} from '../../../../../constants/navigation/modals/restore-object';\nimport {closeEditingPopup} from '../../../../../store/actions/navigation/modals/path-editing-popup';\nimport {restoreObject} from '../../../../../store/actions/navigation/modals/restore-object';\nimport {updateView} from '../../../../../store/actions/navigation';\n\nclass RestoreObjectModal extends Component {\n static propTypes = {\n // from connect\n error: PropTypes.shape({\n code: PropTypes.number,\n message: PropTypes.string,\n }).isRequired,\n errorMessage: PropTypes.string.isRequired,\n restoredPath: PropTypes.string.isRequired,\n objectPath: PropTypes.string.isRequired,\n restoring: PropTypes.bool.isRequired,\n showError: PropTypes.bool.isRequired,\n popupVisible: PropTypes.bool.isRequired,\n\n updateView: PropTypes.func.isRequired,\n restoreObject: PropTypes.func.isRequired,\n closeEditingPopup: PropTypes.func.isRequired,\n };\n\n handleConfirmButtonClick = () => {\n const {restoreObject, objectPath, restoredPath, updateView} = this.props;\n\n restoreObject(objectPath, restoredPath, updateView);\n };\n\n handleCancelButtonClick = () => this.props.closeEditingPopup(CLOSE_RESTORE_POPUP);\n\n handleApply = (newPath) => {\n const {restoreObject, objectPath, showError, restoring, updateView} = this.props;\n const disabled = restoring || showError;\n\n if (!disabled) {\n restoreObject(objectPath, newPath, updateView);\n }\n };\n\n render() {\n const {popupVisible, restoring, restoredPath, showError, errorMessage, error} = this.props;\n\n const modalTitle = 'Restore';\n const title = 'Object with the same path is already exists.';\n const description =\n 'The object will be restored using a new path or you can change path to what you want.';\n const placeholder = 'Enter restored object path...';\n\n return (\n <PathEditorModal\n title={title}\n description={description}\n placeholder={placeholder}\n modalTitle={modalTitle}\n visible={popupVisible}\n inProcess={restoring}\n editingPath={restoredPath}\n showError={showError}\n errorMessage={errorMessage}\n error={error}\n onConfirmButtonClick={this.handleConfirmButtonClick}\n onCancelButtonClick={this.handleCancelButtonClick}\n onApply={this.handleApply}\n />\n );\n }\n}\n\nconst mapStateToProps = ({navigation}) => {\n const {restoredPath, objectPath, popupVisible, showError, restoring, errorMessage, error} =\n navigation.modals.restoreObject;\n\n return {\n restoredPath,\n restoring,\n popupVisible,\n errorMessage,\n error,\n showError,\n objectPath,\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n restoreObject,\n closeEditingPopup,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RestoreObjectModal);\n","import React from 'react';\nimport {connect} from 'react-redux';\n\nimport {AccessContentAcl, NavigationAcl} from '../../../../containers/ACL';\nimport {getAclLoadState} from '../../../../store/selectors/acl';\nimport {getAttributes, getRawPath} from '../../../../store/selectors/navigation';\nimport {IdmObjectType} from '../../../../constants/acl';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nconst AclTabParams = {\n [IdmObjectType.PATH]: {\n rumType: RumMeasureTypes.NAVIGATION_TAB_ACL,\n Component: NavigationAcl,\n },\n [IdmObjectType.ACCESS_CONTROL_OBJECT]: {\n rumType: RumMeasureTypes.NAVIGATION_TAB_ACL_ACCESS,\n Component: AccessContentAcl,\n },\n};\n\nconst makeComponentWithRum = (idmKind) => {\n const {rumType, Component} = AclTabParams[idmKind];\n const AclTabComponent = (props) => {\n useAppRumMeasureStart({\n type: rumType,\n startDeps: [props.loadState],\n allowStart: ([loadState]) => !isFinalLoadingStatus(loadState),\n });\n\n useRumMeasureStop({\n type: rumType,\n stopDeps: [props.loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Component {...props} />;\n };\n return AclTabComponent;\n};\n\nconst makeMapStateToProps = (idmKind) => {\n return (state, props) => {\n const attributes = getAttributes(state);\n let {path} = attributes;\n if (!path) path = getRawPath(state);\n\n const isPrincipalACLtab =\n props.mode === 'content' && props.type === 'access_control_object';\n\n return {\n loadState: getAclLoadState(state, idmKind),\n path: path,\n idmKind: isPrincipalACLtab ? IdmObjectType.ACCESS_CONTROL_OBJECT : IdmObjectType.PATH,\n };\n };\n};\n\nfunction createACLTabComponent(idmKind) {\n const mapStateToProps = makeMapStateToProps(idmKind);\n const Component = makeComponentWithRum(idmKind);\n return connect(mapStateToProps)(Component);\n}\n\nexport default createACLTabComponent(IdmObjectType.PATH);\nexport const AccessAclTab = createACLTabComponent(IdmObjectType.ACCESS_CONTROL_OBJECT);\n","import {RumMeasureTypes} from '../../../../../rum/rum-measure-types';\nimport {RumWrapper} from '../../../../../rum/rum-wrap-api';\n\nexport function makeTableRumId({cluster, isDynamic}: {cluster: string; isDynamic: boolean}) {\n const measureId = isDynamic\n ? RumMeasureTypes.NAVIGATION_CONTENT_TABLE_DYNAMIC\n : RumMeasureTypes.NAVIGATION_CONTENT_TABLE_STATIC;\n return new RumWrapper(cluster, measureId);\n}\n","import axios from 'axios';\n\nimport map_ from 'lodash/map';\n\nimport {ThunkAction} from 'redux-thunk';\n\n// @ts-ignore\nimport unipika from '../../../../../common/thor/unipika';\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {\n SET_TABLE_COLUMNS_PRESET,\n SET_TABLE_COLUMNS_PRESET_HASH,\n} from '../../../../../constants/navigation/content/table';\nimport {showErrorPopup, wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getColumnsPreset,\n getColumnsPresetHash,\n getIsDynamic,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {RootState} from '../../../../../store/reducers';\nimport {YTApiId} from '../../../../../rum/rum-wrap-api';\nimport {makeTableRumId} from './table-rum-id';\n\nconst getColumnPresetEndpoint = (cluster: string) => `/api/table-column-preset/${cluster}`;\n\ntype ColumnPresetThunkAction = ThunkAction<any, RootState, any, any>;\n\nconst {utf8} = unipika.utils;\n\nexport function loadColumnPresetIfDefined(): ColumnPresetThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const hashToLoad = getColumnsPresetHash(state);\n if (!hashToLoad) {\n return Promise.resolve();\n }\n\n const {hash} = getColumnsPreset(state);\n if (hashToLoad === hash) {\n return Promise.resolve();\n }\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n\n return id\n .fetch(\n YTApiId.ui_loadColumnPreset,\n axios.request<{columns: Array<string>; hash: string}>({\n method: 'GET',\n url: `${getColumnPresetEndpoint(cluster)}/${hashToLoad}`,\n headers: {'content-type': 'application/json'},\n }),\n )\n .then(({data: {columns, hash}}) => {\n const presetHash = getColumnsPresetHash(getState());\n if (presetHash !== hash) {\n return;\n }\n\n dispatch(setTablePreset(columns, hash));\n })\n .catch((error) => {\n dispatch(setTablePresetError(error));\n\n new Toaster().add({\n theme: 'danger',\n name: 'loadColumnPreset',\n title: 'Failed to get preset of columns',\n content: error.message,\n actions: [\n {\n label: ' Details',\n onClick() {\n showErrorPopup(error?.response?.data || error);\n },\n },\n ],\n });\n\n return Promise.reject(error);\n });\n };\n}\n\nexport function saveColumnPreset(columnsEncoded: Array<string>, cluster: string): Promise<string> {\n const columns = map_(columnsEncoded, utf8.decode);\n return wrapApiPromiseByToaster(\n axios.request<string>({\n method: 'POST',\n url: getColumnPresetEndpoint(cluster),\n headers: {'content-type': 'application/json'},\n data: columns,\n }),\n {\n skipSuccessToast: true,\n toasterName: 'saveColumnPreset',\n errorContent: 'Failed to save preset of columns',\n },\n ).then((res) => {\n const hash = res.data;\n return hash;\n });\n}\n\nexport function setTablePresetHash(hash?: string) {\n return {\n type: SET_TABLE_COLUMNS_PRESET_HASH,\n data: hash,\n };\n}\n\nfunction setTablePreset(columns: Array<string>, hash: string) {\n const columnsEncoded = map_(columns, utf8.encode);\n return {\n type: SET_TABLE_COLUMNS_PRESET,\n data: {error: undefined, columns: columnsEncoded, hash},\n };\n}\n\nfunction setTablePresetError(error: unknown) {\n return {\n type: SET_TABLE_COLUMNS_PRESET,\n data: {error, columns: undefined, hash: undefined},\n };\n}\n","import filter_ from 'lodash/filter';\nimport has_ from 'lodash/has';\nimport isEmpty_ from 'lodash/isEmpty';\nimport keyBy_ from 'lodash/keyBy';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport metrics from '../../../../../common/utils/metrics';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {\n CHANGE_CELL_SIZE,\n CHANGE_PAGE_SIZE,\n CLOSE_COLUMN_SELECTOR_MODAL,\n GET_TABLE_DATA,\n LOAD_TYPE,\n OPEN_COLUMN_SELECTOR_MODAL,\n SET_COLUMNS,\n SET_COLUMNS_ORDER,\n SET_OFFSET,\n TOGGLE_FULL_SCREEN,\n} from '../../../../../constants/navigation/content/table';\n\nimport {updateView} from '../../../../../store/actions/navigation';\n\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport {openInNewTab, showErrorPopup} from '../../../../../utils/utils';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport Columns from '../../../../../utils/navigation/content/table/columns';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {\n getColumnsValues,\n getParsedError,\n getRequestOutputFormat,\n parseErrorFromResponse,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\n\nimport {getAttributes, getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {\n getDefaultTableColumnLimit,\n isTableSimilarityEnabled,\n} from '../../../../../store/selectors/settings';\nimport {\n getAllColumns,\n getNextOffset,\n getRequestedPageSize,\n getVisibleColumns,\n isYqlTypesEnabled,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n getCellSize,\n getColumns,\n getColumnsPreset,\n getDeniedKeyColumns,\n getIsDynamic,\n getIsStrict,\n getKeyColumns,\n getMoveOffsetBackward,\n getOmittedColumns,\n getRows,\n getTableColumnNamesFromSchema,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {mergeScreen} from '../../../../../store/actions/global';\nimport {waitForFontFamilies} from '../../../../../store/actions/global/fonts';\nimport {injectColumnsFromSchema} from '../../../../../utils/navigation/content/table/table-ts';\nimport {YTApiId, ytApiV3, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport unipika from '../../../../../common/thor/unipika';\n\nimport {loadColumnPresetIfDefined, saveColumnPreset, setTablePresetHash} from './columns-preset';\nimport {makeTableRumId} from './table-rum-id';\nimport {readStaticTable} from './readStaticTable';\nimport {readDynamicTable} from './readDynamicTable';\n\nconst requests = new CancelHelper();\nconst toaster = new Toaster();\n\nfunction loadDynamicTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload) {\n const {login} = state.global;\n\n const path = getPath(state);\n const stringLimit = getCellSize(state);\n const keyColumns = getKeyColumns(state);\n const columns = getColumns(state);\n const attributes = getAttributes(state);\n const useYqlTypes = isYqlTypesEnabled(state);\n const moveBackward = getMoveOffsetBackward(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const {offsetValue: offset, moveBackward: descending} = getNextOffset(state);\n const transaction = getTransaction(state);\n const orderBySupported = true;\n const offsetColumns = keyColumns;\n\n let limit = getRequestedPageSize(state);\n if (isEmpty_(offset) && descending) {\n // If we move to the end of the table, we reduce the limit for correctly determining the end of the table\n limit--;\n }\n\n const decodedColumns = decodeNameField(columns);\n const outputFormat =\n requestOutputFormat ||\n getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n\n const isUnmounted = ypath.getValue(attributes, '/tablet_state') === 'unmounted';\n\n if (isUnmounted) {\n // in case of unmounted dynamic table treat it as a static table\n const apiId = type === LOAD_TYPE.PRELOAD ? YTApiId.tableReadPreload : YTApiId.tableRead;\n // example: offset = \"(1, 2)\": string , we need [1, 2]: number[]\n const preparedOffset = offset\n .replace(/[()]/g, '')\n .split(',')\n .map((part) => Number(part.trim()))\n .filter(Boolean);\n return id.fetch(\n apiId,\n readStaticTable({\n setup,\n parameters: {\n path: {\n $value: path,\n $attributes: preparedOffset.length\n ? {\n tablet_index: preparedOffset[0],\n row_index: preparedOffset[1],\n }\n : undefined,\n },\n table_reader: {\n workload_descriptor: {category: 'user_interactive'},\n },\n transaction,\n output_format: outputFormat,\n dump_error_into_response: true,\n omit_inaccessible_columns: true,\n },\n cancellation: requests.saveCancelToken,\n reverseRows: moveBackward,\n }),\n );\n }\n\n if (type === LOAD_TYPE.PRELOAD) {\n // Get all columns from schema for preload data. Scheme is always strict\n const allColumns = Columns.getSchemaColumns(attributes);\n\n return id\n .fetch(\n YTApiId.dynTableCheckPerm,\n ytApiV3Id.checkPermission(YTApiId.dynTableCheckPerm, {\n parameters: {\n columns: allColumns,\n permission: 'read',\n user: login,\n path,\n },\n cancellation: requests.saveCancelToken,\n }),\n )\n .then((permissions) => {\n const keyColumnsNames = keyBy_(keyColumns);\n const {availableColumns, omittedColumns, deniedKeyColumns} = reduce_(\n permissions.columns,\n (res, permission, index) => {\n if (permission.action === 'allow') {\n res.availableColumns.push(allColumns[index]);\n } else {\n res.omittedColumns.push(allColumns[index]);\n if (has_(keyColumnsNames, allColumns[index])) {\n res.deniedKeyColumns.push({[allColumns[index]]: permission.action});\n }\n }\n\n return res;\n },\n {availableColumns: [], omittedColumns: [], deniedKeyColumns: []},\n );\n\n if (deniedKeyColumns.length !== 0) {\n return Promise.reject({deniedKeyColumns});\n }\n\n const columns = map_(availableColumns, unipika.decode);\n const parameters = {\n query: Query.prepareQuery({\n columns,\n path,\n keyColumns,\n offsetColumns,\n offset: useZeroRangeForPreload ? 0 : offset,\n limit: useZeroRangeForPreload ? 0 : limit,\n descending,\n orderBySupported,\n }),\n output_format: requestOutputFormat,\n dump_error_into_response: true,\n };\n\n return id\n .fetch(\n YTApiId.dynTableSelectRowsPreload,\n ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n }),\n )\n .then(({data}) => {\n const error = parseErrorFromResponse(data);\n\n if (error) {\n return Promise.reject(getParsedError(error));\n }\n\n const {columns, rows, yqlTypes} = prepareRows(data, moveBackward);\n\n return {\n rows,\n columns,\n yqlTypes,\n omittedColumns,\n };\n });\n });\n } else {\n // Get only visible columns for updating data. Get omittedColumns from store.\n const columns = getVisibleColumns(state);\n const omittedColumns = getOmittedColumns(state);\n const deniedKeyColumns = getDeniedKeyColumns(state);\n const decodedColumns = decodeNameField(columns);\n const outputFormat = getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n if (deniedKeyColumns.length !== 0) {\n const err = new Error('There is no \"read\" permission for some key columns:');\n err.attributes = {key_columns: deniedKeyColumns};\n return Promise.reject(err);\n }\n\n const parameters = {\n query: Query.prepareQuery({\n columns: decodedColumns,\n path,\n keyColumns,\n offsetColumns,\n offset,\n limit,\n descending,\n orderBySupported,\n }),\n output_format: outputFormat,\n dump_error_into_response: true,\n };\n\n return id\n .fetch(\n YTApiId.dynTableSelectRows,\n readDynamicTable({\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n }),\n )\n .then((data) => {\n return {\n ...data,\n omittedColumns,\n };\n });\n }\n}\n\nasync function loadStaticTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload) {\n const path = getPath(state);\n const stringLimit = getCellSize(state);\n const transaction = getTransaction(state);\n const moveBackward = getMoveOffsetBackward(state);\n const requestedPageSize = getRequestedPageSize(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n\n const {login} = state.global;\n // Get all columns always and update them then. We can get new columns. The scheme is not always strict\n const columns = getColumns(state);\n const offsetValue = getNextOffset(state).offsetValue;\n const useYqlTypes = isYqlTypesEnabled(state);\n const decodedColumns = decodeNameField(columns);\n const outputFormat =\n requestOutputFormat ||\n getRequestOutputFormat(\n decodedColumns,\n stringLimit,\n login,\n defaultTableColumnLimit,\n useYqlTypes,\n );\n\n const parameters = prepareRequest({\n path,\n table_reader: {\n workload_descriptor: {category: 'user_interactive'},\n },\n transaction,\n output_format: outputFormat,\n dump_error_into_response: true,\n omit_inaccessible_columns: true,\n relativePath: useZeroRangeForPreload\n ? '[#0:#0]'\n : '[#' + offsetValue + ':#' + (offsetValue + requestedPageSize) + ']',\n });\n\n const cluster = getCluster(state);\n const isDynamic = getIsDynamic(state);\n const id = makeTableRumId({cluster, isDynamic});\n const apiId = type === LOAD_TYPE.PRELOAD ? YTApiId.tableReadPreload : YTApiId.tableRead;\n\n return await id.fetch(\n apiId,\n readStaticTable({\n setup,\n parameters,\n cancellation: requests.saveCancelToken,\n reverseRows: moveBackward,\n }),\n );\n}\n\nfunction loadTableRows(type, state, requestOutputFormat) {\n const isDynamic = getIsDynamic(state);\n const isStrict = getIsStrict(state);\n const setup = {\n transformResponse({parsedData, rawResponse}) {\n return {\n data: parsedData,\n headers: rawResponse?.headers,\n };\n },\n };\n const useZeroRangeForPreload = isStrict && type === LOAD_TYPE.PRELOAD;\n\n const loadPromise = isDynamic\n ? loadDynamicTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload)\n : loadStaticTable(requestOutputFormat, setup, state, type, useZeroRangeForPreload);\n\n return loadPromise.then((result) => {\n const schemaColumns = getTableColumnNamesFromSchema(state);\n const {columns, omittedColumns, ...rest} = result;\n return {\n columns: injectColumnsFromSchema(columns, omittedColumns, schemaColumns),\n omittedColumns,\n ...rest,\n };\n });\n}\n\n// Make a table request with page size row range and empty column range to get the list of all columns in table\n// and restore personalized columns list.\nfunction restoreColumns(state) {\n const tableSimilarityEnabled = isTableSimilarityEnabled(state);\n const attributes = getAttributes(state);\n const stringLimit = getCellSize(state);\n\n const requestOutputFormat = {\n $value: 'web_json',\n $attributes: {\n field_weight_limit: stringLimit,\n max_selected_column_count: 50,\n max_all_column_names_count: 3000,\n column_names: [],\n },\n };\n\n return loadTableRows(LOAD_TYPE.PRELOAD, state, requestOutputFormat)\n .then(({columns, omittedColumns}) => {\n const storedColumns = tableSimilarityEnabled\n ? Columns.restoreSimilarColumns(attributes, columns)\n : Columns.restoreExactColumns(attributes);\n\n return {columns, omittedColumns, storedColumns};\n })\n .catch((data) => {\n const {deniedKeyColumns} = data;\n return {\n columns: [],\n omittedColumns: [],\n storedColumns: null,\n ...(deniedKeyColumns ? {deniedKeyColumns} : {}),\n };\n });\n}\n\nexport function updateTableData() {\n return (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const {offsetValue, moveBackward} = getNextOffset(state);\n const requestedPageSize = getRequestedPageSize(state);\n const isDynamic = getIsDynamic(state);\n\n dispatch({type: GET_TABLE_DATA.REQUEST});\n requests.removeAllRequests();\n\n return loadTableRows(LOAD_TYPE.UPDATE, state)\n .then(({columns, omittedColumns, rows, yqlTypes}) => {\n // Scheme is always strict in dynamic tables. No new columns are expected.\n if (!isDynamic) {\n // Get current columns for save visible status\n const storedColumns = getColumns(state);\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const preparedColumns = Columns.prepareColumns(\n attributes,\n rows,\n columns,\n storedColumns,\n defaultTableColumnLimit,\n );\n const preparedOmittedColumns = Columns.prepareOmittedColumns(\n attributes,\n omittedColumns,\n );\n dispatch(setColumns(preparedColumns, preparedOmittedColumns, []));\n }\n\n if (moveBackward) {\n let newOffsetValue;\n if (!isEmpty_(offsetValue) && rows.length < requestedPageSize) {\n // If there are not enough rows on the new page on the left:\n // - add rows from the current page\n // - reset offset value\n newOffsetValue = '';\n const previousRows = getRows(state);\n const addRowCount = Math.min(\n requestedPageSize - rows.length + 1,\n previousRows.length,\n );\n rows = rows.concat(previousRows.slice(1, addRowCount));\n } else {\n const keyColumns = getKeyColumns(state);\n newOffsetValue = Query.prepareKey(getColumnsValues(rows[0], keyColumns));\n }\n\n if (newOffsetValue !== undefined) {\n dispatch({\n type: SET_OFFSET,\n data: {offsetValue: newOffsetValue},\n });\n }\n }\n\n dispatch({\n type: GET_TABLE_DATA.SUCCESS,\n data: {rows, yqlTypes},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLE_DATA.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function getTableData() {\n return (dispatch, getState) => {\n const state = getState();\n\n const attributes = getAttributes(state);\n\n return dispatch(loadColumnPresetIfDefined()).then(() => {\n const updateColumns = ({\n rows,\n columns,\n omittedColumns,\n storedColumns,\n deniedKeyColumns = [],\n }) => {\n const state = getState();\n const defaultTableColumnLimit = getDefaultTableColumnLimit(state);\n const preparedColumns = Columns.prepareColumns(\n attributes,\n rows,\n columns,\n storedColumns,\n defaultTableColumnLimit,\n );\n const preparedOmittedColumns = Columns.prepareOmittedColumns(\n attributes,\n omittedColumns,\n );\n\n // if we have columns preset -> update checked according to preset\n const preset = getColumnsPreset(state);\n if (preset?.columns) {\n preparedColumns.forEach((column) => {\n column.checked = preset?.columns?.includes(column.name);\n });\n }\n dispatch(setColumns(preparedColumns, preparedOmittedColumns, deniedKeyColumns));\n };\n\n dispatch({type: GET_TABLE_DATA.REQUEST});\n requests.removeAllRequests();\n\n // 1. call the restoreColumns function before loading table data\n // 2. Call loadTableRows function with specific requestOutputFormat and empty column_names to get all columns and return their and stored columns:\n // a) tableSimilarityEnabled === false. Finding stored columns by id and schema. If stored columns exists -- update their and return. Else return null\n // b) tableSimilarityEnabled === true. Finding stored columns by array of all columns. If stored columns exists -- update their and return. Else return null\n // 3. If at the previous step was returned an array then building columns based on stored columns and save their in the store.\n // 4. load table rows for columns in the store\n\n return dispatch(waitForFontFamilies(restoreColumns(getState())))\n .then(({columns, omittedColumns, storedColumns, ...rest}) => {\n if (columns) {\n updateColumns({\n rows: [],\n columns,\n omittedColumns,\n storedColumns,\n ...rest,\n });\n }\n return dispatch(updateTableData());\n })\n .catch((error) => {\n updateColumns({\n rows: [],\n columns: Columns.getSchemaColumns(attributes),\n omittedColumns: [],\n });\n\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLE_DATA.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLE_DATA.FAILURE,\n data: {error},\n });\n }\n });\n });\n };\n}\n\nexport function setColumns(columns, omittedColumns, deniedKeyColumns) {\n return {\n type: SET_COLUMNS,\n data: {columns, omittedColumns, deniedKeyColumns},\n };\n}\n\nexport function setColumnsOrder(columnsOrder) {\n return {\n type: SET_COLUMNS_ORDER,\n data: {columnsOrder},\n };\n}\n\nexport function openColumnSelectorModal() {\n return {\n type: OPEN_COLUMN_SELECTOR_MODAL,\n };\n}\n\nexport function closeColumnSelectorModal() {\n return {\n type: CLOSE_COLUMN_SELECTOR_MODAL,\n };\n}\n\nexport function updateColumns(allColumns) {\n return (dispatch, getState) => {\n const state = getState();\n const attributes = getAttributes(state);\n const omittedColumns = getOmittedColumns(state);\n const deniedKeyColumns = getDeniedKeyColumns(state);\n const columns = filter_(allColumns, (column) => !column.disabled); // remove omitted columns\n const columnsOrder = Columns.getColumnsOrder(columns);\n Columns.storeAllColumns(attributes, columns);\n\n dispatch(setColumns(columns, omittedColumns, deniedKeyColumns));\n dispatch(setColumnsOrder(columnsOrder));\n dispatch(closeColumnSelectorModal());\n\n dispatch(setTablePresetHash(undefined));\n dispatch(updateTableData());\n };\n}\n\nexport function rememberPresetColumnsAsDefault() {\n return (dispatch, getState) => {\n const allColumns = getAllColumns(getState());\n dispatch(updateColumns(allColumns));\n };\n}\n\nexport function openTableWithPresetOfColumns() {\n return (dispatch, getState) => {\n const visibleColumns = getVisibleColumns(getState());\n const cluster = getCluster(getState());\n saveColumnPreset(map_(visibleColumns, 'name'), cluster).then((hash) => {\n const {href} = window.location;\n const url = `${href}&columns=${hash}`;\n openInNewTab(url);\n\n 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';\nimport {BatchResultsItem} from '../../../../../shared/yt-types';\n\ntype DynTablesStateThunkAction = ThunkAction<any, RootState, any, DynTablesStateModalAction>;\n\nexport function showDynTablesStateModalByPaths(\n paths: Array<string>,\n action: Required<DynTablesStateModalState>['action'],\n): DynTablesStateModalAction {\n return {\n type: DYN_TABLES_STATE_MODAL_PARTIAL,\n data: {paths, action, showModal: true},\n };\n}\n\nexport function showDynTablesStateModalByNodes(\n action: Required<DynTablesStateModalState>['action'],\n selectedNodes: Array<{path: string; tabletState: TabletStateType}>,\n): DynTablesStateThunkAction {\n return (dispatch) => {\n const allowedFrom = DYN_TABLES_ALLOWED_STATES_OF_ACTION[action];\n const paths = reduce_(\n selectedNodes,\n (acc, {path, tabletState}) => {\n if (tabletState && allowedFrom[tabletState]) {\n acc.push(path);\n }\n return acc;\n },\n [] as Array<string>,\n );\n\n dispatch({\n type: DYN_TABLES_STATE_MODAL_PARTIAL,\n data: {paths, action, showModal: true},\n });\n };\n}\n\nexport function hideDynTablesStateModal() {\n return {\n type: DYN_TABLES_STATE_MODAL_PARTIAL,\n data: {paths: [], action: undefined, showModal: false},\n };\n}\n\nexport function dynTablesChangeState(\n paths: Array<string>,\n action: TabletStateAction,\n): DynTablesStateThunkAction {\n return (dispatch) => {\n const requests = map_(paths, (path) => {\n return {\n command: `${action}_table` as const,\n parameters: {path},\n };\n });\n\n return wrapApiPromiseByToaster(\n executeBatchWithRetries(YTApiId.navigationDynTableState, requests, {\n errorTitle: 'Failed to change dynamic table(s) state',\n }),\n {\n toasterName: 'dyn_tables_change_state_to_' + action,\n successContent: '',\n batchType: 'v3',\n skipSuccessToast: true,\n errorTitle: `Cannot perform ${action} action`,\n },\n )\n .then(() => {\n return wrapApiPromiseByToaster(waitWhileThereIsTransient(paths, action), {\n toasterName: 'dyn_tables_wait_while_transient_' + action,\n successContent: `${capitalize_(action)} completed`,\n batchType: 'v3',\n errorTitle: `Cannot perform ${action} action`,\n });\n })\n .then(() => {\n dispatch(updateView());\n });\n };\n}\n\nfunction waitWhileThereIsTransient(\n paths: Array<string>,\n action: TabletStateAction,\n): Promise<Array<BatchResultsItem<string>>> {\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {path: `${path}/@tablet_state`},\n };\n });\n\n const res = delayed(\n () =>\n executeBatchWithRetries<string>(YTApiId.navigationGetTabletState, requests, {\n errorTitle: 'Failed to get tablet state',\n }),\n 3000,\n );\n\n return wrapApiPromiseByToaster(res, {\n toasterName: 'dyn_tables_wait_while_transient_' + action,\n successContent: `${capitalize_(action)} completed`,\n skipSuccessToast: true,\n batchType: 'v3',\n errorTitle: `Cannot perform ${action} action`,\n }).then((results) => {\n const toRecheck = reduce_(\n results,\n (acc, {output}, index) => {\n if (output === 'transient') {\n acc.push(paths[index]);\n }\n return acc;\n },\n [] as typeof paths,\n );\n\n if (toRecheck.length) {\n return waitWhileThereIsTransient(toRecheck, action);\n }\n return Promise.resolve([]);\n });\n}\n","import React, {Fragment} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../../common/hammer';\nimport {compose} from 'redux';\n\nimport DownloadManager from '../../../../../pages/navigation/content/Table/DownloadManager/DownloadManager';\nimport Button from '../../../../../components/Button/Button';\n\nimport {mountUnmountTable} from '../../../../../store/actions/navigation/content/table/table';\nimport {getAttributes, getPath} from '../../../../../store/selectors/navigation';\nimport withVisible from '../../../../../hocs/withVisible';\nimport UploadManager from '../UploadManager/UploadManager';\nimport {showDynTablesStateModalByPaths} from '../../../../../store/actions/navigation/modals/dyn-tables-state-modal';\n\nconst propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from withVisible\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n\n // from connect\n isDynamic: PropTypes.bool.isRequired,\n tabletState: PropTypes.string,\n\n mountUnmountTable: PropTypes.func.isRequired,\n};\n\nDynamicActions.propTypes = propTypes;\nfunction DynamicActions(props) {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n\n const {tabletState} = props;\n const action = tabletState !== 'mounted' ? 'mount' : 'unmount';\n const onClick = React.useCallback(() => {\n dispatch(showDynTablesStateModalByPaths([path], action));\n }, [action, path]);\n\n return (\n <Fragment>\n <Button size=\"m\" onClick={onClick}>\n {hammer.format['Readable'](action)}\n </Button>\n </Fragment>\n );\n}\n\nStaticActions.propTypes = propTypes;\nfunction StaticActions(props) {\n const {block} = props;\n\n return (\n <Fragment>\n <DownloadManager className={block('download-manager')} />\n <UploadManager />\n </Fragment>\n );\n}\n\nTableActions.propTypes = propTypes;\nfunction TableActions(props) {\n const {block, isDynamic} = props;\n\n return (\n <div className={block('actions')}>\n {isDynamic ? <DynamicActions {...props} /> : <StaticActions {...props} />}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isDynamic} = state.navigation.content.table;\n const attributes = getAttributes(state);\n\n const tabletState = ypath.getValue(attributes, '/tablet_state');\n\n return {isDynamic, tabletState};\n};\n\nexport default compose(connect(mapStateToProps, {mountUnmountTable}), withVisible)(TableActions);\n","import React, {useState} from 'react';\nimport b from 'bem-cn-lite';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Alert, Button} from '@gravity-ui/uikit';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {remountTable} from '../../../../../store/actions/navigation/content/table/remount-table';\nimport {getAttributesWithTypes} from '../../../../../store/selectors/navigation';\n\nimport './RemountAlert.scss';\n\nconst block = b('remount-alert');\n\nexport function RemountAlert() {\n const dispatch = useDispatch();\n const attributesWithTypes = useSelector(getAttributesWithTypes);\n const [pending, setPending] = useState(false);\n\n const handleOnRemount = async () => {\n setPending(true);\n await dispatch(remountTable());\n setPending(false);\n };\n\n const [remountNeededTabletCount, tabletCount] = ypath.getValues(attributesWithTypes, [\n '/remount_needed_tablet_count',\n '/tablet_count',\n ]);\n\n const showDiffInfo = remountNeededTabletCount !== tabletCount;\n const diffInfo = ` (${remountNeededTabletCount} of ${tabletCount} tablets pending)`;\n\n const message = `Table should be remounted to apply new settings${showDiffInfo ? diffInfo : ''}. \n This action will not cause any downtime. See Mount config tab for details.`;\n\n return (\n <Alert\n theme=\"warning\"\n layout=\"horizontal\"\n title=\"Some table settings are not applied to tablets\"\n message={message}\n className={block()}\n actions={\n <Button\n onClick={handleOnRemount}\n disabled={pending}\n className={block('button')}\n view=\"normal-contrast\"\n size=\"s\"\n >\n Remount\n </Button>\n }\n ></Alert>\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {UnknownAction} from '@reduxjs/toolkit';\n\nimport {RootState} from '../../../../reducers';\nimport {updateView} from '../..';\n\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {ytApiV4} from '../../../../../rum/rum-wrap-api';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nexport function remountTable(): AsyncAction<Promise<void>> {\n return async (dispatch, getState) => {\n const state = getState();\n const path = state.navigation.navigation.path;\n\n return wrapApiPromiseByToaster(ytApiV4.remountTable({path}), {\n toasterName: 'remount_tabe',\n errorTitle: 'Failed to remount table',\n skipSuccessToast: true,\n }).finally(() => {\n dispatch(updateView());\n });\n };\n}\n","import React, {useMemo} from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect, useSelector} from 'react-redux';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {makeMetaItems} from '../../../../../components/MetaTable/presets/presets';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {RemountAlert} from '../RemountAlert/RemountAlert';\n\nimport {getTableType} from '../../../../../store/selectors/navigation/content/table';\nimport {getIsDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getAttributes, getAttributesWithTypes} from '../../../../../store/selectors/navigation';\nimport {getTabletErrorsBackgroundCount} from '../../../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport {Props as AutomaticModeSwitchProps} from './AutomaticModeSwitch';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {getCluster} from '../../../../../store/selectors/global';\n\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../../constants/global';\n\nimport './TableMeta.scss';\n\nconst block = cn('navigation-meta-table');\n\ninterface Props {\n attributes: any;\n mediumList: string[];\n isDynamic: boolean;\n tableType: string;\n remountNeeded: boolean;\n onEditEnableReplicatedTableTracker: AutomaticModeSwitchProps['onEdit'];\n}\n\nfunction TableMeta({\n attributes,\n tableType,\n mediumList,\n isDynamic,\n remountNeeded,\n onEditEnableReplicatedTableTracker,\n}: Props) {\n const tabletErrorCount = useSelector(getTabletErrorsBackgroundCount);\n const cluster = useSelector(getCluster);\n\n const items = useMemo(() => {\n return makeMetaItems({\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n });\n }, [\n cluster,\n attributes,\n tableType,\n isDynamic,\n mediumList,\n tabletErrorCount,\n onEditEnableReplicatedTableTracker,\n ]);\n\n return (\n <CollapsibleSection name=\"Metadata\" size={UI_COLLAPSIBLE_SIZE}>\n <MetaTable className={block()} items={items} />\n {remountNeeded && <RemountAlert />}\n </CollapsibleSection>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {mediumList} = state.global;\n\n const isDynamic = getIsDynamic(state);\n const tableType = getTableType(state);\n const attributes = getAttributes(state);\n const attributesWithTypes = getAttributesWithTypes(state);\n\n const remountNeeded =\n Boolean(Number(ypath.getValue(attributesWithTypes, '/remount_needed_tablet_count'))) &&\n isDynamic;\n\n return {\n attributes,\n mediumList,\n isDynamic,\n tableType,\n remountNeeded,\n };\n};\n\nexport default connect(mapStateToProps)(TableMeta);\n","import React from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {YTError} from '../../../../types';\nimport Error from '../../../../components/Error/Error';\n\nimport './ReplicatedTableSettings.scss';\nconst block = cn('replicated-table-settings');\n\ninterface Props {\n replica_cluster: string;\n replica_path: string;\n state: 'enabled' | 'disabled';\n mode: 'sync' | 'async';\n auto_replica_tracker: 'enabled' | 'disabled';\n\n onApply: (modeState: Pick<Props, 'mode' | 'state' | 'auto_replica_tracker'>) => Promise<void>;\n}\n\nexport function ReplicatedTableSettingsButton(props: Props) {\n const [visible, setVisible] = React.useState(false);\n\n const toggleVisibility = React.useCallback(() => {\n setVisible(!visible);\n }, [visible, setVisible]);\n\n return (\n <React.Fragment>\n <Button onClick={toggleVisibility} view={'flat-secondary'} size={'s'}>\n <Icon awesome={'pencil-alt'} />\n </Button>\n <ReplicatedTableSettingsDialog\n {...props}\n onClose={toggleVisibility}\n visible={visible}\n />\n </React.Fragment>\n );\n}\n\ninterface SettingsProps {\n visible: boolean;\n onClose: () => void;\n}\n\ninterface FormValues {\n cluster: string;\n path: string;\n state: 'enabled' | 'disabled';\n mode: 'async' | 'sync';\n auto_replica_tracker: 'enabled' | 'disabled';\n}\n\nfunction ReplicatedTableSettingsDialog(props: Props & SettingsProps) {\n const [error, setError] = React.useState<YTError | null>(null);\n const handleApply = React.useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n const {\n values: {mode, state, auto_replica_tracker},\n } = form.getState();\n return props.onApply({mode, state, auto_replica_tracker}).catch((e) => {\n setError(e);\n return Promise.reject(e);\n });\n },\n [props.mode, props.state, props.onApply, setError],\n );\n return (\n <YTDFDialog<FormValues>\n visible={props.visible}\n onAdd={handleApply}\n onClose={props.onClose}\n headerProps={{\n title: 'Replica settings',\n }}\n initialValues={{\n cluster: capitalize_(props.replica_cluster),\n path: props.replica_path,\n state: props.state,\n mode: props.mode,\n auto_replica_tracker: props.auto_replica_tracker,\n }}\n fields={[\n {\n type: 'plain',\n name: 'cluster',\n caption: 'Replica cluster',\n },\n {\n type: 'plain',\n name: 'path',\n caption: 'Replica path',\n },\n {\n type: 'radio',\n name: 'state',\n caption: 'State',\n extras: {\n size: 's',\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n {\n type: 'radio',\n name: 'mode',\n caption: 'Mode',\n extras: {\n size: 's',\n options: [\n {value: 'async', label: 'Async'},\n {value: 'sync', label: 'Sync'},\n ],\n },\n },\n {\n type: 'radio',\n name: 'auto_replica_tracker',\n caption: 'Automatic mode switch',\n extras: {\n options: [\n {value: 'enabled', label: 'Enabled'},\n {value: 'disabled', label: 'Disabled'},\n ],\n },\n },\n ...(!error\n ? []\n : [\n {\n type: 'block' as const,\n name: 'error',\n extras: {\n children: (\n <div className={block('error')}>\n <Error error={error} />\n </div>\n ),\n },\n },\n ]),\n ]}\n />\n );\n}\n","import reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\n\nimport {createSelector} from 'reselect';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getNavigationReplicatedTableLoadingStatus = createSelector(\n [\n (store: RootState) => store.navigation.content.replicatedTable.loading,\n (store: RootState) => store.navigation.content.replicatedTable.loaded,\n (store: RootState) => store.navigation.content.replicatedTable.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getReplicatedTableReplicas = (state: RootState) =>\n state.navigation.content.replicatedTable.replicas;\n\nexport const getReplicatedTableData = (state: RootState) =>\n state.navigation.content.replicatedTable;\n\nexport const getAllowEnableReplicatedTracker = createSelector(\n [getReplicatedTableReplicas],\n (replicas) => {\n return some_(replicas, (item) => {\n return Boolean(ypath.getValue(item, '/@replicated_table_tracker_enabled'));\n });\n },\n);\n\nexport const getReplicatedTableReplicasMap = createSelector(\n [getReplicatedTableReplicas],\n (replicas) => {\n return reduce_(\n replicas,\n (acc, {$value, $attributes}) => {\n acc[$value] = {\n error_count: ypath.getNumberDeprecated($attributes, '/error_count'),\n cluster_name: ypath.getValue($attributes, '/cluster_name'),\n mode: ypath.getValue($attributes, '/mode'),\n replica_path: ypath.getValue($attributes, '/replica_path'),\n replicated_table_tracker_enabled: ypath.getBoolean(\n $attributes,\n '/replicated_table_tracker_enabled',\n ),\n replication_lag_time: ypath.getNumberDeprecated(\n $attributes,\n '/replication_lag_time',\n ),\n state: ypath.getValue($attributes, '/state'),\n };\n return acc;\n },\n {} as Record<\n string,\n | {\n error_count: number;\n cluster_name: string;\n mode: string;\n replica_path: string;\n replicated_table_tracker_enabled: boolean;\n replication_lag_time: number;\n state: string;\n }\n | undefined\n >,\n );\n },\n);\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport TableActions from '../../../../pages/navigation/content/Table/TableOverview/TableActions';\nimport TableMeta from '../../../../pages/navigation/content/Table/TableMeta/TableMeta';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport StatusBulb from '../../../../components/StatusBulb/StatusBulb';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\n\nimport {\n abortAndReset,\n loadReplicas,\n performReplicaAction,\n updateEnableReplicatedTableTracker,\n} from '../../../../store/actions/navigation/content/replicated-table';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {HEADER_HEIGHT, Page} from '../../../../constants/index';\n\nimport {ReplicatedTableSettingsButton} from './ReplicatedTableSettings';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport {\n getAllowEnableReplicatedTracker,\n getNavigationReplicatedTableLoadingStatus,\n getReplicatedTableData,\n} from '../../../../store/selectors/navigation/content/replicated-table';\n\nimport './ReplicatedTable.scss';\nimport {CypressNodeTypes} from '../../../../utils/cypress-attributes';\n\nconst block = cn('navigation-replicated-table');\n\nconst tableSets = {\n default: {\n items: [\n 'name',\n 'cluster',\n 'mode',\n 'error_count',\n 'replication_lag_time',\n 'state',\n 'actions',\n ],\n },\n 'with-auto-switch': {\n items: [\n 'name',\n 'cluster',\n 'mode',\n 'error_count',\n 'replication_lag_time',\n 'automatic_mode_switch',\n 'state',\n 'actions',\n ],\n },\n};\n\nclass ReplicatedTable extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object,\n\n path: PropTypes.string.isRequired,\n replicas: PropTypes.array.isRequired,\n attributes: PropTypes.object.isRequired,\n\n loadReplicas: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n performReplicaAction: PropTypes.func.isRequired,\n type: PropTypes.string.isRequired,\n };\n\n static tableItems = {\n name: {\n align: 'left',\n caption: 'Id / Path',\n sort: false,\n },\n cluster: {\n align: 'left',\n sort: false,\n get(replica) {\n return ypath.getValue(replica, '/@cluster_name');\n },\n },\n mode: {\n align: 'left',\n sort: false,\n get(replica) {\n return ypath.getValue(replica, '/@mode');\n },\n },\n error_count: {\n align: 'center',\n caption: 'Error count',\n get(replica) {\n return ypath.getValue(replica, '/@error_count');\n },\n },\n errors: {\n align: 'left',\n get(replica) {\n return ypath.getValue(replica, '/@errors');\n },\n },\n replication_lag_time: {\n align: 'right',\n get(replica) {\n return ypath.getValue(replica, '/@replication_lag_time');\n },\n },\n state: {\n align: 'center',\n get(replica) {\n return ypath.getValue(replica, '/@state');\n },\n },\n automatic_mode_switch: {\n align: 'center',\n caption: 'Replicated table tracker',\n get(replica) {\n const flag = ypath.getValue(replica, '/@replicated_table_tracker_enabled');\n return flag === 'true' || flag === true;\n },\n },\n actions: {\n align: 'center',\n caption: '',\n },\n };\n\n static renderField(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return !value ? hammer.format.NO_VALUE : value;\n }\n\n static renderAsReadableField(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return hammer.format['ReadableField'](value);\n }\n\n static renderAsTimeDuration(item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n\n return hammer.format['TimeDuration'](Number(value));\n }\n\n static renderName(replica) {\n const value = ypath.getValue(replica, '');\n const attributes = ypath.getValue(replica, '/@');\n const [path, cluster] = ypath.getValues(attributes, ['/replica_path', '/cluster_name']);\n const copy = {\n pathTitle: 'Copy replica path',\n idTitle: 'Copy replica id',\n };\n\n const replicaLink = <Link url={`/${cluster}/${Page.NAVIGATION}?path=${path}`}>{path}</Link>;\n\n return (\n <div>\n <span className=\"elements-ellipsis elements-monospace\">\n <ClipboardButton\n text={value}\n view=\"flat-secondary\"\n size=\"s\"\n title={copy.idTitle}\n />\n {value}\n </span>\n <br />\n <span className=\"elements-ellipsis elements-secondary-text\">\n <ClipboardButton\n text={path}\n view=\"flat-secondary\"\n size=\"s\"\n title={copy.pathTitle}\n />{' '}\n Path {replicaLink}\n </span>\n </div>\n );\n }\n\n static renderErrors() {\n return hammer.format.NO_VALUE; // No more supported by server\n }\n\n static renderState(item, columnName) {\n const state = ReplicatedTable.tableItems[columnName].get(item);\n\n return <StatusBulb theme={state} />;\n }\n\n static renderAutomaticModeSwitch(enableTableTracker, item, columnName) {\n const value = ReplicatedTable.tableItems[columnName].get(item);\n const theme = !enableTableTracker ? 'unknown' : value ? 'enabled' : 'disabled';\n const title = value ? 'Enabled' : 'Disabled';\n return (\n <Tooltip content={enableTableTracker ? title : 'Disabled by table settings'}>\n <StatusBulb theme={theme} className={block('auto-switch', {})} />\n {!enableTableTracker && (\n <Icon\n color=\"secondary\"\n awesome=\"question-circle\"\n className={block('info-icon')}\n />\n )}\n </Tooltip>\n );\n }\n\n componentDidMount() {\n this.props.loadReplicas();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.path !== this.props.path) {\n this.props.loadReplicas();\n }\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n get tableSettings() {\n const {loading, loaded, tableMode, enable_replicated_table_tracker} = this.props;\n\n return {\n css: block(),\n theme: 'light',\n size: 's',\n striped: false,\n itemHeight: 65,\n isLoading: loading && !loaded,\n columns: {\n items: ReplicatedTable.tableItems,\n sets: tableSets,\n mode: tableMode,\n },\n templates: {\n name: ReplicatedTable.renderName,\n cluster: ReplicatedTable.renderField,\n mode: ReplicatedTable.renderField,\n errors: ReplicatedTable.renderErrors,\n error_count: ReplicatedTable.renderAsReadableField,\n state: ReplicatedTable.renderState,\n automatic_mode_switch: ReplicatedTable.renderAutomaticModeSwitch.bind(\n null,\n enable_replicated_table_tracker,\n ),\n replication_lag_time: ReplicatedTable.renderAsTimeDuration,\n actions: this.renderActions,\n },\n computeKey(item) {\n return item.$value;\n },\n };\n }\n\n renderActions = (replica) => {\n const {attributes, performReplicaAction} = this.props;\n const replicaValue = ypath.getValue(replica, '');\n const replicaAttributes = ypath.getValue(replica, '/@');\n\n const isAsync = replicaAttributes.mode === 'async';\n const atomicity = attributes?.atomicity;\n const replicaData = {\n caption: replicaValue,\n attributes:\n isAsync && atomicity ? {...replicaAttributes, atomicity} : replicaAttributes,\n };\n\n const onApply = (modeState) => {\n return performReplicaAction({...modeState, replica});\n };\n\n const replicatedTableTracker = ypath.getValue(\n replica,\n '/@replicated_table_tracker_enabled',\n );\n\n return (\n <span>\n <ClickableAttributesButton\n title={replicaData.caption}\n attributes={replicaData.attributes}\n withTooltip\n />\n <ReplicatedTableSettingsButton\n replica_cluster={ypath.getValue(replica, '/@cluster_name')}\n replica_path={ypath.getValue(replica, '/@replica_path')}\n state={ypath.getValue(replica, '/@state')}\n mode={ypath.getValue(replica, '/@mode')}\n auto_replica_tracker={\n replicatedTableTracker === 'true' || replicatedTableTracker === true\n ? 'enabled'\n : 'disabled'\n }\n onApply={onApply}\n />\n </span>\n );\n };\n\n updateEnableReplicatedTableTracker = (value) => {\n const {updateEnableReplicatedTableTracker, path} = this.props;\n return updateEnableReplicatedTableTracker(path, value);\n };\n\n render() {\n const {replicas, type} = this.props;\n const hasActions = type !== CypressNodeTypes.CHAOS_REPLICATED_TABLE;\n\n return (\n <LoadDataHandler {...this.props}>\n <div className={block()}>\n <TableMeta\n onEditEnableReplicatedTableTracker={this.updateEnableReplicatedTableTracker}\n />\n\n <StickyContainer>\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n })}\n >\n {hasActions && <TableActions block={block} />}\n </div>\n )}\n </Sticky>\n </StickyContainer>\n\n <ElementsTable {...this.tableSettings} items={replicas} />\n </div>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, replicas} = getReplicatedTableData(state);\n const allowEnableReplicatedTracker = getAllowEnableReplicatedTracker(state);\n const path = getPath(state);\n const attributes = getAttributes(state);\n\n const [enable_replicated_table_tracker, type] = ypath.getValues(attributes, [\n '/replicated_table_options/enable_replicated_table_tracker',\n '/type',\n ]);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n replicas,\n attributes,\n tableMode: allowEnableReplicatedTracker ? 'with-auto-switch' : 'default',\n enable_replicated_table_tracker,\n type,\n };\n};\n\nconst mapDispatchToProps = {\n loadReplicas,\n abortAndReset,\n performReplicaAction,\n updateEnableReplicatedTableTracker,\n};\n\nconst ReplicatedTableConnected = connect(mapStateToProps, mapDispatchToProps)(ReplicatedTable);\n\nexport default function ReplicatedTableWithRum() {\n const loadState = useSelector(getNavigationReplicatedTableLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_REPLICATED_TABLE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_REPLICATED_TABLE,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <ReplicatedTableConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {updateEnableReplicatedTableTracker} from '../../../../store/actions/navigation/content/replicated-table';\n\nimport './ReplicatedTable.scss';\nimport TableMeta from '../Table/TableMeta/TableMeta';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nconst block = cn('navigation-replicated-table');\n\nexport default function ReplicatedTableMeta() {\n const path = useSelector(getPath);\n const dispatch = useDispatch();\n\n const onEdit = (value?: boolean) => {\n return dispatch(\n updateEnableReplicatedTableTracker(path, value),\n ) as unknown as Promise<void>;\n };\n\n return (\n <div className={block()}>\n <TableMeta onEditEnableReplicatedTableTracker={onEdit} />\n </div>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport PropTypes from 'prop-types';\nimport {connect, useSelector} from 'react-redux';\n\nimport {main} from '../../../../components/MetaTable/presets';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\n\nimport {getAttributesWithTypes, getLoadState} from '../../../../store/selectors/navigation';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nconst block = cn('navigation-link');\n\nfunction Link({attributes}) {\n const [targetPath, broken] = ypath.getValues(attributes, ['/target_path', '/broken']);\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n main(attributes),\n [\n {key: 'target_path', value: targetPath},\n {key: 'broken', value: broken},\n ],\n ]}\n />\n </div>\n );\n}\n\nLink.propTypes = {\n // from connect\n attributes: PropTypes.object.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const attributes = getAttributesWithTypes(state);\n\n return {attributes};\n};\n\nconst LinkConnected = connect(mapStateToProps)(Link);\n\nexport default function LinkWithRum() {\n const loadState = useSelector(getLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_LINK,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_LINK,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <LinkConnected />;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {createSelector} from 'reselect';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getCurrentClusterConfig} from '../../../../store/selectors/global';\nimport {MAX_FILE_SIZE} from '../../../../constants/navigation/content/file';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\nimport {makeDirectDownloadPath} from '../../../../utils/navigation';\n\nexport const getDownloadPath = createSelector(\n [getPath, getCurrentClusterConfig],\n (cypressPath, {id: cluster, proxy, externalProxy}) => {\n const path = makeDirectDownloadPath('read_file', {cluster, proxy, externalProxy});\n const query = [\n 'path=' + encodeURIComponent(cypressPath),\n 'disposition=attachment',\n 'dump_error_into_response=true',\n ].join('&');\n\n return path + '?' + query;\n },\n);\n\nexport const getIsEmpty = createSelector(getAttributes, (attributes) => {\n return ypath.getValue(attributes, '/resource_usage/disk_space') === 0;\n});\n\nexport const getIsTooBig = createSelector(getAttributes, (attributes) => {\n return ypath.getValue(attributes, '/uncompressed_data_size') > MAX_FILE_SIZE;\n});\n\nexport const getNavigationFileLoadingStatus = createSelector(\n [\n (store) => store.navigation.content.file.loading,\n (store) => store.navigation.content.file.loaded,\n (store) => store.navigation.content.file.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {LOAD_FILE, MAX_FILE_SIZE} from '../../../../constants/navigation/content/file';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function loadFile() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_FILE.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3\n .readFile({\n parameters: prepareRequest({path, transaction, length: MAX_FILE_SIZE}),\n cancellation: requests.saveCancelToken,\n })\n .then((file) => {\n dispatch({\n type: LOAD_FILE.SUCCESS,\n data: {file},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_FILE.CANCELLED});\n } else {\n dispatch({\n type: LOAD_FILE.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_FILE.CANCELLED});\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getCluster} from '../../store/selectors/global';\nimport {getPath, getType} from '../../store/selectors/navigation';\nimport {getNavigationPathAttributes} from '../../store/selectors/navigation/navigation';\nimport UIFactory from '../../UIFactory';\n\nfunction NavigationExtraActions({className}: {className?: string}) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n const type = useSelector(getType);\n const attributes = useSelector(getNavigationPathAttributes);\n\n return (\n <>\n {UIFactory.renderNavigationExtraActions({\n className,\n path,\n cluster,\n type,\n attributes,\n })}\n </>\n );\n}\n\nexport default React.memo(NavigationExtraActions);\n","import React, {Fragment, useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {\n compression,\n erasureReplication,\n main,\n size,\n} from '../../../../components/MetaTable/presets';\nimport {Button, Loader} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n getDownloadPath,\n getIsEmpty,\n getIsTooBig,\n getNavigationFileLoadingStatus,\n} from '../../../../store/selectors/navigation/content/file';\nimport {abortAndReset, loadFile} from '../../../../store/actions/navigation/content/file';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './File.scss';\nimport NavigationExtraActions from '../../../../containers/NavigationExtraActions/NavigationExtraActions';\n\nconst block = cn('navigation-file');\nconst messageBlock = cn('elements-message');\nconst codeBlock = cn('elements-code');\n\nconst renderMeta = (attributes, mediumList) => {\n return (\n <MetaTable\n items={[\n main(attributes),\n size(attributes, mediumList),\n [...compression(attributes), ...erasureReplication(attributes)],\n ]}\n />\n );\n};\n\nconst renderActions = (downloadPath) => {\n return (\n <div className={block('actions')}>\n <Button className={block('download')} href={downloadPath} target=\"_blank\">\n Download\n </Button>\n <NavigationExtraActions />\n </div>\n );\n};\n\nconst renderEmptyWarning = () => {\n return (\n <div className={messageBlock({theme: 'warning'})}>\n <p className={messageBlock('paragraph')}>File is empty.</p>\n </div>\n );\n};\n\nconst renderTooBigInfo = (downloadPath) => {\n return (\n <div className={messageBlock({theme: 'info'})}>\n <p className={messageBlock('paragraph')}>\n The file is too big to be fully shown here. You can{' '}\n <Link url={downloadPath} target=\"_blank\">\n download\n </Link>{' '}\n it.\n </p>\n </div>\n );\n};\n\nconst renderContent = (file, isTooBig, downloadPath) => {\n return (\n <Fragment>\n <pre className={codeBlock({theme: 'default'})}>{file}</pre>\n\n {isTooBig && renderTooBigInfo(downloadPath)}\n </Fragment>\n );\n};\n\nfunction File(props) {\n const {path, mode, loadFile, abortAndReset} = props;\n useEffect(() => {\n loadFile();\n return abortAndReset;\n }, [path, mode]);\n\n const {loading, loaded, attributes, mediumList, downloadPath, isEmpty, isTooBig, file} = props;\n const initialLoading = loading && !loaded;\n return (\n <LoadDataHandler {...props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <Fragment>\n {renderMeta(attributes, mediumList)}\n {renderActions(downloadPath)}\n {isEmpty\n ? renderEmptyWarning()\n : renderContent(file, isTooBig, downloadPath)}\n </Fragment>\n )}\n </div>\n </LoadDataHandler>\n );\n}\n\nFile.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n file: PropTypes.string,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n isEmpty: PropTypes.bool.isRequired,\n isTooBig: PropTypes.bool.isRequired,\n attributes: PropTypes.object.isRequired,\n downloadPath: PropTypes.string.isRequired,\n mediumList: PropTypes.arrayOf(PropTypes.string.isRequired).isRequired,\n\n loadFile: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n};\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, file} = state.navigation.content.file;\n const {mediumList} = state.global;\n\n const downloadPath = getDownloadPath(state);\n const attributes = getAttributes(state);\n const isTooBig = getIsTooBig(state);\n const isEmpty = getIsEmpty(state);\n const path = getPath(state);\n const mode = getEffectiveMode(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n mediumList,\n attributes,\n path,\n mode,\n isEmpty,\n isTooBig,\n downloadPath,\n file,\n };\n};\nconst mapDispatchToProps = {\n loadFile,\n abortAndReset,\n};\n\nconst FileConnected = connect(mapStateToProps, mapDispatchToProps)(File);\n\nexport default function FileWithRum() {\n const loadState = useSelector(getNavigationFileLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_FILE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_FILE,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <FileConnected />;\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\nimport DataTable from '@gravity-ui/react-data-table';\nimport {Loader} from '@gravity-ui/uikit';\nimport {getSettingTableDisplayRawStrings} from '../../../../../store/selectors/settings';\nimport {getSchemaByName} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {showCellPreviewModal} from '../../../../../store/actions/navigation/modals/cell-preview';\nimport {prepareColumns} from '../../../../../utils/navigation/prepareColumns';\n\nimport './DataTableWrapper.scss';\n\nconst block = cn('data-table-wrapper');\n\nconst rowKey = (row, index) => index;\n\nDataTableWrapper.propTypes = {\n isFullScreen: PropTypes.bool.isRequired,\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n columns: PropTypes.array.isRequired,\n keyColumns: PropTypes.arrayOf(PropTypes.string),\n ysonSettings: PropTypes.object,\n yqlTypes: PropTypes.array,\n};\n\nexport default function DataTableWrapper(props) {\n const dispatch = useDispatch();\n const useRawStrings = useSelector(getSettingTableDisplayRawStrings);\n const schemaByName = useSelector(getSchemaByName);\n\n const {columns, keyColumns, ysonSettings, yqlTypes, loading, loaded, isFullScreen, ...rest} =\n props;\n\n const onShowPreview = React.useCallback(\n (columnName, rowIndex, tag) => {\n dispatch(showCellPreviewModal(columnName, rowIndex, tag));\n },\n [dispatch],\n );\n const dtColumns = prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n });\n const initialLoading = loading && !loaded;\n const updating = loading && loaded;\n\n React.useEffect(() => {\n if (!loading && loaded && rest.data.length > 0) {\n setTimeout(\n () =>\n requestAnimationFrame(() => {\n window.dispatchEvent(new Event('resize'));\n }),\n 300,\n );\n }\n }, [loading, loaded, rest.data.length]);\n\n return (\n <div\n className={block({\n fullscreen: isFullScreen,\n loading: initialLoading,\n updating,\n })}\n >\n {updating && (\n <div className={block('updating-loader')}>\n <Loader />\n </div>\n )}\n {initialLoading ? (\n <Loader />\n ) : (\n <DataTable theme=\"yt-internal\" columns={dtColumns} rowKey={rowKey} {...rest} />\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport Button, {ButtonProps} from '../../../../../components/Button/Button';\nimport {\n openTableWithPresetOfColumns,\n rememberPresetColumnsAsDefault,\n} from '../../../../../store/actions/navigation/content/table/table';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {getColumnsPresetHash} from '../../../../../store/selectors/navigation/content/table-ts';\n\ntype Props = Required<Pick<ButtonProps, 'view' | 'disabled'>>;\n\nfunction SharePresetButton(props: Props) {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n dispatch(openTableWithPresetOfColumns());\n }, [dispatch]);\n\n return (\n <Tooltip content={'Share current set of columns for the table'}>\n <Button\n {...props}\n pin={'clear-round'}\n onClick={handleClick}\n qa=\"table-columns-share-button\"\n >\n <Icon awesome={'share'} />\n </Button>\n </Tooltip>\n );\n}\n\nfunction SavePresetButton(props: Props) {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n dispatch(rememberPresetColumnsAsDefault());\n }, [dispatch]);\n\n return (\n <Tooltip content={'Remember columns for the table'}>\n <Button {...props} pin={'clear-round'} onClick={handleClick}>\n <Icon awesome={'save'} />\n </Button>\n </Tooltip>\n );\n}\n\nfunction ColumnsPresetButton(props: Props) {\n const hash = useSelector(getColumnsPresetHash);\n\n return hash ? <SavePresetButton {...props} /> : <SharePresetButton {...props} />;\n}\n\nexport default React.memo(ColumnsPresetButton);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\n\nimport {openColumnSelectorModal} from '../../../../../store/actions/navigation/content/table/table';\nimport {\n getAllColumns,\n getVisibleColumns,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {getSchemaStrict} from '../../../../../store/selectors/navigation/tabs/schema';\nimport {Secondary} from '../../../../../components/Text/Text';\nimport ColumnsPresetButton from './ColumnsPresetButton';\nimport {RootState} from '../../../../../store/reducers';\nimport {getConfigData} from '../../../../../config/ui-settings';\n\nColumnSelectorButton.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n visibleColumns: PropTypes.array.isRequired,\n allColumns: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n\n openColumnSelectorModal: PropTypes.func.isRequired,\n};\n\nconst actionStyle = {marginRight: 1};\n\ninterface Props {\n loading?: boolean;\n isStrict?: boolean;\n allColumns: Array<unknown>;\n visibleColumns: Array<unknown>;\n openColumnSelectorModal: () => void;\n}\n\nfunction ColumnSelectorButton({\n loading,\n isStrict,\n allColumns,\n visibleColumns,\n openColumnSelectorModal,\n}: Props) {\n const allowPickColumns = !loading || isStrict;\n const showAllColumns = allColumns.length === visibleColumns.length;\n const view = showAllColumns ? 'outlined' : 'action';\n\n const {allowUserColumnPresets} = getConfigData();\n return (\n <React.Fragment>\n <Button\n size=\"m\"\n disabled={!allowPickColumns}\n title=\"Choose columns\"\n onClick={openColumnSelectorModal}\n view={view}\n pin={allowUserColumnPresets ? 'round-brick' : 'round-round'}\n style={showAllColumns ? undefined : actionStyle}\n qa=\"table-columns-button\"\n >\n <Icon awesome=\"filter\" face=\"solid\" />\n Columns\n <Secondary disabled={!showAllColumns}>\n {' '}\n {visibleColumns.length + '/' + allColumns.length}\n </Secondary>\n </Button>\n {allowUserColumnPresets && (\n <ColumnsPresetButton view={view} disabled={!allowPickColumns} />\n )}\n </React.Fragment>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading} = state.navigation.content.table;\n\n const visibleColumns = getVisibleColumns(state);\n const allColumns = getAllColumns(state);\n const isStrict = getSchemaStrict(state);\n\n return {visibleColumns, loading, allColumns, isStrict};\n};\n\nconst mapDispatchToProps = {\n openColumnSelectorModal,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ColumnSelectorButton);\n","/* eslint-disable promise/prefer-await-to-then */\n\nconst methodMap = [\n\t[\n\t\t'requestFullscreen',\n\t\t'exitFullscreen',\n\t\t'fullscreenElement',\n\t\t'fullscreenEnabled',\n\t\t'fullscreenchange',\n\t\t'fullscreenerror',\n\t],\n\t// New WebKit\n\t[\n\t\t'webkitRequestFullscreen',\n\t\t'webkitExitFullscreen',\n\t\t'webkitFullscreenElement',\n\t\t'webkitFullscreenEnabled',\n\t\t'webkitfullscreenchange',\n\t\t'webkitfullscreenerror',\n\n\t],\n\t// Old WebKit\n\t[\n\t\t'webkitRequestFullScreen',\n\t\t'webkitCancelFullScreen',\n\t\t'webkitCurrentFullScreenElement',\n\t\t'webkitCancelFullScreen',\n\t\t'webkitfullscreenchange',\n\t\t'webkitfullscreenerror',\n\n\t],\n\t[\n\t\t'mozRequestFullScreen',\n\t\t'mozCancelFullScreen',\n\t\t'mozFullScreenElement',\n\t\t'mozFullScreenEnabled',\n\t\t'mozfullscreenchange',\n\t\t'mozfullscreenerror',\n\t],\n\t[\n\t\t'msRequestFullscreen',\n\t\t'msExitFullscreen',\n\t\t'msFullscreenElement',\n\t\t'msFullscreenEnabled',\n\t\t'MSFullscreenChange',\n\t\t'MSFullscreenError',\n\t],\n];\n\nconst nativeAPI = (() => {\n\tif (typeof document === 'undefined') {\n\t\treturn false;\n\t}\n\n\tconst unprefixedMethods = methodMap[0];\n\tconst returnValue = {};\n\n\tfor (const methodList of methodMap) {\n\t\tconst exitFullscreenMethod = methodList?.[1];\n\t\tif (exitFullscreenMethod in document) {\n\t\t\tfor (const [index, method] of methodList.entries()) {\n\t\t\t\treturnValue[unprefixedMethods[index]] = method;\n\t\t\t}\n\n\t\t\treturn returnValue;\n\t\t}\n\t}\n\n\treturn false;\n})();\n\nconst eventNameMap = {\n\tchange: nativeAPI.fullscreenchange,\n\terror: nativeAPI.fullscreenerror,\n};\n\n// eslint-disable-next-line import/no-mutable-exports\nlet screenfull = {\n\t// eslint-disable-next-line default-param-last\n\trequest(element = document.documentElement, options) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst onFullScreenEntered = () => {\n\t\t\t\tscreenfull.off('change', onFullScreenEntered);\n\t\t\t\tresolve();\n\t\t\t};\n\n\t\t\tscreenfull.on('change', onFullScreenEntered);\n\n\t\t\tconst returnPromise = element[nativeAPI.requestFullscreen](options);\n\n\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\treturnPromise.then(onFullScreenEntered).catch(reject);\n\t\t\t}\n\t\t});\n\t},\n\texit() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!screenfull.isFullscreen) {\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst onFullScreenExit = () => {\n\t\t\t\tscreenfull.off('change', onFullScreenExit);\n\t\t\t\tresolve();\n\t\t\t};\n\n\t\t\tscreenfull.on('change', onFullScreenExit);\n\n\t\t\tconst returnPromise = document[nativeAPI.exitFullscreen]();\n\n\t\t\tif (returnPromise instanceof Promise) {\n\t\t\t\treturnPromise.then(onFullScreenExit).catch(reject);\n\t\t\t}\n\t\t});\n\t},\n\ttoggle(element, options) {\n\t\treturn screenfull.isFullscreen ? screenfull.exit() : screenfull.request(element, options);\n\t},\n\tonchange(callback) {\n\t\tscreenfull.on('change', callback);\n\t},\n\tonerror(callback) {\n\t\tscreenfull.on('error', callback);\n\t},\n\ton(event, callback) {\n\t\tconst eventName = eventNameMap[event];\n\t\tif (eventName) {\n\t\t\tdocument.addEventListener(eventName, callback, false);\n\t\t}\n\t},\n\toff(event, callback) {\n\t\tconst eventName = eventNameMap[event];\n\t\tif (eventName) {\n\t\t\tdocument.removeEventListener(eventName, callback, false);\n\t\t}\n\t},\n\traw: nativeAPI,\n};\n\nObject.defineProperties(screenfull, {\n\tisFullscreen: {\n\t\tget: () => Boolean(document[nativeAPI.fullscreenElement]),\n\t},\n\telement: {\n\t\tenumerable: true,\n\t\tget: () => document[nativeAPI.fullscreenElement] ?? undefined,\n\t},\n\tisEnabled: {\n\t\tenumerable: true,\n\t\t// Coerce to boolean in case of old WebKit.\n\t\tget: () => Boolean(document[nativeAPI.fullscreenEnabled]),\n\t},\n});\n\nif (!nativeAPI) {\n\tscreenfull = {isEnabled: false};\n}\n\nexport default screenfull;\n","import React, {useEffect, useRef} from 'react';\nimport screenfull from 'screenfull';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nconst block = cn('fullscreen');\n\nFullScreen.propTypes = {\n children: PropTypes.node.isRequired,\n enabled: PropTypes.bool.isRequired,\n className: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nexport default function FullScreen({enabled = false, children, className, onChange = () => {}}) {\n const container = useRef(null);\n\n const toggleScreen = () => {\n if (screenfull.isFullscreen && !enabled) {\n screenfull.exit();\n } else if (!screenfull.isFullscreen && enabled) {\n screenfull.request(container.current);\n }\n };\n\n const callback = () => onChange(screenfull.isFullscreen);\n const listenScreenChange = () => {\n if (!isFullScreenAllowed()) {\n return;\n }\n\n screenfull.on('change', callback);\n return () => {\n screenfull.off('change', callback);\n };\n };\n\n useEffect(toggleScreen, [enabled]);\n useEffect(listenScreenChange);\n\n return (\n <div className={block({enabled}, className)} ref={container}>\n {children}\n </div>\n );\n}\n\nexport function isFullScreenAllowed() {\n const {isEnabled, on} = screenfull || {};\n return isEnabled && 'function' === typeof on;\n}\n","import React, {useEffect} from 'react';\nimport {connect} from 'react-redux';\nimport PropTypes from 'prop-types';\n\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {toggleFullScreen} from '../../../../../store/actions/navigation/content/table/table';\nimport {isFullScreenAllowed} from '../../../../../components/FullScreen/FullScreen';\n\nFullScreenButton.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n\n // from connect\n isFullScreen: PropTypes.bool.isRequired,\n toggleFullScreen: PropTypes.func.isRequired,\n};\n\nfunction FullScreenButton({block, toggleFullScreen, isFullScreen}) {\n useEffect(() => {\n // Sets correct isSticky flag value from the <Sticky/> component after exit from fullscreen mode ¯\\_(ツ)_/¯\n const dispatchScrollEvent = () => window.dispatchEvent(new Event('scroll'));\n setTimeout(dispatchScrollEvent, 100);\n }, [isFullScreen]);\n\n return (\n isFullScreenAllowed() && (\n <div className={block('fs-button', {fullscreen: isFullScreen})}>\n <Button size=\"m\" title=\"Toggle full screen\" onClick={toggleFullScreen}>\n <Icon awesome={isFullScreen ? 'compress' : 'expand'} />\n </Button>\n </div>\n )\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isFullScreen} = state.navigation.content.table;\n\n return {isFullScreen};\n};\n\nconst mapDispatchToProps = {\n toggleFullScreen,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(FullScreenButton);\n","import React, {ComponentProps, VFC} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport type cn from 'bem-cn-lite';\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport Dropdown from '../../../../../components/Dropdown/Dropdown';\nimport Button from '../../../../../components/Button/Button';\nimport Icon from '../../../../../components/Icon/Icon';\n\nimport {\n cellSizeRadioButtonItems,\n pageSizeRadioButtonItems,\n} from '../../../../../constants/navigation/content/table';\nimport {\n changeCellSize,\n changePageSize,\n} from '../../../../../store/actions/navigation/content/table/table';\nimport {getCellSize, getPageSize} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getSettingTableDisplayRawStrings} from '../../../../../store/selectors/settings';\nimport {setTableDisplayRawStrings} from '../../../../../store/actions/settings/settings';\nimport type {RootState} from '../../../../../store/reducers';\n\ninterface Props extends ConnectedProps<typeof connector> {\n block: ReturnType<typeof cn>;\n}\n\nconst SettingsButton: VFC<Props> = ({\n block,\n pageSize,\n changePageSize,\n cellSize,\n changeCellSize,\n allowRawStrings,\n setTableDisplayRawStrings,\n}) => {\n const stringLimitProps: ComponentProps<typeof RadioButton> = {\n size: 'm',\n name: 'table-string-limit',\n value: String(cellSize),\n items: cellSizeRadioButtonItems,\n onChange(evt) {\n const value = Number(evt.target.value);\n changeCellSize(value);\n },\n };\n\n const pageSizeProps: ComponentProps<typeof RadioButton> = {\n size: 'm',\n name: 'table-page-size',\n value: String(pageSize),\n items: pageSizeRadioButtonItems,\n onChange(evt) {\n const value = Number(evt.target.value);\n changePageSize(value);\n },\n };\n\n return (\n <Dropdown\n trigger=\"click\"\n className={block('settings')}\n button={\n <Button size=\"m\" title=\"settings\">\n <Icon awesome=\"cog\" face=\"solid\" />\n </Button>\n }\n template={\n <div className={block('settings-modal')}>\n <div className=\"elements-form__label\">Rows per page</div>\n <div className=\"elements-form__field\">\n <RadioButton {...pageSizeProps} />\n </div>\n <div className=\"elements-form__label\">Cell size limit</div>\n <div className=\"elements-form__field\">\n <RadioButton {...stringLimitProps} />\n </div>\n <div className=\"elements-form__field\">\n <Checkbox\n checked={allowRawStrings}\n onChange={(evt) => {\n setTableDisplayRawStrings(evt.target.checked);\n }}\n >\n Allow raw strings\n </Checkbox>\n </div>\n </div>\n }\n />\n );\n};\n\nconst mapStateToProps = (state: RootState) => {\n const {isFullScreen} = state.navigation.content.table;\n const pageSize = getPageSize(state);\n const cellSize = getCellSize(state);\n\n const allowRawStrings = getSettingTableDisplayRawStrings(state);\n\n return {pageSize, cellSize, isFullScreen, allowRawStrings};\n};\n\nconst mapDispatchToProps = {\n changePageSize,\n changeCellSize,\n setTableDisplayRawStrings,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(SettingsButton);\n","const SvgJupyterLogo = props => <svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 44 51\" {...props}><g style={{\n mixBlendMode: \"normal\"\n }}><use xlinkHref=\"#jupyter-logo_svg__a\" fill=\"#F37726\" style={{\n mixBlendMode: \"normal\"\n }} transform=\"translate(3.21 31.27)\" /><use xlinkHref=\"#jupyter-logo_svg__b\" fill=\"#F37726\" style={{\n mixBlendMode: \"normal\"\n }} transform=\"translate(3.21 4.88)\" /></g><defs><path id=\"jupyter-logo_svg__a\" d=\"M18.696 7.122C10.684 7.122 3.641 4.247 0 0a19.934 19.934 0 0 0 37.392 0C33.76 4.247 26.744 7.122 18.696 7.122\" /><path id=\"jupyter-logo_svg__b\" d=\"M18.696 5.897c8.013 0 15.055 2.876 18.696 7.123A19.934 19.934 0 0 0 0 13.02c3.641-4.256 10.648-7.123 18.696-7.123\" /></defs></svg>;\nexport default SvgJupyterLogo;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {useSelector} from 'react-redux';\n\nimport Button from '../../../../../components/Button/Button';\nimport Logo from '../../../../../assets/img/svg/jupyter-logo.svg';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {getNavigationPathAttributesLoadState} from '../../../../../store/selectors/navigation/navigation';\nimport {LOADING_STATUS} from '../../../../../constants';\nimport {getJupyterBasePath} from '../../../../../config';\n\nJupyterButton.propTypes = {\n // from parent\n block: PropTypes.func.isRequired,\n};\n\nfunction JupyterButton({block}) {\n const loaded = useSelector(getNavigationPathAttributesLoadState) === LOADING_STATUS.LOADED;\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n\n const basePath = getJupyterBasePath();\n if (!basePath) {\n return null;\n }\n\n const url = `${basePath}/redirect/nb_template/yt?cluster=${cluster}&path=${path}`;\n return (\n <div className={block('jupyter')}>\n <Button\n size=\"m\"\n href={url}\n view=\"action\"\n target=\"_blank\"\n title=\"Open in Jupyter\"\n disabled={!loaded}\n >\n <span className={block('jupyter-content')}>\n <Logo className={block('jupyter-logo')} width={22} height={22} />\n Jupyter\n </span>\n </Button>\n </div>\n );\n}\n\nexport default JupyterButton;\n","import Query from '../../../../../utils/navigation/content/table/query';\nimport {updateTableData} from '../../../../../store/actions/navigation/content/table/table';\nimport {\n CLOSE_OFFSET_SELECTOR_MODAL,\n MOVE_OFFSET,\n OPEN_OFFSET_SELECTOR_MODAL,\n} from '../../../../../constants/navigation/content/table';\nimport {\n getBottomBoundKey,\n getOffsetValue,\n getRowCount,\n getUpperBoundKey,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n getIsDynamic,\n getPageSize,\n getYqlTypes,\n} from '../../../../../store/selectors/navigation/content/table-ts';\n\nexport function moveOffsetToStart() {\n return (dispatch) => {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: '',\n },\n });\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffsetToLeft() {\n return (dispatch, getState) => {\n const state = getState();\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n\n if (isDynamic) {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Query.prepareKey(getBottomBoundKey(state), yqlTypes),\n moveBackward: true,\n },\n });\n } else {\n const pageSize = getPageSize(state);\n const offsetValue = getOffsetValue(state);\n\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Math.max(offsetValue - pageSize, 0) || '',\n },\n });\n }\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffsetToRight() {\n return (dispatch, getState) => {\n const state = getState();\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n\n if (isDynamic) {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Query.prepareKey(getUpperBoundKey(state), yqlTypes),\n },\n });\n } else {\n const pageSize = getPageSize(state);\n const offsetValue = getOffsetValue(state);\n const rowCount = getRowCount(state);\n\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Math.min(offsetValue + pageSize, Math.max(rowCount - pageSize, 0)),\n },\n });\n }\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffsetToEnd() {\n return (dispatch, getState) => {\n const state = getState();\n const rowCount = getRowCount(state);\n const isDynamic = getIsDynamic(state);\n const pageSize = getPageSize(state);\n\n if (isDynamic) {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: '',\n moveBackward: true,\n },\n });\n } else {\n dispatch({\n type: MOVE_OFFSET,\n data: {\n offsetValue: Math.max(rowCount - pageSize, 0),\n },\n });\n }\n dispatch(updateTableData());\n };\n}\n\nexport function moveOffset(offsetValue) {\n return (dispatch, getState) => {\n const state = getState();\n const prevOffsetValue = getOffsetValue(state);\n\n if (offsetValue !== prevOffsetValue) {\n dispatch({\n type: MOVE_OFFSET,\n data: {offsetValue: offsetValue || ''},\n });\n dispatch(updateTableData());\n }\n };\n}\n\nexport function openOffsetSelectorModal() {\n return {\n type: OPEN_OFFSET_SELECTOR_MODAL,\n };\n}\n\nexport function closeOffsetSelectorModal() {\n return {\n type: CLOSE_OFFSET_SELECTOR_MODAL,\n };\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport Icon from '../../../../../components/Icon/Icon';\nimport Button from '../../../../../components/Button/Button';\n\nimport {openOffsetSelectorModal} from '../../../../../store/actions/navigation/content/table/pagination';\nimport {\n getAllColumns,\n getVisibleColumns,\n} from '../../../../../store/selectors/navigation/content/table';\n\nOffsetSelectorButton.propTypes = {\n // from parent\n disabled: PropTypes.bool,\n\n // from connect\n visibleColumns: PropTypes.array.isRequired,\n allColumns: PropTypes.array.isRequired,\n loading: PropTypes.bool.isRequired,\n\n openOffsetSelectorModal: PropTypes.func.isRequired,\n};\n\nfunction OffsetSelectorButton({\n loading,\n disabled,\n allColumns,\n visibleColumns,\n openOffsetSelectorModal,\n}) {\n return (\n <Button\n size=\"m\"\n disabled={loading || disabled}\n title=\"Edit offset\"\n onClick={openOffsetSelectorModal}\n pin=\"round-clear\"\n >\n <Icon awesome=\"key\" />\n &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} from 'react-redux';\n\nimport {mergeScreen} from '../../store/actions/global';\n\nimport UIFactory, {YQLButtonProps} from '../../UIFactory';\n\nexport function YQLKitButton(props: YQLButtonProps) {\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n return () => {\n dispatch(mergeScreen());\n };\n }, [dispatch]);\n\n return <React.Fragment>{UIFactory.yqlWidgetSetup?.renderButton(props)}</React.Fragment>;\n}\n","import {createSelector} from 'reselect';\n\nimport UIFactory from '../../../UIFactory';\nimport {isDeveloper} from '../../../store/selectors/global/is-developer';\nimport {getSettingsData} from './settings-base';\n\nexport const getNavigationSqlService = createSelector(\n [getSettingsData, isDeveloper],\n (data, isAdmin) => {\n const value = data['global::navigation::sqlService'];\n const isQtKitEnabled = value?.length ? -1 !== value.indexOf('qtkit') : isAdmin;\n const isYqlKitEnabled = value?.length ? -1 !== value.indexOf('yqlkit') : true;\n\n const hasYqlWidget = Boolean(UIFactory.yqlWidgetSetup);\n return {\n value,\n isQtKitEnabled: !hasYqlWidget || isQtKitEnabled,\n isYqlKitEnabled: hasYqlWidget && isYqlKitEnabled,\n hasYqlWidget,\n };\n },\n);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {Button} from '@gravity-ui/uikit';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport Icon from '../../components/Icon/Icon';\nimport {YQLKitButton} from '../../containers/YQLKitButton/YQLKitButton';\nimport {QueryWidgetLazy} from '../../pages/query-tracker/QueryWidget/side-panel';\nimport {QueryEngine} from '../../pages/query-tracker/module/engines';\nimport {createQueryFromTablePath} from '../../pages/query-tracker/module/query/actions';\nimport {createNewQueryUrl} from '../../pages/query-tracker/utils/navigation';\nimport {getNavigationSqlService} from '../../store/selectors/settings/navigation';\nimport UIFactory from '../../UIFactory';\nimport {useSidePanel} from '../../hooks/use-side-panel';\n\nimport './OpenQueryButtons.scss';\n\nconst b = cn('yt-open-query-buttons');\n\nexport type OpenQueryButtonProps = {\n className?: string;\n path: string;\n cluster: string;\n\n autoOpen?: boolean;\n};\n\nexport function OpenQueryButtons({className, path, cluster, autoOpen}: OpenQueryButtonProps) {\n const dispatch = useDispatch();\n const [panelMode, setPanelMode] = React.useState<'qt' | 'yqlkit' | undefined>();\n\n const onOpenYqlKit = React.useCallback(() => setPanelMode('yqlkit'), []);\n const onClose = React.useCallback(() => setPanelMode(undefined), []);\n\n const {openWidget, closeWidget, widgetContent} = useSidePanel(panelMode + '_widget', {\n renderContent({visible}) {\n return panelMode === 'qt' ? (\n <QueryWidgetLazy onClose={onClose} />\n ) : (\n UIFactory.yqlWidgetSetup?.renderWidget({visible, onClose})\n );\n },\n });\n\n const {isQtKitEnabled, isYqlKitEnabled} = useSelector(getNavigationSqlService);\n\n React.useEffect(() => {\n if (panelMode === undefined) {\n closeWidget();\n return;\n }\n\n if (panelMode === 'qt') {\n dispatch(createQueryFromTablePath(QueryEngine.YQL, cluster, path));\n }\n openWidget();\n }, [panelMode, openWidget, closeWidget]);\n\n const allowQtAutoOpen = autoOpen && isQtKitEnabled;\n\n React.useEffect(() => {\n if (autoOpen) {\n setPanelMode(allowQtAutoOpen ? 'qt' : 'yqlkit');\n }\n }, [autoOpen, allowQtAutoOpen]);\n\n return (\n <div className={b(null, className)}>\n {isQtKitEnabled && (\n <div className={b('query')}>\n <Button\n onClick={() => {\n setPanelMode(panelMode === 'qt' ? undefined : 'qt');\n }}\n pin=\"round-clear\"\n view=\"action\"\n className={b('btn')}\n selected={panelMode === 'qt'}\n disabled={panelMode === 'yqlkit'}\n title=\"Open Queries widget\"\n >\n QT Kit\n </Button>\n <Button\n className={b('btn')}\n pin=\"clear-round\"\n view=\"action\"\n href={createNewQueryUrl(cluster, QueryEngine.YQL, {path})}\n target=\"_blank\"\n title=\"Open Queries page\"\n >\n <Icon awesome=\"table\" />\n </Button>\n </div>\n )}\n {isYqlKitEnabled && (\n <YQLKitButton\n disabled={panelMode === 'qt'}\n opened={panelMode === 'yqlkit'}\n onOpen={onOpenYqlKit}\n onClose={onClose}\n />\n )}\n {widgetContent}\n </div>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {OpenQueryButtons} from '../../../../../containers/OpenQueryButtons/OpenQueryButtons';\n\nexport function CreateQueryFromTable({className}: {className: string}) {\n const cluster = useSelector(getCluster);\n const path = useSelector(getPath);\n\n return <OpenQueryButtons className={className} path={path} cluster={cluster} />;\n}\n","export const NAVIGATION_ATTRIBUTES_EDITOR_REQUEST = 'NAVIGATION_ATTRIBUTES_EDITOR_REQUEST';\nexport const NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS = 'NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS';\nexport const NAVIGATION_ATTRIBUTES_EDITOR_ERROR = 'NAVIGATION_ATTRIBUTES_EDITOR_ERROR';\nexport const NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL = 'NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL';\n","import forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport ypath from '../../../../common/thor/ypath';\n\nexport const getNavigationAttributesData = (state: RootState) =>\n state.navigation.modals.attributesEditor;\nexport const getNavigationAttributesEditorAttributes = (state: RootState) =>\n state.navigation.modals.attributesEditor.attributesMap;\nexport const getNavigationAttributesEditorPath = (state: RootState) =>\n state.navigation.modals.attributesEditor.paths;\nexport const getNavigationAttributesEditorLoading = (state: RootState) =>\n state.navigation.modals.attributesEditor.loading;\nexport const getNavigationAttributesEditorLoaded = (state: RootState) =>\n state.navigation.modals.attributesEditor.loaded;\nexport const getNavigationAttributesEditorError = (state: RootState) =>\n state.navigation.modals.attributesEditor.error;\nexport const getNavigationAttributesEditorVisible = (state: RootState) =>\n state.navigation.modals.attributesEditor.visible;\n\nconst getNavigationAttributesEidtorNodesByTypes = createSelector(\n [getNavigationAttributesEditorAttributes],\n (attrsMap) => {\n const staticTables: Array<string> = [];\n const mapNodes: Array<string> = [];\n const dynamicTables: Array<string> = [];\n\n forEach_(attrsMap, (attrs, path) => {\n const type = ypath.getValue(attrs || {}, '/@type');\n if (type === 'map_node') {\n mapNodes.push(path);\n } else if (type === 'table') {\n if (ypath.getValue(attrs, '/@dynamic')) {\n dynamicTables.push(path);\n } else {\n staticTables.push(path);\n }\n }\n });\n return {staticTables, dynamicTables, mapNodes};\n },\n);\n\nexport const getNavigationAttributesEditorStaticTables = createSelector(\n [getNavigationAttributesEidtorNodesByTypes],\n ({staticTables}) => {\n return staticTables;\n },\n);\n\nexport const getNavigationAttributesEditorDynamicTables = createSelector(\n [getNavigationAttributesEidtorNodesByTypes],\n ({dynamicTables}) => {\n return dynamicTables;\n },\n);\n\nexport const getNavigationAttributesEditorMapNodes = createSelector(\n [getNavigationAttributesEidtorNodesByTypes],\n ({mapNodes}) => {\n return mapNodes;\n },\n);\n","import React from 'react';\n\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport join_ from 'lodash/join';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {ThunkAction} from 'redux-thunk';\n\nimport {Toaster} from '@gravity-ui/uikit';\nimport ypath from '../../../../common/thor/ypath';\n\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {\n NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n NAVIGATION_ATTRIBUTES_EDITOR_REQUEST,\n NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS,\n} from '../../../../constants/navigation/modals/attributes-editor';\nimport {RootState} from '../../../../store/reducers';\nimport {NavAttrEditorAction} from '../../../../store/reducers/navigation/modals/attributes-editor';\nimport {\n getNavigationAttributesEditorAttributes,\n getNavigationAttributesEditorPath,\n getNavigationAttributesEditorStaticTables,\n} from '../../../../store/selectors/navigation/modals/attributes-editor';\nimport {getBatchError, showErrorPopup, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {updateView} from '../index';\nimport Link from '../../../../components/Link/Link';\nimport {getCluster} from '../../../selectors/global';\nimport {makeUiMarker, prepareSetCommandForBatch} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId} from '../../../../rum/rum-wrap-api';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\n\ntype ActionType<R = any> = ThunkAction<R, RootState, any, NavAttrEditorAction>;\n\nconst EDITABLE_ATTRIBUTES = [\n 'type',\n 'account',\n 'primary_medium',\n 'optimize_for',\n 'compression_codec',\n 'erasure_codec',\n 'replication_factor',\n 'tablet_cell_bundle',\n 'in_memory_mode',\n 'dynamic',\n 'sorted',\n 'annotation',\n 'annotation_path',\n 'expiration_time',\n 'expiration_timeout',\n];\n\nexport function showNavigationAttributesEditor(paths: Array<string>): ActionType {\n return (dispatch) => {\n dispatch({type: NAVIGATION_ATTRIBUTES_EDITOR_REQUEST});\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {\n path: path + '/@',\n attributes: EDITABLE_ATTRIBUTES,\n },\n };\n });\n return executeBatchWithRetries(YTApiId.attributesEditorGetAttrs, requests, {\n errorTitle: 'Attributes cannot be loaded',\n })\n .then((results: any) => {\n const error = getBatchError(results, 'Attributes cannot be loaded');\n if (error) {\n throw error;\n }\n const attributesMap = reduce_(\n paths,\n (acc, path, index) => {\n acc[path] = {$attributes: results[index].output};\n return acc;\n },\n {} as any,\n );\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS,\n data: {attributesMap, paths},\n });\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {visible: true},\n });\n })\n .catch((e: any) => {\n dispatch({type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR, data: e});\n const toaster = new Toaster();\n toaster.add({\n name: 'show_attrs_editor_' + join_(paths),\n theme: 'danger',\n title: 'Attributes cannot be loaded',\n content: e?.message,\n actions: [\n {\n label: ' [Details]',\n onClick: () => showErrorPopup(e),\n },\n ],\n autoHiding: false,\n });\n });\n };\n}\n\nexport function hideNavigationAttributesEditor() {\n return {\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {paths: undefined, visible: false},\n };\n}\n\nconst EDIT_MARKER = makeUiMarker(`${Page.NAVIGATION}:edit-attributes`);\nconst EDIT_MERGE_MARKER = makeUiMarker(`${Page.NAVIGATION}:edit-attributes:merge`);\n\nexport function navigationSetNodeAttributes(\n generalAttrs: any,\n storageAttrs: object,\n runMerge: boolean,\n): ActionType<Promise<unknown>> {\n return (dispatch, getState) => {\n const paths = getNavigationAttributesEditorPath(getState());\n\n if (isEmpty_({...generalAttrs, ...storageAttrs})) {\n console.warn(\n `Please check your parameters: ${JSON.stringify({\n path: paths,\n attributes: generalAttrs,\n })}`,\n );\n return Promise.resolve();\n }\n\n const cluster = getCluster(getState());\n\n const attributesMap = getNavigationAttributesEditorAttributes(getState());\n const {in_memory_mode, tablet_cell_bundle, ...restGeneralAttrs} = generalAttrs;\n\n const requests = reduce_(\n paths,\n (acc, path) => {\n const attrs = attributesMap[path] || {};\n const newAttrs = {...restGeneralAttrs, ...storageAttrs};\n const type = ypath.getValue(attrs, '/@type');\n const isDynamic = ypath.getValue(attrs, '/@dynamic');\n const isDynTable = type === 'table' && isDynamic;\n if (in_memory_mode !== undefined && isDynTable) {\n Object.assign(newAttrs, {in_memory_mode});\n }\n if (tablet_cell_bundle !== undefined && (type === 'map_node' || isDynTable)) {\n Object.assign(newAttrs, {tablet_cell_bundle});\n }\n\n forEach_(newAttrs, (value, key) => {\n acc.push(prepareSetCommandForBatch(`${path}/@${key}`, value, EDIT_MARKER));\n });\n return acc;\n },\n [] as Array<BatchSubRequest>,\n );\n\n const staticTables = getNavigationAttributesEditorStaticTables(getState());\n\n return executeBatchWithRetries(YTApiId.attributesEditorSet, requests, {\n errorTitle: `Cannot set attributes for ${paths}`,\n })\n .then((res): Promise<unknown> => {\n const error = getBatchError(res, `Cannot set attributes for ${paths}`);\n if (error) {\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n data: error,\n });\n return Promise.reject(error);\n }\n if (!runMerge || !staticTables.length || isEmpty_(storageAttrs)) {\n return Promise.resolve(res);\n }\n\n const prepareMergeParams = (path: string) => {\n return {\n spec: Object.assign({\n input_table_paths: [path],\n output_table_path: path,\n force_transform: true,\n mode: 'ordered',\n }),\n ...EDIT_MERGE_MARKER,\n };\n };\n\n if (staticTables.length < 6) {\n const promises = map_(staticTables, (path) => {\n return wrapApiPromiseByToaster(yt.v3.merge(prepareMergeParams(path)), {\n toasterName: 'storage_attrs_' + path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo\n id={opId}\n output_attribute_name={'/spec/output_table_path'}\n />\n </AppStoreProvider>\n );\n },\n successTitle: 'Merge operation is started',\n errorTitle: 'Merge operation is failed',\n autoHide: false,\n });\n });\n return Promise.all(promises);\n } else {\n const requests = map_(staticTables, (path) => {\n return {\n command: 'merge' as const,\n parameters: prepareMergeParams(path),\n };\n });\n return executeBatchWithRetries(YTApiId.attributesEditorMerge, requests, {\n errorTitle: 'Failed to start some operations',\n }).then((results: any) => {\n const error = getBatchError(results, 'Failed to start some operations');\n if (error) {\n throw error;\n }\n\n const toaster = new Toaster();\n toaster.add({\n theme: 'success',\n name: 'merge_' + staticTables.join(','),\n title: `${staticTables.length} operations are started`,\n content: (\n <span>\n Please visit\n <Link url={`/${cluster}/operations`}> operations </Link>\n page to see more details\n </span>\n ),\n });\n });\n }\n })\n .then(() => {\n dispatch(updateView());\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL,\n data: {paths: undefined, visible: false},\n });\n })\n .catch((e: any) => {\n dispatch({\n type: NAVIGATION_ATTRIBUTES_EDITOR_ERROR,\n data: e,\n });\n return Promise.reject(e);\n });\n };\n}\n","// @ts-expect-error\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport React from 'react';\nimport moment from 'moment';\n// @ts-expect-error\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport Link from '../../../../components/Link/Link';\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport {checkIsTrash, getRawPath} from '../../../../store/selectors/navigation';\nimport {showErrorPopup, wrapBatchPromise} from '../../../../utils/utils';\nimport {navigateParent, updateView} from '../../../../store/actions/navigation';\nimport {decodeEscapedAbsPath, preparePath} from '../../../../utils/navigation';\nimport {\n CLOSE_DELETE_OBJECT_POPUP,\n DELETE_OBJECT,\n LOAD_REAL_PATH,\n OPEN_DELETE_OBJECT_POPUP,\n SUPPRESS_REDIRECT,\n TOGGLE_PERMANENTLY_DELETE,\n} from '../../../../constants/navigation/modals/delete-object';\n\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\n\nimport {executeBatchWithRetries} from '../../execute-batch';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../store/reducers';\nimport type {Dispatch} from 'redux';\nimport type {\n DeleteObjectAction,\n DeleteObjectItem,\n MulipleInfoItem,\n} from '../../../../store/reducers/navigation/modals/delete-object';\nimport {BatchSubRequest} from '../../../../../shared/yt-types';\nimport type {YTError} from '../../../../types';\nimport type {AppThunkDispatch} from '../../../../store/thunkDispatch';\n\nconst toaster = new Toaster();\n\nfunction prepareRestorePath(path: string, type: string) {\n const lastChar = path.charAt(path.length - 1);\n\n if (type === 'link' && lastChar === SUPPRESS_REDIRECT) {\n return path.slice(0, path.length - 1);\n }\n\n return path;\n}\n\nexport function openDeleteModal(\n item: DeleteObjectItem | Array<DeleteObjectItem>,\n multipleMode = false,\n) {\n return (dispatch: Dispatch, getState: () => RootState) => {\n const inTrash = checkIsTrash(getState());\n\n dispatch({\n type: OPEN_DELETE_OBJECT_POPUP,\n data: {item, inTrash, multipleMode},\n });\n };\n}\n\nexport function closeDeleteModal() {\n return {\n type: CLOSE_DELETE_OBJECT_POPUP,\n };\n}\n\nexport function togglePermanentlyDelete() {\n return {\n type: TOGGLE_PERMANENTLY_DELETE,\n };\n}\n\nconst getPath = (path: string, type: string) => {\n return ['link', 'access_control_object'].includes(type)\n ? Promise.resolve(path)\n : ytApiV3Id.get(YTApiId.navigationGetPath, {\n path: path + '/@path',\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n });\n};\n\nconst getInfo = (realPath: string) => {\n const parsedRealPath = ypath.YPath.create(realPath, 'absolute');\n const path = parsedRealPath.stringify();\n const name = parsedRealPath.getKey();\n\n return Promise.all([\n path,\n name,\n ytApiV3Id.get(YTApiId.navigationGetPathInfo, {\n path: path + '&/@',\n attributes: ['recursive_resource_usage', 'account'],\n }),\n ]);\n};\n\nexport function getRealPath({path, type}: {path: string; type: string}) {\n return (dispatch: Dispatch) => {\n dispatch({type: LOAD_REAL_PATH.REQUEST});\n\n return getPath(path, type)\n .then(getInfo)\n .then(([realPath, name, info]) => {\n const account = ypath.get(info, '/account');\n const resourceUsage = ypath.get(info, '/recursive_resource_usage');\n\n dispatch({\n type: LOAD_REAL_PATH.SUCCESS,\n data: {realPath, name, account, resourceUsage},\n });\n })\n .catch((error) => {\n console.error(error);\n toaster.add({\n theme: 'danger',\n name: 'real path',\n autoHiding: 10000,\n title: 'Could not open delete dialog.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n dispatch({\n type: LOAD_REAL_PATH.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function getRealPaths(items: {path: string}[]) {\n return (dispatch: Dispatch) => {\n dispatch({type: LOAD_REAL_PATH.REQUEST});\n\n const requests: BatchSubRequest[] = map_(items, ({path}) => {\n return {\n command: 'get',\n parameters: {\n path: `${path}&/@`,\n attributes: ['recursive_resource_usage', 'account', 'path', 'type'],\n output_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n };\n });\n\n return executeBatchWithRetries(YTApiId.navigationDelete, requests, {\n errorTitle: 'Failed to get real paths',\n })\n .then((responses) => {\n const error = find_(responses, (res) => res.error) as {error: YTError} | undefined;\n if (error) {\n return Promise.reject(error.error);\n }\n const multipleInfo = map_(responses, (res, index) => {\n const type = ypath.get(res.output, '/type');\n\n if (type === 'access_control_object') {\n return {type, path: items[index].path};\n }\n\n const path = ypath.get(res.output, '/path');\n const account = ypath.get(res.output, '/account');\n const resourceUsage = ypath.get(res.output, '/recursive_resource_usage');\n const name = path.split('/').reverse()[0];\n\n return {path, account, type, name, resourceUsage};\n });\n\n return dispatch({\n type: LOAD_REAL_PATH.SUCCESS,\n data: {multipleInfo},\n });\n })\n .catch((error) => {\n console.error(error);\n toaster.add({\n theme: 'danger',\n name: 'real path',\n autoHiding: 10000,\n title: 'Could not open delete dialog.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n return dispatch({\n type: LOAD_REAL_PATH.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nconst createDestinationPath = (account: string, name: string, login: string) =>\n `//tmp/trash/by-account/${account}/${login}/${name}_${moment().unix()}`;\n\nfunction deleteCurrentObject(path: string, restorePath: string) {\n return (_dispatch: Dispatch, getState: () => RootState): Promise<void> => {\n const {global, navigation} = getState();\n const {permanently, name, account} = navigation.modals.deleteObject;\n const {login} = global;\n\n if (permanently) {\n return yt.v3.remove({path}).then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Object has been permanently deleted.',\n });\n });\n } else {\n const destinationPath = createDestinationPath(account, name, login);\n\n return yt.v3\n .set(\n {\n path: preparePath(path) + '/@_restore_path',\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n restorePath,\n )\n .then(() =>\n yt.v3.move({\n recursive: true,\n source_path: path,\n preserve_account: true,\n destination_path: destinationPath,\n }),\n )\n .then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Object moved',\n content: (\n <div>\n Object has been moved to{' '}\n <Link url={`navigation?path=${destinationPath}`}>trash</Link>\n </div>\n ),\n });\n });\n }\n };\n}\n\nexport function deleteObject() {\n return (dispatch: AppThunkDispatch<DeleteObjectAction>, getState: () => RootState) => {\n const {navigation} = getState();\n const {realPath, item} = navigation.modals.deleteObject;\n const {transaction} = navigation.navigation;\n\n const path = preparePath(realPath);\n const restorePath = prepareRestorePath(realPath, (item as DeleteObjectItem).type);\n\n dispatch({type: DELETE_OBJECT.REQUEST});\n\n if (transaction) {\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n\n toaster.add({\n theme: 'danger',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Could not delete the object within transaction.',\n });\n }\n\n dispatch(deleteCurrentObject(path, restorePath))\n .then(() => {\n dispatch({type: DELETE_OBJECT.SUCCESS});\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n\n const currentPath = getRawPath(getState());\n const realPathDecoded = decodeEscapedAbsPath(realPath);\n\n if (currentPath === realPathDecoded) {\n dispatch(navigateParent());\n } else {\n dispatch(updateView());\n }\n })\n .catch((error) => {\n console.error(error);\n dispatch({\n type: DELETE_OBJECT.FAILURE,\n data: {error},\n });\n toaster.add({\n theme: 'danger',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Could not delete the node.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n });\n };\n}\n\nfunction permanentlyDeleteObjects(multipleInfo: MulipleInfoItem[], transaction: string) {\n const requests: BatchSubRequest[] = map_(multipleInfo, (node) => {\n const path = preparePath(node.path);\n\n return {\n command: 'remove',\n parameters: {path: path, transaction_id: transaction},\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationDelete, requests, {\n errorTitle: 'Failed to delete object(s) permanently',\n }),\n 'Failed to delete object(s) permanently',\n )\n .then(() => yt.v3.commitTransaction({transaction_id: transaction}))\n .then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete objects',\n autoHiding: 10000,\n title: 'Objects have been permanently deleted.',\n });\n });\n}\n\nfunction moveObjectsIntoTrash(multipleInfo: MulipleInfoItem[], transaction: string, login: string) {\n const setAttributesRequests: BatchSubRequest[] = map_(multipleInfo, (node) => {\n const restorePath = prepareRestorePath(node.path, node.type);\n\n return {\n command: 'set',\n parameters: {\n transaction_id: transaction,\n path: preparePath(node.path) + '/@_restore_path',\n input_format: {\n $value: 'json',\n $attributes: {\n encode_utf8: 'false',\n },\n },\n },\n input: restorePath,\n };\n });\n\n const moveRequests: BatchSubRequest[] = map_(multipleInfo, (node) => {\n const path = preparePath(node.path);\n const destinationPath = createDestinationPath(node.account, node.name, login);\n\n return {\n command: 'move',\n parameters: {\n transaction_id: transaction,\n source_path: path,\n recursive: true,\n preserve_account: true,\n destination_path: destinationPath,\n },\n };\n });\n\n return wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMoveToTrashRestorePath, setAttributesRequests, {\n errorTitle: 'Failed to set restore path',\n }),\n 'Failed to set restore path',\n )\n .then(() =>\n wrapBatchPromise(\n executeBatchWithRetries(YTApiId.navigationMoveToTrash, moveRequests, {\n errorTitle: 'Failed to move the object(s) to trash',\n }),\n 'Failed to move the object(s) to trash',\n ),\n )\n .then(() => yt.v3.commitTransaction({transaction_id: transaction}))\n .then(() => {\n toaster.add({\n theme: 'success',\n name: 'delete objects',\n autoHiding: 10000,\n title: 'Objects moved',\n content: (\n <div>\n Objects have been moved to the trash, they might be found at\n <br />\n <Link url={'navigation?path=//tmp/trash/by-account/'}>\n {'//tmp/trash/by-account/...'}\n </Link>\n </div>\n ),\n });\n });\n}\n\nexport function deleteObjects() {\n return (dispatch: AppThunkDispatch<DeleteObjectAction>, getState: () => RootState) => {\n const {navigation, global} = getState();\n const {transaction} = navigation.navigation;\n const {permanently, multipleInfo} = navigation.modals.deleteObject;\n const {login} = global;\n\n if (transaction) {\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n\n toaster.add({\n theme: 'danger',\n name: 'delete object',\n autoHiding: 10000,\n title: 'Could not delete the object within transaction.',\n });\n }\n\n dispatch({type: DELETE_OBJECT.REQUEST});\n\n return yt.v3\n .startTransaction({})\n .then((id: string) => {\n if (permanently) {\n return permanentlyDeleteObjects(multipleInfo, id);\n }\n\n return moveObjectsIntoTrash(multipleInfo, id, login);\n })\n .then(() => {\n dispatch({type: DELETE_OBJECT.SUCCESS});\n dispatch({type: CLOSE_DELETE_OBJECT_POPUP});\n dispatch(updateView());\n })\n .catch((error: YTError) => {\n console.error(error);\n dispatch({\n type: DELETE_OBJECT.FAILURE,\n data: {error},\n });\n toaster.add({\n theme: 'danger',\n name: 'delete objects',\n autoHiding: 10000,\n title: 'Could not delete the nodes.',\n content: error.message,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n });\n };\n}\n","import React from 'react';\nimport {TABLE_ERASE_MODAL_PARTIAL} from '../../../../constants/navigation/modals/table-erase-modal';\n// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport {RootState} from '../../../reducers';\nimport {ThunkAction} from 'redux-thunk';\nimport {wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {AppStoreProvider} from '../../../../containers/App/AppStoreProvider';\nimport {OperationShortInfo} from '../../../../pages/components/OperationShortInfo/OperationShortInfo';\nimport {makeUiMarker} from '../../../../utils/cypress-attributes';\nimport {Page} from '../../../../constants';\n\nexport function showTableEraseModal(path: string) {\n return {type: TABLE_ERASE_MODAL_PARTIAL, data: {visible: true, path}};\n}\n\nexport function hideTableEraseModal() {\n return {\n type: TABLE_ERASE_MODAL_PARTIAL,\n data: {visible: false, path: undefined},\n };\n}\n\ntype EraseThunkAction = ThunkAction<any, RootState, any, any>;\n\nexport function runTableErase({\n path,\n from,\n to,\n combine_chunks,\n}: {\n path: string;\n from?: number;\n to?: number;\n combine_chunks?: boolean;\n}): EraseThunkAction {\n return () => {\n if (!path) {\n throw Error('Path cannot be empty for \"erase\" operation');\n }\n let range = '';\n if (!isNaN(from!) && !isNaN(to!)) {\n range = `[#${from}:#${to}]`;\n } else if (!isNaN(from!)) {\n range = `[#${from}:]`;\n } else if (!isNaN(to!)) {\n range = `[:#${to}]`;\n }\n\n return wrapApiPromiseByToaster(\n yt.v3.erase({\n spec: {\n table_path: path + range,\n combine_chunks,\n },\n ...makeUiMarker(`${Page.NAVIGATION}:erase`),\n }),\n {\n toasterName: 'table_erase_' + path,\n successContent(res: string) {\n const opId = JSON.parse(res);\n return (\n <AppStoreProvider>\n <OperationShortInfo id={opId} type={'erase'} />\n </AppStoreProvider>\n );\n },\n successTitle: 'Erase operation is started',\n errorTitle: 'Erase operation is failed',\n autoHide: false,\n },\n );\n };\n}\n","import unipika from '../../../../common/thor/unipika';\nimport ypath from '../../../../common/thor/ypath';\nimport {prepareNavigationState} from '../../../../utils/navigation';\n\nexport class Node {\n static CAPTION_PRINT_SETTINGS = {\n indent: 0,\n break: false,\n binaryAsHex: false,\n highlightControlCharacter: true,\n escapeWhitespace: true,\n format: 'json',\n };\n\n static TITLE_PRINT_SETTINGS = Object.assign(\n {\n asHTML: false,\n },\n Node.CAPTION_PRINT_SETTINGS,\n );\n\n static SUPPORTS_RESOURCE_USAGE = {\n table: true,\n file: true,\n journal: true,\n document: true,\n };\n\n static prepareTitle(name: string) {\n return unipika.prettyprint(name, Node.TITLE_PRINT_SETTINGS);\n }\n\n static prepareCaption(name: string) {\n return unipika.prettyprint(name, Node.CAPTION_PRINT_SETTINGS);\n }\n\n static getResource(node: any, name: string) {\n return Node.SUPPORTS_RESOURCE_USAGE[\n ypath.getValue(node, '/@type') as keyof typeof Node.SUPPORTS_RESOURCE_USAGE\n ]\n ? ypath.getValue(node, '/@resource_usage/' + name)\n : ypath.getValue(node.recursiveResourceUsage, '/' + name);\n }\n\n name: string;\n $value: string;\n $attributes?: Record<string, string>;\n type: string;\n iconType: string;\n title: string;\n caption: string;\n titleUnquoted: string;\n parsedPath: ReturnType<typeof ypath.YPath.clone>;\n parsedPathError?: {\n message: string;\n inner_errors: unknown[];\n };\n path: string;\n pathState: ReturnType<typeof prepareNavigationState>;\n recursiveResourceUsage: boolean;\n dataWeight: number;\n size: number;\n sizePerMedium: number;\n chunks: number;\n nodes: number;\n tabletStaticMemory: number;\n tablets: number;\n masterMemory: number;\n locks: number;\n account: string;\n modified: string;\n created: string;\n linkParsedPath?: ReturnType<typeof ypath.YPath.clone>;\n linkPathState?: ReturnType<typeof prepareNavigationState>;\n targetPath?: string;\n targetPathBroken?: boolean;\n targetPathState?: ReturnType<typeof prepareNavigationState>;\n\n dynamic?: boolean;\n rows?: number;\n unmergedRows?: number;\n chunkRows?: number;\n tabletState?: string;\n\n constructor(\n data: string,\n params: {parsedPath: string; transaction: string; contentMode: string},\n ) {\n const {parsedPath, transaction, contentMode} = params;\n\n const name = ypath.getValue(data);\n const attributes = ypath.getAttributes(data);\n\n this.$value = this.name = name;\n this.$attributes = attributes;\n\n this.type = attributes.type;\n this.iconType = attributes.type;\n\n this.title = Node.prepareTitle(this.name);\n this.caption = Node.prepareCaption(this.name);\n this.titleUnquoted = this.title.slice(1, -1);\n\n try {\n this.parsedPath = ypath.YPath.clone(parsedPath).concat(\n '/' + ypath.YPath.escapeSpecialCharacters(JSON.parse(this.title)),\n );\n } catch (e) {\n this.parsedPath = ypath.YPath.clone(parsedPath).concat(\n '/' + ypath.YPath.escapeSpecialCharacters(this.title),\n );\n this.parsedPathError = {\n message: `Node name cannot be parsed, try to enable 'Escape and highlight' option in your settings. `,\n inner_errors: [e],\n };\n }\n this.path = this.parsedPath.stringify();\n this.pathState = prepareNavigationState(\n this.parsedPath,\n transaction,\n undefined,\n contentMode,\n );\n\n // RESOURCES\n this.recursiveResourceUsage = attributes.recursive_resource_usage;\n\n this.dataWeight = ypath.getValue(this, '/@data_weight');\n this.size = Node.getResource(this, 'disk_space');\n this.sizePerMedium = Node.getResource(this, 'disk_space_per_medium');\n this.chunks = Node.getResource(this, 'chunk_count');\n this.nodes = Node.getResource(this, 'node_count');\n this.tabletStaticMemory = Node.getResource(this, 'tablet_static_memory');\n this.tablets = Node.getResource(this, 'tablet_count');\n this.masterMemory = Node.getResource(this, 'master_memory');\n\n this.locks = attributes.lock_count;\n\n this.account = attributes.account;\n this.modified = attributes.modification_time;\n this.created = attributes.creation_time;\n\n // LINKS\n if (this.type === 'link') {\n this.linkParsedPath = ypath.YPath.clone(this.parsedPath).concat('&');\n this.linkPathState = prepareNavigationState(this.linkParsedPath, transaction);\n this.targetPath = attributes.target_path;\n this.targetPathBroken = attributes.broken;\n this.targetPathState = this.targetPath\n ? prepareNavigationState(\n ypath.YPath.create(this.targetPath, 'absolute'),\n transaction,\n )\n : undefined;\n }\n\n // TABLE\n if (this.type === 'table') {\n this.dynamic = attributes.dynamic;\n this.rows = attributes.row_count;\n this.unmergedRows = attributes.unmerged_row_count;\n this.chunkRows = attributes.chunk_row_count;\n this.iconType = this.dynamic ? 'table_dynamic' : 'table';\n\n if (this.dynamic) {\n this.tabletState = attributes.tablet_state;\n }\n }\n }\n}\n","import chunk_ from 'lodash/chunk';\nimport filter_ from 'lodash/filter';\nimport findIndex_ from 'lodash/findIndex';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {Toaster} from '@gravity-ui/uikit';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {prepareRequest, saveRequestCancellation} from '../../../../utils/navigation';\nimport {\n APPLY_CUSTOM_SORT,\n FETCH_NODES,\n NAVIGATION_MAP_NODE_TABLE_ID,\n SELECT_ALL,\n SET_CONTENT_MODE,\n SET_MEDIUM_TYPE,\n SET_SELECTED_ITEM,\n SET_TEXT_FILTER,\n UPDATE_RESOURCE_USAGE,\n} from '../../../../constants/navigation';\nimport {\n getFilteredNodes,\n getLastSelected,\n getNodesData,\n getSelected,\n getSortedNodes,\n isRootNode,\n shouldApplyCustomSort,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {changeColumnSortOrder} from '../../../../store/actions/tables';\nimport {RumWrapper, YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {getBatchError, showErrorPopup} from '../../../../utils/utils';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport hammer from '../../../../common/hammer';\nimport {GENERIC_ERROR_MESSAGE} from '../../../../constants';\nimport {isSupportedEffectiveExpiration} from '../../../../store/selectors/thor/support';\nimport {waitForFontFamilies} from '../../../../store/actions/global/fonts';\nimport UIFactory from '../../../../UIFactory';\n\nfunction getList(path, transaction, cluster, allowEffectiveExpiration) {\n const id = new RumWrapper(cluster, RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE);\n return id.fetch(\n YTApiId.navigationListNodes,\n ytApiV3Id.list(\n YTApiId.navigationListNodes,\n prepareRequest({\n attributes: [\n 'type',\n 'dynamic',\n 'row_count', // Deprecated\n 'unmerged_row_count', // Deprecated\n 'chunk_row_count',\n 'modification_time',\n 'creation_time',\n 'resource_usage',\n 'data_weight',\n 'account',\n 'target_path',\n 'broken',\n 'lock_count',\n 'tablet_state',\n '_restore_path',\n 'expiration_time',\n 'expiration_timeout',\n ...(allowEffectiveExpiration ? ['effective_expiration'] : []),\n ...(UIFactory.getNavigationMapNodeSettings()?.additionalAttributes || []),\n ],\n path,\n transaction,\n }),\n saveRequestCancellation,\n ),\n );\n}\n\nexport function fetchNodes() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n const cluster = getCluster(state);\n\n const allowEffectiveExpiration = isSupportedEffectiveExpiration(state);\n\n dispatch({type: FETCH_NODES.REQUEST});\n return dispatch(\n waitForFontFamilies(getList(path, transaction, cluster, allowEffectiveExpiration)),\n )\n .then(ypath.getValue)\n .then((data) => {\n dispatch({\n type: FETCH_NODES.SUCCESS,\n data,\n });\n\n const applyCustomSort = shouldApplyCustomSort(getState());\n dispatch({\n type: APPLY_CUSTOM_SORT,\n data: applyCustomSort ? 'date' : '',\n });\n if (applyCustomSort) {\n dispatch(\n changeColumnSortOrder({\n tableId: NAVIGATION_MAP_NODE_TABLE_ID,\n columnName: 'name',\n asc: false,\n }),\n );\n }\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: FETCH_NODES.FAILURE,\n data: {\n message: 'Could not load list. ' + GENERIC_ERROR_MESSAGE,\n details: error,\n },\n });\n } else {\n dispatch({type: FETCH_NODES.CANCELLED});\n }\n });\n };\n}\n\nexport function updateResourceUsage() {\n const BATCH_LIMIT = 200;\n\n function updatedNodeData(nodeValue, newData) {\n return newData\n ? {\n $value: nodeValue.$value,\n $attributes: {\n ...nodeValue.$attributes,\n recursive_resource_usage: newData,\n },\n }\n : nodeValue;\n }\n\n return (dispatch, getState) => {\n const state = getState();\n\n let nodes = getFilteredNodes(state);\n nodes = filter_(nodes, (node) => !node.$attributes.recursive_resource_usage);\n\n if (isRootNode(state) || nodes.length === 0) {\n return;\n }\n\n dispatch({type: UPDATE_RESOURCE_USAGE.REQUEST});\n\n const nodesChunks = chunk_(nodes, BATCH_LIMIT);\n const batchedRequests = map_(nodesChunks, (nodesChunk) => {\n const requests = map_(nodesChunk, (node) => {\n return {\n command: 'get',\n parameters: {\n path: node.path + '&/@recursive_resource_usage',\n timeout: 60 * 1000,\n },\n };\n });\n\n return ytApiV3Id.executeBatch(YTApiId.navigationResourceUsage, {requests});\n });\n\n Promise.all(batchedRequests)\n .then((resultChunks) => {\n const dataMap = {};\n\n const errorResults = [];\n\n forEach_(nodes, (node, index) => {\n const resultChunkIndex = Math.floor(index / BATCH_LIMIT);\n const resultChunk = resultChunks[resultChunkIndex];\n const item = resultChunk[index % BATCH_LIMIT];\n\n if (item.error) {\n errorResults.push(item);\n } else if (item.output) {\n dataMap[node.$value] = item.output;\n }\n });\n\n dispatch({\n type: UPDATE_RESOURCE_USAGE.SUCCESS,\n data: map_(getNodesData(state), (nodeData) =>\n updatedNodeData(nodeData, dataMap[nodeData.$value]),\n ),\n });\n\n const error = getBatchError(errorResults, 'Failed to get resource usage');\n if (error) {\n throw error;\n }\n })\n .catch((error) => {\n if (error.code !== yt.codes.CANCELLED) {\n dispatch({\n type: UPDATE_RESOURCE_USAGE.FAILURE,\n data: {\n message: 'Failed to load resources. ' + GENERIC_ERROR_MESSAGE,\n details: error,\n },\n });\n const toast = new Toaster();\n toast.add({\n theme: 'danger',\n name: 'map_node_update_resources',\n timeout: 500000,\n title: 'Resource loading error',\n content: error ? error.message : hammer.format.NO_VALUE,\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(error),\n },\n ],\n });\n } else {\n dispatch({\n type: UPDATE_RESOURCE_USAGE.CANCELLED,\n });\n }\n });\n };\n}\n\nexport function setFilter(filter) {\n return (dispatch, getState) => {\n const path = getPath(getState());\n\n dispatch({\n type: SET_TEXT_FILTER,\n data: {filter, path},\n });\n };\n}\n\nexport function setContentMode(contentMode) {\n return {\n type: SET_CONTENT_MODE,\n data: contentMode,\n };\n}\n\nexport function setMediumType(mediumType) {\n return {\n type: SET_MEDIUM_TYPE,\n data: mediumType,\n };\n}\n\nexport function setSelectedItem(name, shiftKey) {\n return (dispatch, getState) => {\n const state = getState();\n const selected = {...getSelected(state)};\n if (selected[name] && !shiftKey) {\n delete selected[name];\n } else {\n selected[name] = true;\n }\n\n const lastSelected = getLastSelected(state);\n if (lastSelected && shiftKey) {\n const nodes = getSortedNodes(state);\n const lastIndex = findIndex_(nodes, (item) => lastSelected === item.name);\n if (-1 !== lastIndex) {\n const nameIndex = findIndex_(nodes, (item) => item.name === name);\n if (-1 !== nameIndex && lastIndex !== nameIndex) {\n const from = Math.min(lastIndex, nameIndex);\n const to = Math.max(lastIndex, nameIndex);\n for (let i = from; i <= to; ++i) {\n const item = nodes[i];\n selected[item.name] = true;\n }\n }\n }\n }\n\n dispatch({\n type: SET_SELECTED_ITEM,\n data: {selected, lastSelected: selected[name] ? name : undefined},\n });\n };\n}\n\nexport function selectAll(isAllSelected) {\n return (dispatch, getState) => {\n let selected = {};\n\n if (!isAllSelected) {\n const allNodes = getFilteredNodes(getState());\n\n selected = reduce_(\n allNodes,\n (res, node) => {\n res[ypath.getValue(node)] = true;\n return res;\n },\n {},\n );\n }\n\n dispatch({\n type: SELECT_ALL,\n data: {selected},\n });\n };\n}\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport {getIsAllSelected} from '../../../../store/selectors/navigation/content/map-node';\nimport {selectAll} from '../../../../store/actions/navigation/content/map-node';\n\nexport default function Chooser() {\n const dispatch = useDispatch();\n const isAllSelected = useSelector(getIsAllSelected);\n const handleSelectChange = useCallback(() => {\n dispatch(selectAll(isAllSelected));\n }, [dispatch, isAllSelected]);\n\n return <Checkbox id=\"all\" size=\"l\" checked={isAllSelected} onChange={handleSelectChange} />;\n}\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\n\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {RootState} from '../../../../store/reducers';\nimport {RemoteCopyModalStateAction} from '../../../../store/reducers/navigation/modals/remote-copy-modal';\nimport {REMOTE_COPY_MODAL_PARTIAL} from '../../../../constants/navigation/modals';\nimport {RemoteCopyParams} from '../../../../../@types/types';\nimport axios from 'axios';\nimport {Toaster} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {showErrorPopup, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {YTError} from '../../../../types';\nimport {WithAttrs} from '../../../../utils/cypress-attributes';\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\n\ntype RemoteCopyThunkAction = ThunkAction<any, RootState, any, RemoteCopyModalStateAction>;\n\nexport function showRemoteCopyModal(paths: Array<string>): RemoteCopyThunkAction {\n return (dispatch) => {\n const requests = map_(paths, (path) => {\n return {\n command: 'get' as const,\n parameters: {\n path,\n attributes: ['compression_codec', 'erasure_codec'],\n },\n };\n });\n\n return wrapApiPromiseByToaster(\n ytApiV3.executeBatch<WithAttrs<{compression_codec?: string; erasure_codec?: string}>>({\n requests,\n }),\n {\n toasterName: 'remoteCopyAttributes',\n skipSuccessToast: true,\n errorContent(e: YTError) {\n return (\n <span>\n Failed to load attributes\n <ClickableText onClick={() => showErrorPopup(e)}>Details</ClickableText>\n </span>\n );\n },\n errorTitle: 'Failed to load attributes',\n batchType: 'v3',\n },\n )\n .then((results) => {\n const attributesMap = reduce_(\n paths,\n (acc, path, index) => {\n acc[path] = results[index]?.output?.$attributes;\n return acc;\n },\n {} as Record<string, unknown>,\n );\n dispatch({\n type: REMOTE_COPY_MODAL_PARTIAL,\n data: {paths, showModal: true, error: undefined, attributesMap},\n });\n })\n .catch((error) => {\n dispatch({type: REMOTE_COPY_MODAL_PARTIAL, data: {paths, showModal: true, error}});\n });\n };\n}\n\nexport function hideRemoteCopyModal(): RemoteCopyThunkAction {\n return (dispatch) => {\n dispatch({type: REMOTE_COPY_MODAL_PARTIAL, data: {showModal: false}});\n };\n}\n\nexport function remoteCopy(params: RemoteCopyParams): RemoteCopyThunkAction {\n return (dispatch) => {\n return axios.post<string>('/api/remote-copy', params).then(({data: id}) => {\n dispatch(hideRemoteCopyModal());\n const {dstCluster} = params;\n\n const toaster = new Toaster();\n toaster.add({\n theme: 'success',\n name: 'remoteCopyStarted',\n autoHiding: 500000,\n title: 'Remote copy',\n content: (\n <span>\n <Link url={`/${dstCluster}/operations/${id}`}>{id}</Link> operation started\n </span>\n ),\n });\n });\n };\n}\n","import React, {useCallback, useMemo} from 'react';\n\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport some_ from 'lodash/some';\n\nimport {useDispatch, useSelector} from 'react-redux';\nimport block from 'bem-cn-lite';\n\nimport Icon from '../../../../components/Icon/Icon';\nimport Button from '../../../../components/Button/Button';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {inTrash} from '../../../../utils/navigation/restore-object';\nimport {restoreObjects} from '../../../../store/actions/navigation/modals/restore-object';\nimport {openDeleteModal} from '../../../../store/actions/navigation/modals/delete-object';\nimport {OPEN_MOVE_OBJECT_POPUP} from '../../../../constants/navigation/modals/move-object';\nimport {OPEN_COPY_OBJECT_POPUP} from '../../../../constants/navigation/modals/copy-object';\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {\n getSelectedNodes,\n getSelectedNodesAllowedDynTablesActions,\n isSelected,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {showNavigationAttributesEditor} from '../../../../store/actions/navigation/modals/attributes-editor';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport copyToClipboard from 'copy-to-clipboard';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\n\nimport {ClickableText} from '../../../../components/ClickableText/ClickableText';\nimport {selectAll} from '../../../../store/actions/navigation/content/map-node';\nimport {showDynTablesStateModalByNodes} from '../../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {showRemoteCopyModal} from '../../../../store/actions/navigation/modals/remote-copy-modal';\nimport './MultipleActions.scss';\n\nconst b = block('multiple-actions');\n\nexport default function MultipleActions(props: {className: string}) {\n const {className} = props;\n\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n const isOneSelected = useSelector(isSelected);\n const selectedNodes = useSelector(getSelectedNodes);\n const isTooLarge = selectedNodes.length > 1000;\n\n const dynTablesActions = useSelector(getSelectedNodesAllowedDynTablesActions);\n\n const hasRestoreButton = useMemo(() => {\n return !some_(selectedNodes, ({path}) => !inTrash(path));\n }, [selectedNodes]);\n\n const handleDeleteClick = useCallback(() => {\n dispatch(openDeleteModal(selectedNodes, true));\n }, [dispatch, selectedNodes]);\n\n const allowModifyActions = !isOneSelected || isTooLarge;\n\n const dropdownButton = useMemo(\n () => <Button disabled={allowModifyActions}>More actions</Button>,\n [isOneSelected, isTooLarge],\n );\n\n const restoreMoveCopy = useMemo(() => {\n const res = [\n {\n text: 'Copy selected',\n icon: <Icon awesome=\"copy\" face=\"solid\" />,\n action: () => {\n dispatch(\n openEditingPopup(\n path,\n path + '/',\n OPEN_COPY_OBJECT_POPUP,\n true,\n selectedNodes,\n ),\n );\n },\n },\n {\n text: 'Move selected',\n icon: <Icon awesome=\"file-export\" face=\"solid\" />,\n action: () => {\n dispatch(\n openEditingPopup(\n path,\n path + '/',\n OPEN_MOVE_OBJECT_POPUP,\n true,\n selectedNodes,\n ),\n );\n },\n },\n ];\n if (hasRestoreButton) {\n res.splice(0, 0, {\n text: 'Restore selected',\n icon: <Icon awesome=\"undo\" />,\n action: () => {\n dispatch(restoreObjects(selectedNodes));\n },\n });\n }\n return res;\n }, [dispatch, hasRestoreButton, path, selectedNodes]);\n\n const transferItem = useMemo(() => {\n if (selectedNodes.length !== 1) {\n return [];\n }\n\n const [{type}] = selectedNodes;\n if (type !== 'table') {\n return [];\n }\n\n return [\n {\n text: 'Remote copy selected',\n icon: <Icon awesome=\"clone\" />,\n action: () => {\n dispatch(showRemoteCopyModal(map_(selectedNodes, 'path')));\n },\n },\n ];\n }, [selectedNodes]);\n\n const editItem = useMemo(() => {\n return {\n text: 'Edit selected',\n icon: <Icon awesome={'pencil-alt'} />,\n action: () => {\n const paths = map_(selectedNodes, 'path');\n dispatch(showNavigationAttributesEditor(paths));\n },\n };\n }, [selectedNodes]);\n\n const mergeSortSection = useMemo(() => {\n const allowSortMerge = !some_(selectedNodes, (node) => {\n return node.type !== 'table';\n });\n if (!allowSortMerge) {\n return [];\n }\n return [\n {\n text: 'Sort selected',\n icon: <Icon awesome={'sort'} />,\n action: () => {\n const paths = map_(selectedNodes, 'path');\n dispatch(showTableSortModal(paths));\n },\n },\n {\n text: 'Merge selected',\n icon: <Icon awesome={'code-merge'} />,\n action: () => {\n const paths = map_(selectedNodes, 'path');\n dispatch(showTableMergeModal(paths));\n },\n },\n ];\n }, [dispatch, selectedNodes]);\n\n const dynTablesSection = useMemo(() => {\n if (isEmpty_(dynTablesActions)) {\n return [];\n }\n\n const {mount, unmount, freeze, unfreeze} = dynTablesActions;\n const items = [\n ...(!mount\n ? []\n : [\n {\n text: 'Mount',\n icon: <Icon awesome={'link'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('mount', selectedNodes));\n },\n },\n ]),\n ...(!unmount\n ? []\n : [\n {\n text: 'Unmount',\n icon: <Icon awesome={'unlink'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('unmount', selectedNodes));\n },\n },\n ]),\n ...(!freeze\n ? []\n : [\n {\n text: 'Freeze',\n icon: <Icon awesome={'snowflake'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('freeze', selectedNodes));\n },\n },\n ]),\n ...(!unfreeze\n ? []\n : [\n {\n text: 'Unfreeze',\n icon: <Icon awesome={'flame'} />,\n action: () => {\n dispatch(showDynTablesStateModalByNodes('unfreeze', selectedNodes));\n },\n },\n ]),\n ];\n\n if (!items.length) {\n return [];\n }\n\n return items;\n }, [dispatch, selectedNodes, dynTablesActions]);\n\n const items = useMemo(() => {\n return [\n [editItem],\n mergeSortSection,\n restoreMoveCopy,\n transferItem,\n dynTablesSection,\n ].filter((e) => e.length);\n }, [restoreMoveCopy, editItem, mergeSortSection]);\n\n const onCopyPathClick = React.useCallback(() => {\n const res = map_(selectedNodes, 'path').join('\\n');\n copyToClipboard(res);\n }, [selectedNodes]);\n\n const handleClearAll = React.useCallback(() => {\n dispatch(selectAll(true));\n }, [dispatch]);\n\n return (\n <span className={b(null, className)}>\n <span className={b('item')}>\n <Button\n title=\"Delete selected nodes\"\n disabled={allowModifyActions}\n onClick={handleDeleteClick}\n >\n <Icon awesome=\"trash-alt\" />\n &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 getSortedNodesNames = createSelector([getFilteredNodes], (nodes) => {\n return nodes.map((node) => node.name);\n});\n\nexport const getNodesInfo = createSelector(getSortedNodes, (nodes) => {\n const sumNodesType = hammer.aggregation.countValues(nodes, 'type');\n\n return map_(Object.entries(sumNodesType), (keyValue) => {\n const [key, value] = keyValue;\n const type = key === 'undefined' ? 'Unknown' : key;\n return {\n type: hammer.format['Readable'](type),\n count: value,\n };\n });\n});\n\nexport const isRootNode = createSelector(\n getParsedPath,\n (parsedPath) => parsedPath.stringify() === '/',\n);\n\nexport const getMapNodeResourcesLoading = (state) =>\n state.navigation.content.mapNode.resourcesLoading;\n\nconst DATE_REGEXP = /^\\d{4}[-]\\d{2}[-]\\d{2}(T\\d{2}:\\d{2}:\\d{2})?(\\.[a-zA-Z0-9]+)?$/;\nexport const shouldApplyCustomSort = createSelector(\n [getNodes, makeGetSetting, getSortState],\n (nodes, getSetting, sortState) =>\n getSetting(SettingName.NAVIGATION.USE_SMART_SORT, NAMESPACES.NAVIGATION) &&\n sortState?.field === 'name' &&\n every_(nodes, (item) => DATE_REGEXP.test(item.name)),\n);\n\nexport const getLoadState = (state) => state.navigation.content.mapNode.loadState;\nexport const getError = (state) => state.navigation.content.mapNode.error;\n\nexport const getSelectedIndex = createSelector(\n [getSortedNodes, getFilterState],\n (nodes, filter) => {\n if (filter) {\n const strictIndex = findIndex_(nodes, ({name}) => name === filter);\n\n if (strictIndex === -1) {\n return findIndex_(nodes, ({name}) => name.startsWith(filter));\n }\n\n return strictIndex;\n }\n\n return 0;\n },\n);\n\nexport const getSelectedNodesDynTablesStates = createSelector([getSelectedNodes], (nodes) => {\n const res = reduce_(\n nodes,\n (acc, item) => {\n if (item.tabletState) {\n acc[item.tabletState] = true;\n }\n return acc;\n },\n {frozen: false, mounted: false, unmounted: false},\n );\n return res;\n});\n\nexport const getSelectedNodesAllowedDynTablesActions = createSelector(\n [getSelectedNodesDynTablesStates],\n (dynTablesStates) => {\n const res = reduce_(\n dynTablesStates,\n (acc, value, state) => {\n if (value) {\n Object.assign(acc, DYN_TABLES_ALLOWED_ACTIONS_BY_STATE[state]);\n }\n return acc;\n },\n {mount: false, unmount: false, freeze: false, unfreeze: false},\n );\n return pickBy_(res, Boolean);\n },\n);\n","import React from 'react';\nimport {ThunkAction} from 'redux-thunk';\nimport {\n LinkToModalAction,\n LinkToState,\n} from '../../../../store/reducers/navigation/modals/link-to-modal';\nimport {RootState} from '../../../../store/reducers';\nimport {LINK_TO_MODAL_PARTIAL} from '../../../../constants/navigation/modals';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {getCluster} from '../../../../store/selectors/global';\nimport Link from '../../../../components/Link/Link';\n\ntype LinkToModalThunkAction<R = any> = ThunkAction<R, RootState, unknown, LinkToModalAction>;\n\nexport function showLinkToModal(\n params: {path?: string; target?: string} = {},\n): LinkToModalThunkAction {\n return (dispatch) => {\n const {path, target} = params;\n dispatch({\n type: LINK_TO_MODAL_PARTIAL,\n data: {path, target, visible: true},\n });\n };\n}\n\nexport function hideLinkToModal(): LinkToModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: LINK_TO_MODAL_PARTIAL,\n data: {visible: false, linkPath: undefined, dstPath: undefined},\n });\n };\n}\n\nexport function createLink(params: Pick<LinkToState, 'path' | 'target'>): LinkToModalThunkAction {\n return (dispatch, getState) => {\n const {target, path} = params;\n const cluster = getCluster(getState());\n\n return ytApiV3\n .create({\n path,\n type: 'link',\n attributes: {target_path: target},\n })\n .then(() => {\n dispatch(hideLinkToModal());\n const toast = new Toaster();\n toast.add({\n name: 'create-link',\n theme: 'success',\n title: 'Link created',\n content: <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link>,\n });\n });\n };\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport metrics from '../../../../common/utils/metrics';\n\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {inTrash} from '../../../../utils/navigation/restore-object';\nimport {getTransaction} from '../../../../store/selectors/navigation';\n\nimport ypath from '../../../../common/thor/ypath';\nimport {OPEN_MOVE_OBJECT_POPUP} from '../../../../constants/navigation/modals/move-object';\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {OPEN_COPY_OBJECT_POPUP} from '../../../../constants/navigation/modals/copy-object';\nimport {openAttributesModal} from '../../../../store/actions/modals/attributes-modal';\nimport {showNavigationAttributesEditor} from '../../../../store/actions/navigation/modals/attributes-editor';\nimport {restoreObject} from '../../../../store/actions/navigation/modals/restore-object';\nimport {updateView} from '../../../../store/actions/navigation';\nimport {openDeleteModal} from '../../../../store/actions/navigation/modals/delete-object';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {showTableEraseModal} from '../../../../store/actions/navigation/modals/table-erase-modal';\nimport {getSelectedNodes} from '../../../../store/selectors/navigation/content/map-node';\nimport {showDynTablesStateModalByPaths} from '../../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {DYN_TABLES_ALLOWED_ACTIONS_BY_STATE} from '../../../../store/selectors/navigation/content/map-node-ts';\nimport {TabletStateType} from '../../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {ButtonProps, DropdownMenu} from '@gravity-ui/uikit';\nimport {showLinkToModal} from '../../../../store/actions/navigation/modals/link-to-modal';\nimport {showRemoteCopyModal} from '../../../../store/actions/navigation/modals/remote-copy-modal';\n\ninterface Props {\n item: {\n name: string;\n type: string;\n dynamic: boolean;\n path: string;\n $attributes: object;\n $value: unknown;\n tabletState: TabletStateType;\n };\n\n onlyDropdown?: boolean;\n dropDownBtnClassName?: string;\n dropDownBtnTheme?: ButtonProps['view'];\n dropDownBtnSize?: ButtonProps['size'];\n}\n\nfunction PathActions(props: Props) {\n const {item} = props;\n const objectPath = item.path;\n\n const dispatch = useDispatch();\n const transaction = useSelector(getTransaction);\n\n const restorePath = ypath.getValue(item.$attributes, '/_restore_path');\n const hasRestoreButton = inTrash(item.path);\n\n const {\n onMove,\n onCopy,\n onLink,\n onShowAttributes,\n onEditAttributes,\n onRestoreClick,\n onDeleteClick,\n onCopyPathClick,\n onSort,\n onErase,\n onMerge,\n onMount,\n onUnmount,\n onFreeze,\n onUnfreeze,\n onTransfer,\n } = React.useMemo(() => {\n const handleUpdateView = (...args: any) => dispatch(updateView(...args));\n\n return {\n onMove(evt: React.MouseEvent) {\n dispatch(openEditingPopup(objectPath, objectPath, OPEN_MOVE_OBJECT_POPUP));\n evt.stopPropagation();\n },\n onCopy(evt: React.MouseEvent) {\n dispatch(openEditingPopup(objectPath, objectPath, OPEN_COPY_OBJECT_POPUP));\n evt.stopPropagation();\n },\n onShowAttributes(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_attributes': 'clicked',\n });\n dispatch(\n openAttributesModal({\n title: item.$value,\n path: item.path,\n } as any),\n );\n evt.stopPropagation();\n },\n onEditAttributes(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_edit_attributes': 'clicked',\n });\n dispatch(showNavigationAttributesEditor([item.path]));\n evt.stopPropagation();\n },\n onRestoreClick(evt: React.MouseEvent) {\n dispatch(restoreObject(objectPath, restorePath, handleUpdateView));\n evt.stopPropagation();\n },\n\n onDeleteClick(evt: React.MouseEvent) {\n metrics.countEvent({'navigation_map-node_delete': 'clicked'});\n dispatch(openDeleteModal(item));\n evt.stopPropagation();\n },\n onCopyPathClick(evt: React.MouseEvent) {\n metrics.countEvent({\n 'navigation_map-node_copy-path': 'clicked',\n });\n evt.stopPropagation();\n },\n onSort(e: React.MouseEvent) {\n dispatch(showTableSortModal([item.path]));\n e.stopPropagation();\n },\n onErase(evt: React.MouseEvent) {\n dispatch(showTableEraseModal(item.path));\n evt.stopPropagation();\n },\n onMerge(evt: React.MouseEvent) {\n dispatch(showTableMergeModal([item.path]));\n evt.stopPropagation();\n },\n onMount(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'mount'));\n evt.stopPropagation();\n },\n onUnmount(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'unmount'));\n evt.stopPropagation();\n },\n onFreeze(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'freeze'));\n evt.stopPropagation();\n },\n onUnfreeze(evt: React.MouseEvent) {\n dispatch(showDynTablesStateModalByPaths([item.path], 'unfreeze'));\n evt.stopPropagation();\n },\n onLink(evt: React.MouseEvent) {\n dispatch(showLinkToModal({target: item.path}));\n evt.stopPropagation();\n },\n onTransfer(evt: React.MouseEvent) {\n dispatch(showRemoteCopyModal([item.path]));\n evt.stopPropagation();\n },\n };\n }, [dispatch, objectPath, item, restorePath]);\n\n const selectedNodes = useSelector(getSelectedNodes);\n if (selectedNodes.length) {\n return null;\n }\n\n const secondGroup = [\n {\n text: 'Move',\n icon: <Icon awesome=\"file-export\" face=\"solid\" />,\n action: onMove,\n },\n {\n text: 'Copy',\n icon: <Icon awesome=\"copy\" face=\"solid\" />,\n action: onCopy,\n },\n {\n text: 'Link',\n icon: <Icon awesome=\"link\" face=\"solid\" />,\n action: onLink,\n },\n {\n text: 'Delete',\n icon: <Icon awesome=\"trash-alt\" />,\n action: onDeleteClick,\n },\n ];\n\n const firstGroup: Array<{\n text: string;\n icon?: React.ReactNode;\n action: (evt: any) => void;\n }> = [\n {\n text: 'Attributes',\n icon: <Icon awesome=\"at\" />,\n action: onShowAttributes,\n },\n {\n text: 'Edit',\n icon: <Icon awesome=\"pencil-alt\" />,\n action: onEditAttributes,\n },\n ];\n\n if (hasRestoreButton) {\n firstGroup.unshift({\n text: 'Restore',\n icon: <Icon awesome=\"undo\" />,\n action: onRestoreClick,\n });\n }\n const menuItems = [firstGroup];\n\n if (item.type === 'table') {\n const isDynamic = item.dynamic;\n if (isDynamic) {\n const {tabletState} = item;\n const {mount, unmount, freeze, unfreeze} =\n DYN_TABLES_ALLOWED_ACTIONS_BY_STATE[tabletState] || {};\n const items = [\n ...(mount\n ? [\n {\n text: 'Mount',\n icon: <Icon awesome={'link'} />,\n action: onMount,\n },\n ]\n : []),\n ...(unmount\n ? [\n {\n text: 'Unmount',\n icon: <Icon awesome={'unlink'} />,\n action: onUnmount,\n },\n ]\n : []),\n ...(freeze\n ? [\n {\n text: 'Freeze',\n icon: <Icon awesome={'snowflake'} />,\n action: onFreeze,\n },\n ]\n : []),\n ...(unfreeze\n ? [\n {\n text: 'Unfreeze',\n icon: <Icon awesome={'flame'} />,\n action: onUnfreeze,\n },\n ]\n : []),\n ];\n if (items.length) {\n menuItems.push(items);\n }\n }\n menuItems.push([\n {\n text: 'Sort',\n icon: <Icon awesome={'sort'} />,\n action: onSort,\n },\n ...(!isDynamic\n ? [\n {\n text: 'Erase',\n icon: <Icon awesome={'eraser'} />,\n action: onErase,\n },\n ]\n : []),\n {\n text: 'Merge',\n icon: <Icon awesome={'code-merge'} />,\n action: onMerge,\n },\n ]);\n }\n if (item.type === 'table' || item.type === 'file') {\n menuItems.push([\n {\n text: 'Remote copy',\n icon: <Icon awesome={'clone'} />,\n action: onTransfer,\n },\n ]);\n }\n\n menuItems.push(secondGroup);\n\n const commonProps = {\n view: 'flat-secondary' as const,\n size: 'm' as const,\n };\n\n const {\n onlyDropdown,\n dropDownBtnClassName,\n dropDownBtnTheme = 'flat-secondary',\n dropDownBtnSize = 'm',\n } = props;\n\n return (\n <React.Fragment>\n {!onlyDropdown && (\n <Button\n {...commonProps}\n title=\"Delete node\"\n disabled={Boolean(transaction)}\n onClick={onDeleteClick}\n >\n <Icon awesome=\"trash-alt\" />\n </Button>\n )}\n\n {!onlyDropdown && (\n <ClipboardButton\n {...commonProps}\n text={item.path}\n title=\"Copy path\"\n onCopy={onCopyPathClick}\n />\n )}\n\n <DropdownMenu\n switcher={\n <Button\n size={dropDownBtnSize}\n className={dropDownBtnClassName}\n view={dropDownBtnTheme}\n >\n <Icon awesome=\"ellipsis-h\" />\n </Button>\n }\n items={menuItems}\n />\n </React.Fragment>\n );\n}\n\nexport default React.memo(PathActions);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport './EditTableAction.scss';\n\nimport {getNavigationPathAttributes} from '../../../../../store/selectors/navigation/navigation';\nimport PathActions from '../../MapNode/PathActions';\n\nconst block = cn('edit-table-actions');\n\nexport default function EditTableActions() {\n const path = useSelector(getPath);\n const attributes = useSelector(getNavigationPathAttributes);\n\n return (\n <PathActions\n onlyDropdown={true}\n dropDownBtnClassName={block('button')}\n dropDownBtnTheme={'outlined'}\n dropDownBtnSize={'m'}\n item={{\n name: '',\n path,\n type: 'table',\n dynamic: ypath.getValue(attributes, '/dynamic'),\n tabletState: ypath.getValue(attributes, '/tablet_state'),\n $value: undefined,\n $attributes: attributes,\n }}\n />\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {getNavigationTableDataLensButtonAlerts} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {Button} from '@gravity-ui/uikit';\nimport {Secondary, Warning} from '../../../../../components/Text/Text';\nimport Link from '../../../../../components/Link/Link';\nimport {getNavigationPathAttributesLoadState} from '../../../../../store/selectors/navigation/navigation';\nimport {LOADING_STATUS} from '../../../../../constants';\nimport {docsUrl} from '../../../../../config';\nimport {uiSettings} from '../../../../../config/ui-settings';\nimport UIFactory from '../../../../../UIFactory';\n\nexport default function DataLensButton({className}: {className: string}) {\n const loaded = useSelector(getNavigationPathAttributesLoadState) === LOADING_STATUS.LOADED;\n const cluster: string = useSelector(getCluster);\n const path = useSelector(getPath);\n const {isEmptySchema, enableDynamicStoreRedRequired} = useSelector(\n getNavigationTableDataLensButtonAlerts,\n );\n\n const {datalensBaseUrl, datalensAllowedCluster} = uiSettings;\n\n if (!datalensBaseUrl || !new Set(datalensAllowedCluster).has(cluster)) {\n return null;\n }\n const showTooltip = isEmptySchema || enableDynamicStoreRedRequired;\n\n const url = `${datalensBaseUrl}/datasets/new?id=CHYT_${cluster.toUpperCase()}&ytPath=${path}&action=autoCreate`;\n\n const btn = (\n <Button\n href={url}\n view={'action'}\n target=\"_blank\"\n title=\"Create dataset in DataLens\"\n disabled={!loaded || showTooltip}\n >\n <Icon awesome={'chart-bar'} />\n DataLens\n </Button>\n );\n\n const linkUrl = UIFactory.docsUrls['chyt:yt_tables#dynamic'];\n const content = !showTooltip ? (\n btn\n ) : (\n <Tooltip\n content={\n <Warning>\n {isEmptySchema && <div>Please make sure that the table has schema.</div>}\n {enableDynamicStoreRedRequired && (\n <div>\n Please make sure that the table has enabled{' '}\n <Secondary>enable_dynamic_store_read</Secondary> attribute.\n {linkUrl !== '' && docsUrl(<Link url={linkUrl}> Help </Link>)}\n </div>\n )}\n </Warning>\n }\n >\n {btn}\n </Tooltip>\n );\n\n return <div className={className}>{content}</div>;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport PropTypes from 'prop-types';\nimport {Sticky} from 'react-sticky';\nimport {connect} from 'react-redux';\nimport ypath from '../../../../../common/thor/ypath';\n\nimport {getIsSortedDynamic} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {getAttributes} from '../../../../../store/selectors/navigation';\n\nimport ColumnSelectorButton from '../../../../../pages/navigation/content/Table/TableOverview/ColumnSelectorButton';\nimport FullScreenButton from '../../../../../pages/navigation/content/Table/TableOverview/FullScreenButton';\nimport SettingsButton from '../../../../../pages/navigation/content/Table/TableOverview/SettingsButton';\nimport JupyterButton from '../../../../../pages/navigation/content/Table/TableOverview/JupyterButton';\nimport TableActions from '../../../../../pages/navigation/content/Table/TableOverview/TableActions';\nimport OffsetInput from '../../../../../pages/navigation/content/Table/TableOverview/OffsetInput';\nimport Paginator from '../../../../../pages/navigation/content/Table/TableOverview/Paginator';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport {CreateQueryFromTable} from './CreateQueryFromTable';\n\nimport {HEADER_HEIGHT} from '../../../../../constants/index';\n\nimport './TableOverview.scss';\nimport EditTableActions from './EditTableActions';\nimport DataLensButton from './DatalensButton';\n\nconst block = cn('navigation-table-overview');\n\nTableOverview.propTypes = {\n // from connect\n isFullScreen: PropTypes.bool.isRequired,\n isSplit: PropTypes.bool.isRequired,\n};\n\nfunction TableOverview(props) {\n const {isFullScreen, isSplit, allowOffsetInput} = 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 {allowOffsetInput && <OffsetInput block={block} />}\n {!isFullScreen && <ColumnSelectorButton block={block} />}\n {!isFullScreen && <SettingsButton block={block} />}\n {!isFullScreen && <CreateQueryFromTable className={block('query')} />}\n {!isFullScreen && <JupyterButton block={block} />}\n {!isFullScreen && <DataLensButton className={block('datalens')} />}\n {!isFullScreen && <TableActions block={block} />}\n <FullScreenButton block={block} />\n {!isFullScreen && <EditTableActions />}\n </div>\n )}\n </Sticky>\n </ErrorBoundary>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {isFullScreen} = state.navigation.content.table;\n const {isSplit} = state.global.splitScreen;\n const isSortedDynamic = getIsSortedDynamic(state);\n const attributes = getAttributes(state);\n\n const isUnmounted = ypath.getValue(attributes, '/tablet_state') === 'unmounted';\n const allowOffsetInput = !(isSortedDynamic && isUnmounted);\n\n return {\n isFullScreen,\n isSplit,\n allowOffsetInput,\n };\n};\n\nexport default connect(mapStateToProps)(TableOverview);\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport {connect} from 'react-redux';\n\nimport cn from 'bem-cn-lite';\n\nimport escapeRegExp_ from 'lodash/escapeRegExp';\nimport filter_ from 'lodash/filter';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport {TextInput} from '@gravity-ui/uikit';\nimport Modal from '../../../../../components/Modal/Modal';\n\nimport Query from '../../../../../utils/navigation/content/table/query';\n\nimport {\n getCurrentOffsetValues,\n getIsTableSorted,\n} from '../../../../../store/selectors/navigation/content/table';\nimport {\n closeOffsetSelectorModal,\n moveOffset,\n} from '../../../../../store/actions/navigation/content/table/pagination';\n\nimport './OffsetSelectorModal.scss';\n\nconst block = cn('offset-selector');\n\nclass OffsetSelectorModal extends Component {\n static itemProps = PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string,\n checked: PropTypes.bool.isRequired,\n });\n\n static propTypes = {\n // from connect\n isOffsetSelectorOpen: PropTypes.bool.isRequired,\n closeOffsetSelectorModal: PropTypes.func.isRequired,\n moveOffset: PropTypes.func.isRequired,\n initialItems: PropTypes.arrayOf(OffsetSelectorModal.itemProps).isRequired,\n isTableSorted: PropTypes.bool.isRequired,\n };\n\n constructor(props) {\n super(props);\n const {initialItems} = this.props;\n this.state = {\n filter: '',\n initialItems,\n items: initialItems,\n };\n }\n\n static getDerivedStateFromProps({initialItems}, state) {\n if (initialItems === state.initialItems) {\n return null;\n }\n return {\n initialItems,\n items: initialItems,\n };\n }\n\n _handleCONFIRMButtonClick = () => {\n const {items} = this.state;\n const {isTableSorted, moveOffset, closeOffsetSelectorModal} = this.props;\n const minKeyValue = isTableSorted ? 'null' : '0';\n const offsetValues = map_(items, (item) => {\n return isEmpty_(item.value) ? minKeyValue : item.value;\n });\n moveOffset(Query.prepareKey(offsetValues));\n closeOffsetSelectorModal();\n };\n\n _handleCANCELButtonClick = () => {\n const {closeOffsetSelectorModal} = this.props;\n this.setState(({initialItems}) => ({items: initialItems}));\n closeOffsetSelectorModal();\n };\n\n _changeFilter = (filter) => {\n this.setState({filter});\n };\n\n updateItemValue = (name, value) => {\n this.setState(({items: prevItems}) => {\n const items = [...prevItems];\n const index = items.findIndex((item) => item.name === name);\n const changedItem = items[index];\n items[index] = {...changedItem, value};\n return {items};\n });\n };\n\n _handleInputChange = (name) => (value) => {\n this.updateItemValue(name, value);\n };\n\n renderSearchBox() {\n return (\n <TextInput\n theme=\"normal\"\n size=\"s\"\n placeholder=\"Search...\"\n onUpdate={this._changeFilter}\n text={this.state.filter}\n hasClear={true}\n />\n );\n }\n\n filterItemsByName(items, filter) {\n const re = new RegExp(escapeRegExp_(filter), 'i');\n return filter_(items, (item) => re.test(item.name));\n }\n\n renderItems() {\n const {items, filter} = this.state;\n const visibleItems = this.filterItemsByName(items, filter);\n return (\n <div className={block('items')}>\n <div className={block('item-group')}>{this.renderSearchBox()}</div>\n {map_(visibleItems, (item) => {\n return (\n <label\n key={item.name}\n className={block('item-group', {\n disabled: !item.checked,\n })}\n >\n {item.name}\n <div className={block('item')}>\n <TextInput\n theme=\"normal\"\n size=\"s\"\n placeholder=\"\"\n onUpdate={this._handleInputChange(item.name)}\n text={item.value}\n hasClear={true}\n />\n </div>\n </label>\n );\n })}\n </div>\n );\n }\n\n renderContent() {\n return <div className={block('content')}>{this.renderItems()}</div>;\n }\n\n render() {\n const {isOffsetSelectorOpen} = this.props;\n return (\n <Modal\n size=\"m\"\n title=\"Keys\"\n borderless={true}\n visible={isOffsetSelectorOpen}\n confirmText=\"Confirm\"\n onConfirm={this._handleCONFIRMButtonClick}\n onCancel={this._handleCANCELButtonClick}\n content={this.renderContent()}\n className={block()}\n contentClassName={block(null, 'pretty-scroll')}\n />\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {isOffsetSelectorOpen} = state.navigation.content.table;\n const initialItems = getCurrentOffsetValues(state);\n const isTableSorted = getIsTableSorted(state);\n\n return {isOffsetSelectorOpen, initialItems, isTableSorted};\n};\n\nconst mapDispatchToProps = {\n closeOffsetSelectorModal,\n moveOffset,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OffsetSelectorModal);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {\n getColumnsPresetColumns,\n getColumnsPresetError,\n getColumnsPresetHash,\n} from '../../../../../store/selectors/navigation/content/table-ts';\nimport {Warning} from '../../../../../components/Text/Text';\nimport Yson from '../../../../../components/Yson/Yson';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport CollapsibleSection from '../../../../../components/CollapsibleSection/CollapsibleSection';\n\nimport './TableColumnsPresetNotice.scss';\n\nconst block = cn('table-columns-preset-notice');\n\nfunction TableColumnsPresetNotice() {\n const hash = useSelector(getColumnsPresetHash);\n const columns = useSelector(getColumnsPresetColumns);\n const error: any = useSelector(getColumnsPresetError);\n\n if (!hash) {\n return null;\n }\n\n if (error) {\n return (\n <ErrorBlock\n error={error.response?.data || error}\n message={'Cannot load preset of columns'}\n />\n );\n }\n\n console.log(columns);\n\n return (\n <Warning className={block()}>\n <CollapsibleSection\n name={'The table is opened with preset of columns'}\n size={'unset'}\n collapsed\n >\n {!columns?.length ? null : (\n <span>\n {map_(columns, (item, index) => {\n return (\n <React.Fragment key={index}>\n <Yson key={index} value={item} className={block('column')} />\n {index !== columns.length - 1 && ', '}\n </React.Fragment>\n );\n })}\n </span>\n )}\n </CollapsibleSection>\n </Warning>\n );\n}\n\nexport default React.memo(TableColumnsPresetNotice);\n","/* eslint-disable react/prop-types */\nimport {StickyContainer} from 'react-sticky';\nimport React, {useEffect} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport DataTableWrapper from '../../../../pages/navigation/content/Table/DataTableWrapper/DataTableWrapper';\nimport TableOverview from '../../../../pages/navigation/content/Table/TableOverview/TableOverview';\nimport ColumnSelectorModal from '../../../../components/ColumnSelectorModal/ColumnSelectorModal';\nimport OffsetSelectorModal from '../../../../pages/navigation/content/Table/OffsetSelectorModal/OffsetSelectorModal';\nimport TableMeta from '../../../../pages/navigation/content/Table/TableMeta/TableMeta';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport FullScreen from '../../../../components/FullScreen/FullScreen';\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {OVERVIEW_HEIGHT} from '../../../../constants/navigation/content/table';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\nimport {\n abortAndReset,\n closeColumnSelectorModal,\n getTableData,\n handleScreenChanged,\n updateColumns,\n} from '../../../../store/actions/navigation/content/table/table';\nimport {\n getAllColumns,\n getOffsetValue,\n getSrcColumns,\n getVisibleColumns,\n getVisibleRows,\n isYqlTypesEnabled,\n} from '../../../../store/selectors/navigation/content/table';\nimport {\n getColumns,\n getIsDynamic,\n getKeyColumns,\n getNavigationTableLoadingState,\n getYqlTypes,\n} from '../../../../store/selectors/navigation/content/table-ts';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getTableYsonSettings} from '../../../../store/selectors/thor/unipika';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './Table.scss';\nimport TableColumnsPresetNotice from './TableOverview/TableColumnsPresetNotice';\nimport {makeTableRumId} from '../../../../store/actions/navigation/content/table/table-rum-id';\n\nconst block = cn('navigation-table');\n\nTable.columnsProps = PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n data: PropTypes.shape({\n caption: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n }).isRequired,\n keyColumn: PropTypes.bool.isRequired,\n checked: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n\n accessor: PropTypes.func,\n label: PropTypes.string,\n }),\n);\n\nTable.propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n isSplit: PropTypes.bool.isRequired,\n isDynamic: PropTypes.bool.isRequired,\n isFullScreen: PropTypes.bool.isRequired,\n settings: Yson.settingsProps.isRequired,\n isColumnSelectorOpen: PropTypes.bool.isRequired,\n visibleRows: PropTypes.arrayOf(PropTypes.object).isRequired,\n\n columns: Table.columnsProps.isRequired,\n allColumns: Table.columnsProps.isRequired,\n srcColumns: Table.columnsProps.isRequired,\n keyColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n\n offsetValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n yqlTypes: PropTypes.array,\n\n updateColumns: PropTypes.func.isRequired,\n getTableData: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n handleScreenChanged: PropTypes.func.isRequired,\n closeColumnSelectorModal: PropTypes.func.isRequired,\n};\n\nconst renderColumnSelectorModal = (props) => {\n const {updateColumns, allColumns, srcColumns, isColumnSelectorOpen, closeColumnSelectorModal} =\n props;\n\n return (\n <ColumnSelectorModal\n items={allColumns}\n srcItems={srcColumns}\n onConfirm={updateColumns}\n isVisible={isColumnSelectorOpen}\n onCancel={closeColumnSelectorModal}\n />\n );\n};\n\nconst renderTable = (props) => {\n const {\n visibleColumns,\n keyColumns,\n yqlTypes,\n settings,\n visibleRows,\n isDynamic,\n isFullScreen,\n offsetValue,\n loading,\n loaded,\n isSplit,\n } = props;\n\n let stickyTop;\n if (isSplit) {\n stickyTop = 0; // TODO: add sticky for the Overview in the split mode https://github.com/captivationsoftware/react-sticky/issues/282\n } else if (isFullScreen) {\n stickyTop = 0;\n } else {\n stickyTop = HEADER_HEIGHT + OVERVIEW_HEIGHT;\n }\n\n const tableSettings = {\n stickyTop,\n stickyHead: 'moving',\n syncHeadOnResize: true,\n sortable: false,\n stripedRows: true,\n displayIndices: !isDynamic,\n };\n\n return (\n <LoadDataHandler {...props} loaded={false}>\n <DataTableWrapper\n data={visibleRows}\n loaded={loaded}\n loading={loading}\n yqlTypes={yqlTypes}\n keyColumns={keyColumns}\n ysonSettings={settings}\n settings={tableSettings}\n columns={visibleColumns}\n isFullScreen={isFullScreen}\n emptyDataMessage=\"No items to show\"\n startIndex={!isDynamic ? offsetValue : undefined}\n />\n </LoadDataHandler>\n );\n};\n\nfunction Table(props) {\n const {path, getTableData, abortAndReset} = props;\n const isYqlV3Types = useSelector(isYqlTypesEnabled);\n\n useEffect(() => {\n getTableData();\n return abortAndReset;\n }, [path, isYqlV3Types, abortAndReset]);\n\n const {isFullScreen, handleScreenChanged, isDynamic} = props;\n return (\n <div className={block()}>\n <TableMeta />\n <TableColumnsPresetNotice />\n <FullScreen\n className={block('fullscreen')}\n enabled={isFullScreen}\n onChange={handleScreenChanged}\n >\n <StickyContainer>\n <TableOverview />\n {renderTable(props)}\n </StickyContainer>\n </FullScreen>\n {renderColumnSelectorModal(props)}\n {isDynamic && <OffsetSelectorModal />}\n </div>\n );\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, isColumnSelectorOpen, isFullScreen} =\n state.navigation.content.table;\n const settings = getTableYsonSettings(state);\n const {isSplit} = state.global.splitScreen;\n\n const path = getPath(state);\n const columns = getColumns(state);\n const yqlTypes = getYqlTypes(state);\n const isDynamic = getIsDynamic(state);\n const keyColumns = getKeyColumns(state);\n const allColumns = getAllColumns(state);\n const srcColumns = getSrcColumns(state);\n const visibleRows = getVisibleRows(state);\n const offsetValue = getOffsetValue(state);\n const visibleColumns = getVisibleColumns(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n columns,\n keyColumns,\n allColumns,\n srcColumns,\n visibleColumns,\n isSplit,\n path,\n isDynamic,\n visibleRows,\n yqlTypes,\n settings,\n offsetValue,\n isColumnSelectorOpen,\n isFullScreen,\n };\n};\n\nconst mapDispatchToProps = {\n updateColumns,\n getTableData,\n abortAndReset,\n handleScreenChanged,\n closeColumnSelectorModal,\n};\n\nconst TableConnected = compose(connect(mapStateToProps, mapDispatchToProps))(Table);\n\nexport default function TableWithRum() {\n const loadState = useSelector(getNavigationTableLoadingState);\n const isDynamic = useSelector(getIsDynamic);\n const cluster = useSelector(getCluster);\n\n const measureId = makeTableRumId({cluster, isDynamic}).getMeasureId();\n\n useAppRumMeasureStart({\n type: measureId,\n startDeps: [loadState, measureId],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: measureId,\n stopDeps: [loadState, measureId],\n sybType: isDynamic ? 'dynamic' : 'static',\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TableConnected />;\n}\n","import React from 'react';\n\nimport MetaTable from '../../components/MetaTable/MetaTable';\nimport {TTLLabel, makeTTLItems} from '../../components/MetaTable/presets/ttl';\nimport {Tooltip, TooltipProps} from '../../components/Tooltip/Tooltip';\n\nexport default function TTLInfo({\n attributes,\n onClick,\n size,\n className,\n}: {\n attributes: unknown;\n onClick: TooltipProps['onClick'];\n size: React.ComponentProps<typeof TTLLabel>['size'];\n className?: string;\n}) {\n const ttlItems = makeTTLItems(attributes);\n\n if (!ttlItems.length) {\n return null;\n }\n\n return (\n <Tooltip\n className={className}\n content={<MetaTable items={ttlItems} />}\n forceLinksAppearance={false}\n onClick={onClick}\n >\n <TTLLabel size={size} />\n </Tooltip>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {connect} from 'react-redux';\n\nimport forEach_ from 'lodash/forEach';\nimport isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport some_ from 'lodash/some';\nimport sortBy_ from 'lodash/sortBy';\nimport set_ from 'lodash/set';\n\nimport Button from '../../../../components/Button/Button';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport Icon from '../../../../components/Icon/Icon';\nimport Link from '../../../../components/Link/Link';\n\nimport {\n closeCreateTableModal,\n createTable,\n setCreateTableGroupSuggestions,\n setCreateTableLockSuggestions,\n} from '../../../../store/actions/navigation/modals/create-table';\n\nimport {createNewColumn} from '../../../../store/reducers/navigation/modals/create-table';\n\nimport {\n ColumnAggregateTypes as AggrTypes,\n ColumnAggregateType,\n ColumnDataTypes,\n SELECT_EMPTY_VALUE,\n} from '../../../../constants/navigation/modals/create-table';\nimport {\n getColumnGroupSuggestions,\n getColumnLockSuggestions,\n getCreateTableModalState,\n} from '../../../../store/selectors/navigation/modals/create-table';\nimport {StorageOptions} from '../../../../utils/cypress-attributes';\n\nimport {RootState} from '../../../../store/reducers';\nimport {\n getCompressionCodecs,\n getErasureCodecs,\n getPrimitiveTypes,\n} from '../../../../store/selectors/global/supported-features';\nimport {SelectWithSubItemsProps} from '../../../../components/Dialog/controls/SelectWithSubItems/SelectWithSubItems';\nimport {docsUrl, getNewTableReplicasCount} from '../../../../config';\n\nimport './CreateTableModal.scss';\nimport {ASCENDING, DESCENDING} from './CreateTableTabField/CreateTableTabField';\nimport {FIX_MY_TYPE} from '../../../../types';\nimport UIFactory from '../../../../UIFactory';\n\nconst block = cn('create-table-modal');\n\nfunction getNoSuggestionsMsg() {\n return 'There is no any suggestions yet';\n}\n\nexport function makeLink(url: string, label = 'Help', inline = false) {\n const link = (\n <Link target={'_blank'} url={url}>\n {label}\n </Link>\n );\n return inline ? link : <div>{link}</div>;\n}\n\nenum TableType {\n QUEUE = 'queue',\n DYNAMIC = 'dynamic',\n STATIC = 'static',\n}\n\nconst AGGREGATE_CHOICES = [{value: SELECT_EMPTY_VALUE, text: 'default'}].concat(\n map_(AggrTypes, (i) => ({value: i, text: i})),\n);\n\ninterface WithVisibilityCondition {\n visibilityCondition: {\n when: string;\n isActive: (v: any) => boolean;\n };\n extras?: {\n disable?: boolean;\n };\n}\n\nfunction deactivateFieldByVisibilityCondition<T extends WithVisibilityCondition>(\n field: T,\n): Array<T> {\n const {\n visibilityCondition: {when, isActive},\n ...rest\n } = field;\n return [\n {\n ...rest,\n visibilityCondition: {\n when,\n isActive,\n },\n } as any,\n {\n ...rest,\n visibilityCondition: {\n when,\n isActive: (v: any) => !isActive(v),\n },\n extras: {\n disabled: true,\n },\n } as any,\n ];\n}\n\nconst TABLE_SETTINGS = 'tableSettings';\nconst COLUMNS = 'columns';\n\ninterface Props {\n className?: string;\n showModal: boolean;\n\n parentDirectory?: string;\n\n closeCreateTableModal: () => void;\n lockSuggestions: Array<string>;\n groupSuggestions: Array<string>;\n sortedColumnsCount: number;\n columnNameCounters: Record<number, number>;\n\n modifyColumn: () => void;\n removeColumn: () => void;\n setColumnSort: () => void;\n createTable: (path: string, settings: unknown) => Promise<void>;\n setColumnName: () => void;\n\n setCreateTableGroupSuggestions: (items: Array<string>) => void;\n setCreateTableLockSuggestions: (items: Array<string>) => void;\n\n columnsOrder: Record<number, ColumnData>;\n\n keyColumns: Record<string, -1 | 1>;\n\n compressionCodecs: Pick<SelectWithSubItemsProps, 'items' | 'subItemsMap'>;\n erasureCodecs: Array<{value: string; text: string}>;\n primitiveTypes: Array<{value: string; text: string}>;\n}\n\ninterface ColumnData {\n id: string;\n name: string;\n nameError?: string;\n dataType?: string;\n aggregate?: ColumnAggregateType | typeof SELECT_EMPTY_VALUE;\n optional?: boolean;\n ascending?: 1 | -1;\n lock?: string;\n group?: string;\n type?: string;\n sort_order?: string;\n}\n\ninterface TableSettingsTab {\n uniqueKeys: boolean;\n name: string;\n replicasCount: string;\n tableType: TableType;\n}\n\nfunction genNewName(items: Array<{name: string}>, name: string) {\n const names = new Set(map_(items, 'name'));\n if (!names.has(name)) {\n return name;\n }\n\n for (let i = 0; i < items.length; ++i) {\n const tmp = `${name}_${i + 1}`;\n if (!names.has(tmp)) {\n return tmp;\n }\n }\n\n return name;\n}\n\nclass CreateTableModalContentImpl extends React.Component<Props> {\n nextId = 2;\n\n tableType = TableType.STATIC;\n tableName = undefined;\n replicasCount = getNewTableReplicasCount();\n uniqueKeys = false;\n activeTabId = TABLE_SETTINGS;\n\n private columns: Array<ColumnData> = [];\n\n // eslint-disable-next-line react/sort-comp\n createNewColumn = (selectedColumnTab?: ColumnData, options: {userOptions?: any} = {}) => {\n const {duplicate} = options?.userOptions || {};\n\n const {primitiveTypes} = this.props;\n const newTab = createNewColumn(this.nextId++, primitiveTypes[0]?.value);\n\n if (!duplicate || !selectedColumnTab) {\n return newTab;\n } else {\n const name = genNewName(this.columns, selectedColumnTab.name + '_copy');\n return {\n ...newTab,\n ...selectedColumnTab,\n name,\n id: newTab.id,\n };\n }\n };\n\n reorderColumns(columns: Array<ColumnData>) {\n const {columnsOrder} = this.props;\n const indexById = reduce_(\n columnsOrder,\n (acc, item, index) => {\n acc[item.id] = index as any;\n return acc;\n },\n {} as Record<string, number>,\n );\n return sortBy_(columns, (item) => indexById[item.id]);\n }\n\n onAdd = (form: FormApi<FIX_MY_TYPE>): Promise<void> => {\n const {values} = form.getState();\n const {\n [TABLE_SETTINGS]: {\n name: path,\n tableType,\n compressionCodec: compCodec,\n storageOption,\n replicasCount,\n erasureCodec,\n uniqueKeys,\n optimize_for,\n },\n [COLUMNS]: columnsRaw,\n } = values;\n const columns = this.reorderColumns(columnsRaw);\n\n const attributes: Record<string, any> = {\n dynamic: tableType === TableType.QUEUE || tableType == TableType.DYNAMIC,\n optimize_for,\n };\n\n if (!isEqual_(compCodec, [SELECT_EMPTY_VALUE])) {\n attributes.compression_codec = compCodec.join('');\n }\n\n if (storageOption === StorageOptions.REPLICATION) {\n attributes.replication_factor = Number(replicasCount);\n } else {\n attributes.erasure_codec = erasureCodec;\n }\n\n const schemaAttributes: Record<string, any> = {};\n if (uniqueKeys || tableType === TableType.DYNAMIC) {\n schemaAttributes.unique_keys = true;\n }\n\n const {keyColumns} = this.props;\n const schemaColumns = map_(columns, (item) => {\n const {aggregate, dataType: type, group, id, name, optional, lock} = item;\n const ascending = keyColumns[id];\n\n const res: {\n name?: string;\n type_v3?: string;\n group?: string;\n lock?: string;\n aggregate?: ColumnAggregateType;\n optional?: boolean;\n sort_order?: string;\n } = {\n name,\n type_v3: type,\n };\n\n if (group) {\n res.group = group;\n }\n\n if (lock) {\n res.lock = lock;\n }\n\n if (aggregate !== SELECT_EMPTY_VALUE) {\n res.aggregate = aggregate;\n }\n\n if (ascending) {\n res.sort_order = ascending === 1 ? 'ascending' : 'descending';\n }\n return {\n ...res,\n type_v3: !optional ? res.type_v3 : {type_name: 'optional', item: res.type_v3},\n };\n });\n\n return this.props.createTable(path, {\n ...attributes,\n schema: {\n $attributes: schemaAttributes,\n $value: schemaColumns,\n },\n });\n };\n\n validateColumnDataType(columnData: ColumnData, tableType: TableType) {\n const {dataType, optional} = columnData || {};\n\n if (dataType === ColumnDataTypes.ANY || dataType === ColumnDataTypes.YSON) {\n if (tableType === TableType.DYNAMIC && this.isOrderedColumn(columnData)) {\n return `Key-column should not be of type [${dataType}]`;\n }\n if (!optional) {\n return `Column with type [${dataType}] should be optional.`;\n }\n }\n\n if (tableType === TableType.QUEUE && this.isSortedColumn(columnData)) {\n return 'Queue must not have any sorted columns';\n }\n\n if (tableType === TableType.DYNAMIC && this.isDescendingColumn(columnData)) {\n return \"Dynamic tables do not support 'Descending' order\";\n }\n\n return undefined;\n }\n\n validateAggregate(columnData: ColumnData) {\n const {dataType: type, aggregate: aggr} = columnData || {};\n if (aggr === AggrTypes.SUM || aggr === AggrTypes.MIN || aggr === AggrTypes.MAX) {\n if (\n type !== ColumnDataTypes.INT64 &&\n type !== ColumnDataTypes.UINT64 &&\n type !== ColumnDataTypes.DOUBLE\n ) {\n return `[${aggr}] aggregate might be only applied to a column of type int64/uint64/double`;\n }\n }\n return undefined;\n }\n\n validateColumnLock(columnData: ColumnData) {\n const ordered = this.isOrderedColumn(columnData);\n const {lock} = columnData || {};\n if (lock && ordered) {\n return 'Lock cannot be set on a key-column';\n }\n return undefined;\n }\n\n validateColumnData(columnData: ColumnData, tableType: TableType) {\n const res: Record<string, string> = {};\n const aggregate = this.validateAggregate(columnData);\n if (aggregate) {\n res.aggregate = aggregate;\n }\n const dataType = this.validateColumnDataType(columnData, tableType);\n if (dataType) {\n res.dataType = dataType;\n }\n const lock = this.validateColumnLock(columnData);\n if (lock) {\n res.lock = lock;\n }\n return isEmpty_(res) ? undefined : res;\n }\n\n validateReplicasCount(str: string) {\n const v = Number(str);\n // @ts-ignore\n if (str != v || v !== Math.round(v)) {\n return 'The value must be defined as a valid integer number';\n }\n if (v < 0 || v > 10) {\n return 'The value must be in range [0; 10]';\n }\n return undefined;\n }\n\n validateTableName = (value: string) => {\n const {parentDirectory} = this.props;\n if (value === parentDirectory + '/' || value === parentDirectory) {\n return 'The name must not match to parent directory name';\n }\n return undefined;\n };\n\n isOrderedColumn(columnData: ColumnData) {\n const {id} = columnData;\n return Boolean(this.props.keyColumns[id]);\n }\n\n isAscendingColumn(columnData: ColumnData) {\n const {id} = columnData;\n return this.props.keyColumns[id] === ASCENDING;\n }\n\n isDescendingColumn(columnData: ColumnData) {\n const {id} = columnData;\n return this.props.keyColumns[id] === DESCENDING;\n }\n\n isSortedColumn(columnData: ColumnData) {\n return this.isAscendingColumn(columnData) || this.isDescendingColumn(columnData);\n }\n\n validateTableSettings(tableSettings: TableSettingsTab, columns: Array<ColumnData>) {\n const res: Partial<Record<keyof TableSettingsTab, string>> = {};\n const hasOrderedColumn = some_(columns, (colData) => this.isOrderedColumn(colData));\n const hasUnorderedColumn = some_(columns, (colData) => !this.isOrderedColumn(colData));\n\n const {uniqueKeys, name, replicasCount, tableType} = tableSettings;\n\n const nameError = this.validateTableName(name);\n if (nameError) {\n res.name = nameError;\n }\n\n if (tableType === TableType.DYNAMIC && (!hasOrderedColumn || !hasUnorderedColumn)) {\n res.tableType =\n 'Dynamic table must have at least one sorted column and one unsorted column';\n }\n\n if (tableType === TableType.QUEUE && hasOrderedColumn) {\n res.tableType = 'Queue must not have any sorted columns';\n }\n\n if (tableType === TableType.DYNAMIC && !res.tableType) {\n const hasDescendingColumns = some_(this.keyColumns, (value) => -1 === value);\n if (hasDescendingColumns) {\n res.tableType = 'Dynamic tables do not support descending-sorted columns';\n }\n }\n\n const replicasCountError = this.validateReplicasCount(replicasCount);\n if (replicasCountError) {\n res.replicasCount = replicasCountError;\n }\n\n if (uniqueKeys && !hasOrderedColumn) {\n res.uniqueKeys = 'The table must contain at least one sorted column.';\n }\n\n return isEmpty_(res) ? null : res;\n }\n\n onClose = () => {\n this.nextId = 2;\n return this.props.closeCreateTableModal();\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lastValidationResult: object | null = null;\n\n validateForm = (values: any) => {\n const errors = {};\n\n const tableSettings = values[TABLE_SETTINGS];\n\n const setError = (path: string, error: any) => {\n if (error) {\n set_(errors, path, error);\n }\n };\n\n const {tableType} = tableSettings;\n\n const columns: Array<ColumnData> = values[COLUMNS];\n this.columns = columns;\n const nameCounters: Record<string, Array<number>> = {};\n forEach_(columns, (columnData, index) => {\n const {name} = columnData;\n const nameIndexes = nameCounters[name];\n if (!nameIndexes) {\n nameCounters[name] = [index];\n } else {\n nameIndexes.push(index);\n }\n\n // Validate column\n setError(`${COLUMNS}[${index}]`, this.validateColumnData(columnData, tableType));\n });\n forEach_(nameCounters, (indices) => {\n if (indices.length > 1) {\n indices.forEach((index) => {\n set_(\n errors,\n `${COLUMNS}[${index}].name`,\n 'The column with this name already exists',\n );\n });\n }\n });\n\n // validate tableSettings\n setError(TABLE_SETTINGS, this.validateTableSettings(tableSettings, columns));\n\n this.lastValidationResult = errors;\n return errors;\n };\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n keyColumns: Props['keyColumns'] = {};\n // eslint-disable-next-line @typescript-eslint/member-ordering\n formValidator = this.validateForm.bind(this);\n getFormValidator() {\n const {keyColumns} = this.props;\n if (this.keyColumns !== keyColumns) {\n this.keyColumns = keyColumns;\n /*\n * keyColumns is modified externally and Dialog knows nothing about it\n * and we need to create new instance of Function to force call its\n * validation with new keyColumns.\n * Without creation of new function validation will not be called\n */\n this.formValidator = this.validateForm.bind(this);\n }\n return this.formValidator;\n }\n\n render() {\n const {\n className,\n parentDirectory,\n showModal,\n compressionCodecs,\n erasureCodecs,\n primitiveTypes,\n groupSuggestions,\n } = this.props;\n const name = `${parentDirectory}/new_table`;\n\n return (\n <YTDFDialog<FIX_MY_TYPE>\n virtualized\n pristineSubmittable\n className={block(null, className)}\n size={'l'}\n visible={showModal}\n headerProps={{\n title: 'Create Table',\n }}\n isApplyDisabled={() => {\n return !isEmpty_(this.lastValidationResult);\n }}\n validate={this.getFormValidator()}\n onActiveTabChange={(tab) => {\n this.activeTabId = tab;\n }}\n onAdd={this.onAdd}\n onClose={this.onClose}\n initialValues={{\n [TABLE_SETTINGS]: {\n name: this.tableName !== undefined ? this.tableName : name,\n tableType: this.tableType,\n compressionCodec: [SELECT_EMPTY_VALUE],\n storageOption: StorageOptions.REPLICATION,\n replicasCount: this.replicasCount,\n erasureCodec: 'lrc_12_2_2',\n uniqueKeys: this.uniqueKeys,\n optimize_for: 'lookup',\n },\n [COLUMNS]: [createNewColumn(1, primitiveTypes[0]?.value)],\n }}\n fields={[\n {\n name: TABLE_SETTINGS,\n type: 'yt-create-table-tab',\n title: 'Table settings',\n fields: [\n {\n name: 'name',\n type: 'text',\n caption: 'Table name',\n },\n {\n name: 'tableType',\n type: 'radio',\n caption: 'Table type',\n tooltip: (\n <div className={block('tooltip')}>\n Data rows of\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['storage:static_tables'],\n ' Static tables ',\n true,\n ),\n ' Static tables ',\n )}\n nearly impossible to modify, but they might be removed or\n merged, also new data rows might be appended to the end of a\n table. As the opposite of the above described restrictions\n there are\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['dynamic-tables:overview'],\n ' Dynamic tables ',\n true,\n ),\n ' Dynamic tables ',\n )}\n which allow to modify data rows by key.\n <div className={block('alert-text')}>\n Before using Dynamic tables in production environment\n with <b>heavy load or strict SLA </b>\n you have to consult with development team.\n </div>\n </div>\n ),\n extras: {\n options: [\n {\n value: TableType.STATIC,\n label: 'Static table',\n },\n {\n value: TableType.DYNAMIC,\n label: 'Dynamic table',\n },\n {\n value: TableType.QUEUE,\n label: 'Queue',\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 {Alert, Progress} from '@gravity-ui/uikit';\n\nimport hammer from '../../../../../common/hammer';\nimport format from '../../../../../common/hammer/format';\n\nimport './UploadManager.scss';\nimport {updateView} from '../../../../../store/actions/navigation';\nimport FilePicker from '../../../../../components/FilePicker/FilePicker';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {RootState} from '../../../../../store/reducers';\nimport {getXsrfCookieName} from '../../../../../utils';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport Link from '../../../../../components/Link/Link';\nimport {docsUrl, getConfigUploadTable} from '../../../../../config';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport CancelHelper from '../../../../../utils/cancel-helper';\nimport UIFactory from '../../../../../UIFactory';\nimport {getSortedNodesNames} from '../../../../../store/selectors/navigation/content/map-node';\n\nconst block = cn('upload-manager');\n\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\ntype Props = PropsFromRedux & WithVisibleProps;\n\nfunction trimXLSX(fileName = '') {\n for (const i of ['.xlsx', '.xls']) {\n if (fileName.toLowerCase().endsWith(i)) {\n return fileName.substr(0, fileName.length - i.length);\n }\n }\n return fileName;\n}\n\ninterface State {\n name: string;\n\n hasUpcomingFile: boolean;\n progress: ProgressState;\n error?: any;\n nameAlreadyUsed: boolean;\n\n file: File | null;\n fileType: FileType;\n\n firstRowAsNames: boolean;\n secondRowAsTypes: boolean;\n}\n\ntype FileType = 'xlsx';\n\nconst FILE_TYPES: Array<{value: FileType; title: FileType}> = [{value: 'xlsx', title: 'xlsx'}];\n\ntype ProgressState =\n | {inProgress: false}\n | {inProgress: true; event: {total?: number; loaded: number}};\n\nconst getExcelBaseUrl = (payload: {cluster: string}) => {\n return getConfigUploadTable(payload);\n};\n\nclass UploadManagerCreate extends React.Component<Props, State> {\n state: State = {\n name: '',\n hasUpcomingFile: false,\n file: null,\n fileType: 'xlsx',\n progress: {inProgress: false},\n firstRowAsNames: true,\n secondRowAsTypes: false,\n nameAlreadyUsed: false,\n };\n\n private cancelHelper = new CancelHelper();\n\n renderContent() {\n const {hasUpcomingFile, file, error, nameAlreadyUsed} = this.state;\n return (\n <React.Fragment>\n <div\n className={block('drag-area', {\n dropable: hasUpcomingFile,\n empty: !file,\n })}\n onDrop={this.onDrop}\n onDragEnter={this.onDragEnter}\n onDragLeave={this.onDragLeave}\n onDragOver={this.onDragOver}\n >\n {file ? (\n this.renderFileContent(file)\n ) : (\n <div>\n <div>Drag a file here</div>\n or\n <div>\n <FilePicker onChange={this.onFile}>Pick a file</FilePicker>\n </div>\n </div>\n )}\n </div>\n {error && <Error error={error} />}\n {nameAlreadyUsed && (\n <Alert\n theme=\"info\"\n message=\"If you want to supplement the table, go to it and use the upload dialog.\"\n />\n )}\n </React.Fragment>\n );\n }\n\n componentDidUpdate(_: Props, prevState: State) {\n if (prevState.name !== this.state.name) {\n const alreadyUsed = this.checkNameAlreadyExist(this.state.name);\n this.setState({nameAlreadyUsed: alreadyUsed});\n }\n }\n\n renderFileContent(file: File) {\n return (\n <React.Fragment>\n {this.renderSettings(file)}\n {this.renderProgress()}\n </React.Fragment>\n );\n }\n\n renderSettings(file: File) {\n const {path} = this.props;\n const {name} = this.state;\n const inProgress = this.inProgress();\n return (\n <YTDFDialog\n onAdd={() => Promise.resolve()}\n onClose={() => {}}\n visible={true}\n modal={false}\n initialValues={{\n path,\n name: name,\n size: `${hammer.format['Bytes'](file.size)} / ${hammer.format['Number'](\n file.size,\n )} B`,\n fileType: this.state.fileType,\n firstRowAsNames: this.state.firstRowAsNames,\n secondRowAsTypes: this.state.secondRowAsTypes,\n }}\n fields={[\n {\n name: 'path',\n caption: 'Parent folder',\n type: 'plain',\n },\n {\n name: 'name',\n caption: 'Name',\n type: 'text',\n required: true,\n extras: {\n disabled: inProgress,\n ...(this.state.nameAlreadyUsed && {\n validationState: 'invalid',\n errorMessage: 'Node with this name already exists',\n }),\n },\n onChange: (name: string | Array<string> | undefined) => {\n this.setState({name: name as string});\n },\n },\n {\n name: 'size',\n caption: 'Size',\n type: 'plain',\n },\n {\n name: 'fileType',\n type: 'yt-select-single',\n caption: 'Type',\n extras: {\n items: FILE_TYPES,\n hideFilter: true,\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'firstRowAsNames',\n type: 'tumbler',\n caption: 'Column names',\n tooltip: 'Interpret first row as column names',\n onChange: (firstRowAsNames: boolean) => {\n this.setState({firstRowAsNames});\n },\n extras: {\n disabled: inProgress,\n },\n },\n {\n name: 'secondRowAsTypes',\n type: 'tumbler',\n caption: 'Types',\n tooltip: 'There is row with types right before data-rows',\n onChange: (secondRowAsTypes: boolean) => {\n this.setState({secondRowAsTypes});\n },\n extras: {\n disabled: inProgress,\n },\n },\n ]}\n />\n );\n }\n\n renderFooterContent() {\n const {file} = this.state;\n const inProgress = this.inProgress();\n const helpLink = docsUrl(<HelpLink url={UIFactory.docsUrls['storage:excel']} />);\n\n if (!file) {\n return helpLink;\n }\n return inProgress ? (\n <React.Fragment>\n <Button onClick={this.cancelUpload}>Cancel upload</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={this.onReset}>Reset</Button>\n <span className={block('help-link')}>{helpLink}</span>\n </React.Fragment>\n );\n }\n\n onReset = () => {\n this.onFile(null);\n this.setState({error: null});\n };\n\n renderProgress() {\n const {progress} = this.state;\n const event = progress.inProgress ? progress.event : {total: 1, loaded: 0};\n const {total, loaded} = event;\n const totalStr = hammer.format['Bytes'](total);\n const loadedStr = hammer.format['Bytes'](loaded);\n return (\n progress.inProgress && (\n <div\n className={block('progress', {\n hidden: !progress.inProgress,\n })}\n >\n <div className={block('progress-wrapper')}>\n <Progress\n text={`${loadedStr} / ${totalStr}`}\n stack={[\n {\n value: (100 * loaded) / ((total ?? loaded) || 1),\n theme: 'info',\n },\n ]}\n />\n </div>\n </div>\n )\n );\n }\n\n cancelUpload = () => {\n this.cancelHelper.removeAllRequests();\n };\n\n inProgress() {\n const {progress} = this.state;\n return progress.inProgress;\n }\n\n onDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n if (!this.state.hasUpcomingFile) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDrop = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.inProgress()) {\n return;\n }\n\n const {files} = event.dataTransfer;\n if (!files) {\n return;\n }\n\n this.onFile(files);\n };\n\n onFile = (files: FileList | null) => {\n const file = files && files[0];\n this.setState({\n file,\n hasUpcomingFile: false,\n name: trimXLSX(file?.name) || '',\n });\n if (file) {\n const fileError = this.checkFile(file);\n if (fileError) {\n this.setState({error: {message: fileError}});\n }\n }\n };\n\n onDragEnter = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: true});\n }\n };\n\n onDragLeave = () => {\n if (!this.inProgress()) {\n this.setState({hasUpcomingFile: false});\n }\n };\n\n renderConfirm = () => {\n const fileError = this.checkFile(this.state.file);\n return (\n <Button\n className={block('confirm')}\n size=\"m\"\n view=\"action\"\n title=\"Upload\"\n disabled={\n Boolean(fileError) ||\n Boolean(this.state.error) ||\n this.inProgress() ||\n this.state.nameAlreadyUsed\n }\n onClick={this.onXlsxUpload}\n >\n Upload\n </Button>\n );\n };\n\n checkFile(file: State['file']): string | null {\n if (!file) {\n return 'file is not selected';\n }\n\n const {cluster} = this.props;\n\n const UPLOAD_CONFIG = getExcelBaseUrl({cluster});\n\n if (file.size > UPLOAD_CONFIG.uploadTableMaxSize) {\n return `File size must not be greater than ${format.Bytes(\n UPLOAD_CONFIG.uploadTableMaxSize,\n )}`;\n }\n\n return null;\n }\n\n checkNameAlreadyExist(name: string) {\n const {existingNodes} = this.props;\n return existingNodes.includes(name);\n }\n\n renderClose = (className: string) => {\n return (\n <Button\n className={block('confirm', className)}\n size=\"m\"\n title=\"Close\"\n disabled={this.inProgress()}\n onClick={this.handleClose}\n >\n Close\n </Button>\n );\n };\n\n onStartUpload(size: number) {\n this.setState({\n progress: {inProgress: true, event: {loaded: 0, total: size}},\n error: undefined,\n });\n }\n\n onUploadProgress = (event: AxiosProgressEvent) => {\n this.setState({progress: {inProgress: true, event}});\n };\n\n onStopUpload(error?: State['error']) {\n this.setState({progress: {inProgress: false}});\n if (!error) {\n this.props.updateView();\n this.props.handleClose();\n } else if (!axios.isCancel(error) && (!error || error.code !== 'cancelled')) {\n error = error.response?.data || error;\n this.setState({error});\n }\n }\n\n onXlsxUpload = () => {\n const {file, fileType} = this.state;\n if (!file || fileType !== 'xlsx') {\n return;\n }\n\n const {path: parentDir, cluster} = this.props;\n const {name} = this.state;\n const path = `${parentDir}/${name}`;\n\n this.onStartUpload(file.size);\n\n const EXCEL_BASE_URL = getExcelBaseUrl({cluster}).uploadTableExcelBaseUrl;\n\n const readyUrl = `${EXCEL_BASE_URL}/${cluster}/api/ready`;\n const uploadUrl = `${EXCEL_BASE_URL}/${cluster}/api/upload`;\n\n this.cancelHelper.removeAllRequests();\n return axios.get(readyUrl).then(\n () => {\n const {firstRowAsNames, secondRowAsTypes} = this.state;\n const start_row = [firstRowAsNames, secondRowAsTypes].filter(Boolean).length + 1;\n const params = new URLSearchParams({\n create: String(true),\n path,\n header: String(firstRowAsNames),\n start_row: String(start_row),\n types: String(secondRowAsTypes),\n });\n const formData = new FormData();\n formData.append('uploadfile', file);\n return wrapApiPromiseByToaster(\n axios.post(`${uploadUrl}?${params}`, formData, {\n onUploadProgress: this.onUploadProgress,\n withCredentials: true,\n withXSRFToken: true,\n xsrfCookieName: getXsrfCookieName(cluster),\n xsrfHeaderName: 'X-Csrf-Token',\n cancelToken: this.cancelHelper.generateNextToken(),\n }),\n {\n toasterName: 'upload_xlsx' + path,\n successTitle: 'Table is created',\n errorTitle: 'Failed to create table',\n successContent: (\n <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link>\n ),\n },\n ).then(\n () => {\n this.onStopUpload();\n },\n (e) => {\n this.onStopUpload(e);\n },\n );\n },\n (e) => {\n this.onStopUpload({\n message: `${readyUrl} responded with error`,\n inner_errors: [e],\n });\n },\n );\n };\n\n handleClose = () => {\n if (this.inProgress()) {\n return;\n }\n this.props.handleClose();\n };\n\n render() {\n const {visible} = this.props;\n return (\n <React.Fragment>\n {visible && (\n <Modal\n size=\"m\"\n title=\"Create table from xlsx\"\n visible={visible}\n onCancel={this.handleClose}\n confirmText=\"Upload\"\n content={this.renderContent()}\n footerContent={this.renderFooterContent()}\n renderCustomConfirm={this.renderConfirm}\n renderCustomCancel={this.renderClose}\n contentClassName={block()}\n />\n )}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const path: string = getPath(state);\n\n return {\n path,\n cluster: getCluster(state),\n existingNodes: getSortedNodesNames(state),\n };\n};\n\nconst mapDispatchToProps = {\n updateView,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default compose(withVisible, connector)(UploadManagerCreate);\n","import React, {Component} from 'react';\nimport {useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\nimport orderBy_ from 'lodash/orderBy';\nimport reduce_ from 'lodash/reduce';\nimport slice_ from 'lodash/slice';\n\nimport './NodesTypes.scss';\nimport {\n getNodesInfo,\n getSelectedNodes,\n} from '../../../../../store/selectors/navigation/content/map-node';\nimport MultipleActions from '../MultipleActions';\n\nconst b = block('nodes-types');\nconst DISPLAYED_NODES = 3;\n\nclass NodesTypes extends Component {\n static propTypes = {\n nodes: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string.isRequired,\n count: PropTypes.number.isRequired,\n }),\n ).isRequired,\n selectedNodes: PropTypes.array.isRequired,\n };\n\n _prepareNodes(nodes) {\n const sortedNodes = orderBy_(nodes, (node) => node.count, 'desc');\n\n return slice_(sortedNodes, 0, DISPLAYED_NODES);\n }\n\n _getSumCount(nodes) {\n return reduce_(nodes, (sum, node) => sum + node.count, 0);\n }\n\n renderItem(node) {\n return (\n <li className={b('item')} key={node.type}>\n <span className={b('type')}>{node.type}</span>\n <span className={b('count')}>{node.count}</span>\n </li>\n );\n }\n\n renderItems(nodes) {\n return map_(nodes, (node) => this.renderItem(node));\n }\n\n renderSelected() {\n const {selectedNodes} = this.props;\n if (!selectedNodes.length) {\n return null;\n }\n return (\n <li className={b('item')}>\n <span className={b('type')}>Selected</span>\n <span className={b('count')}>{selectedNodes.length}</span>\n <MultipleActions className={b('actions')} />\n </li>\n );\n }\n\n render() {\n const {nodes} = this.props;\n\n const displayedNodes = this._prepareNodes(nodes);\n const allNodesCount = this._getSumCount(nodes);\n const displayedNodesCount = this._getSumCount(displayedNodes);\n const otherNodesCount = allNodesCount - displayedNodesCount;\n\n return (\n <ul className={b('list')}>\n {this.renderItem({type: 'All', count: allNodesCount})}\n {this.renderItems(displayedNodes)}\n {otherNodesCount > 0 && this.renderItem({type: 'Other', count: otherNodesCount})}\n {this.renderSelected()}\n </ul>\n );\n }\n}\n\nfunction NodesInfo() {\n const nodesInfo = useSelector(getNodesInfo);\n const selectedNodes = useSelector(getSelectedNodes);\n\n return <NodesTypes nodes={nodesInfo} selectedNodes={selectedNodes} />;\n}\n\nexport default React.memo(NodesInfo);\n","import {ThunkAction} from 'redux-thunk';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {CREATE_ACO_MODAL} from '../../../../constants/navigation/modals';\nimport {CreateACOModalAction} from '../../../../store/reducers/navigation/modals/create-aco';\nimport {RootState} from '../../../reducers';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\nimport {updateView} from '../index';\n\ntype CreateAcoModalThunkAction<R = any> = ThunkAction<R, RootState, unknown, CreateACOModalAction>;\n\nexport function openCreateACOModal(\n params: {path?: string; namespace?: string} = {},\n): CreateAcoModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: CREATE_ACO_MODAL,\n data: {...params, visible: true},\n });\n };\n}\n\nexport function closeCreateACOModal(): CreateAcoModalThunkAction {\n return (dispatch) => {\n dispatch({\n type: CREATE_ACO_MODAL,\n data: {path: undefined, target: undefined, visible: false},\n });\n };\n}\n\ntype CreateACOActionParams = {path: string; name: string; namespace: string};\n\nexport function createACO(params: CreateACOActionParams): CreateAcoModalThunkAction {\n return (dispatch) => {\n const {path, name, namespace} = params;\n\n return ytApiV3\n .create({\n path,\n type: 'access_control_object',\n attributes: {name, namespace},\n })\n .then(() => {\n dispatch(closeCreateACOModal());\n dispatch(updateView());\n\n const toast = new Toaster();\n\n toast.add({\n name: 'create-aco',\n theme: 'success',\n title: 'ACO created',\n content: '',\n });\n });\n };\n}\n","import {DropdownMenu} from '@gravity-ui/uikit';\nimport React, {Component} from 'react';\nimport {connect, useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\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 '../../modals/CreateTableModal/CreateTableModal';\nimport {isCreateTableModalVisible} from '../../../../store/selectors/navigation/modals/create-table';\n\nimport MapNodesTable from './MapNodesTable';\n\nimport {openCreateTableModal} from '../../../../store/actions/navigation/modals/create-table';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {getNavigationPathAttributes} from '../../../../store/selectors/navigation/navigation';\nimport {getMediumList} from '../../../../store/selectors/thor';\nimport {\n getContentMode,\n getError,\n getFilterState,\n getLoadState,\n getMapNodeResourcesLoading,\n getMediumType,\n isRootNode,\n} from '../../../../store/selectors/navigation/content/map-node';\n\nimport {OPEN_CREATE_DIRECTORY_POPUP} from '../../../../constants/navigation/modals/create-directory';\nimport {HEADER_HEIGHT, LOADING_STATUS} from '../../../../constants/index';\nimport {ContentMode} from '../../../../constants/navigation';\n\nimport {openEditingPopup} from '../../../../store/actions/navigation/modals/path-editing-popup';\nimport {\n fetchNodes,\n setContentMode,\n setFilter,\n setMediumType,\n updateResourceUsage,\n} from '../../../../store/actions/navigation/content/map-node';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nimport hammer from '../../../../common/hammer';\nimport UploadManagerCreate from '../Table/UploadManager/UploadManagerCreate';\nimport NodesTypes from './NodesTypes/NodesTypes';\n\nimport {NoWrap} from '../../../../components/Text/Text';\nimport {showLinkToModal} from '../../../../store/actions/navigation/modals/link-to-modal';\nimport {openCreateACOModal} from '../../../../store/actions/navigation/modals/create-aco';\nimport NavigationExtraActions from '../../../../containers/NavigationExtraActions/NavigationExtraActions';\nimport UIFactory from '../../../../UIFactory';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport './MapNode.scss';\n\nconst block = cn('map-node');\nconst tbBlock = cn('elements-toolbar');\n\nclass MapNode extends Component {\n static TYPE = 'map_node';\n\n static CONTENT_MODE_OPTIONS = [ContentMode.DEFAULT, ContentMode.RESOURCES];\n\n static propTypes = {\n error: PropTypes.object,\n loadState: PropTypes.string,\n contentMode: PropTypes.oneOf(MapNode.CONTENT_MODE_OPTIONS),\n path: PropTypes.string.isRequired,\n transaction: PropTypes.string,\n mediumList: PropTypes.arrayOf(PropTypes.string),\n mediumType: PropTypes.string.isRequired,\n filterState: PropTypes.string.isRequired,\n\n setFilter: PropTypes.func.isRequired,\n setContentMode: PropTypes.func.isRequired,\n fetchNodes: PropTypes.func.isRequired,\n setMediumType: PropTypes.func.isRequired,\n openEditingPopup: PropTypes.func.isRequired,\n openCreateTableModal: PropTypes.func.isRequired,\n openCreateACOModal: PropTypes.func.isRequired,\n showACOCreateButton: PropTypes.bool.isRequired,\n cluster: PropTypes.bool.isRequired,\n };\n\n componentDidMount() {\n this.props.fetchNodes();\n }\n\n componentDidUpdate(prevProps) {\n const {path, transaction, fetchNodes} = this.props;\n const {path: prevPath, transaction: prevTransaction} = prevProps;\n if (path !== prevPath || transaction !== prevTransaction) {\n fetchNodes();\n }\n }\n\n renderToolbar() {\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={tbBlock({sticky: isSticky})}>\n <MapNodeToolbarConnected />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderError() {\n const {\n error: {message, details},\n } = this.props;\n return (\n <div className={block('error')}>\n <Error message={message} error={details} />\n </div>\n );\n }\n\n renderView() {\n return (\n <StickyContainer>\n {this.renderToolbar()}\n\n <div className={block('content')}>\n <MapNodesTable />\n </div>\n </StickyContainer>\n );\n }\n\n render() {\n const {loadState} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block()}>\n {loadState === LOADING_STATUS.ERROR ? this.renderError() : this.renderView()}\n </div>\n <CreateTableModal />\n </ErrorBoundary>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const path = getPath(state);\n\n return {\n path,\n showACOCreateButton: path === '//sys/access_control_object_namespaces/queries',\n loadState: getLoadState(state),\n error: getError(state),\n contentMode: getContentMode(state),\n filterState: getFilterState(state),\n transaction: getTransaction(state),\n mediumList: getMediumList(state),\n mediumType: getMediumType(state),\n showCreateTableModal: isCreateTableModalVisible(state),\n attributes: getNavigationPathAttributes(state),\n cluster: getCluster(state),\n };\n}\n\nconst mapDispatchToProps = {\n setFilter,\n setContentMode,\n fetchNodes,\n setMediumType,\n openEditingPopup,\n openCreateTableModal,\n showLinkToModal,\n openCreateACOModal,\n};\n\nconst MapNodeConnected = connect(mapStateToProps, mapDispatchToProps)(MapNode);\n\nexport default function MapNodeWithRum() {\n const loadState = useSelector(getLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return loadState === LOADING_STATUS.LOADING;\n },\n });\n return <MapNodeConnected />;\n}\n\nclass MapNodeToolbar extends React.PureComponent {\n uploadXlsRef = React.createRef();\n\n createDirectoryButtonClick = () => {\n const {path, openEditingPopup} = this.props;\n openEditingPopup(null, path + '/', OPEN_CREATE_DIRECTORY_POPUP);\n };\n\n createTableButtonClick = () => {\n const {path} = this.props;\n this.props.openCreateTableModal(path);\n };\n\n uploadTableButtonClick = () => {\n if (this.uploadXlsRef.current) {\n this.uploadXlsRef.current.handleShow();\n }\n };\n\n createLinkButtonClick = () => {\n const {path} = this.props;\n this.props.showLinkToModal({path: `${path}/New link`});\n };\n\n createACOButtonClick = () => {\n const {path} = this.props;\n\n this.props.openCreateACOModal({path, namespace: 'queries'});\n };\n\n render() {\n const {\n setFilter,\n contentMode,\n setContentMode,\n mediumList,\n mediumType,\n setMediumType,\n filterState,\n path,\n attributes,\n showACOCreateButton,\n cluster,\n } = this.props;\n\n const {uploadTableExcelBaseUrl} = getConfigUploadTable({cluster});\n\n const {menuItems, renderModals} = UIFactory.getMapNodeExtraCreateActions([\n {\n action: this.createTableButtonClick,\n text: <NoWrap>Table</NoWrap>,\n icon: <Icon awesome={'table'} face={'solid'} />,\n },\n {\n action: this.createDirectoryButtonClick,\n text: <NoWrap>Directory</NoWrap>,\n icon: <Icon awesome={'folder'} face={'solid'} />,\n },\n ...(!uploadTableExcelBaseUrl\n ? []\n : [\n {\n action: this.uploadTableButtonClick,\n text: <NoWrap>Upload xlsx</NoWrap>,\n icon: <Icon awesome={'upload'} />,\n },\n ]),\n {\n action: this.createLinkButtonClick,\n text: <NoWrap>Link</NoWrap>,\n icon: <Icon awesome={'link'} />,\n },\n showACOCreateButton && {\n action: this.createACOButtonClick,\n text: <NoWrap>ACO</NoWrap>,\n icon: <Icon awesome={'acl-object'} />,\n },\n ]);\n\n return (\n <React.Fragment>\n <div className={tbBlock('container')}>\n <div className={block('filter', tbBlock('component'))}>\n <Filter\n size=\"m\"\n key={path}\n debounce={300}\n value={filterState}\n onChange={setFilter}\n qa=\"map-node-filter\"\n />\n </div>\n\n <TTLInfo attributes={attributes} size={'m'} className={tbBlock('component')} />\n\n <div className={block('content-mode', tbBlock('component'))}>\n <RadioButton\n size=\"m\"\n name=\"navigation-map-node-content-mode\"\n value={contentMode}\n items={map_(\n MapNode.CONTENT_MODE_OPTIONS,\n RadioButton.prepareSimpleValue,\n )}\n onChange={(event) => setContentMode(event.target.value)}\n />\n </div>\n\n <div className={block('show-resources', tbBlock('component'))}>\n <ShowResourcesButton />\n </div>\n\n {mediumList?.length && (\n <div className={block('medium-type', tbBlock('component'))}>\n <SelectSingle\n label=\"Medium:\"\n placeholder=\"All\"\n value={mediumType}\n items={map_(mediumList, (type) => ({\n value: type,\n text: hammer.format['ReadableField'](type),\n }))}\n onChange={setMediumType}\n width=\"max\"\n hideFilter={true}\n />\n </div>\n )}\n\n <NavigationExtraActions\n className={block('copy-to-remote', tbBlock('component'))}\n />\n\n <div className={block('create-object', tbBlock('component'))}>\n <DropdownMenu\n menuSize={'n'}\n popupClass={block('create-popup')}\n items={menuItems}\n switcher={\n <Button size=\"m\" title=\"Create object\">\n Create object\n </Button>\n }\n />\n </div>\n </div>\n <div className=\"nodes-types\">\n <NodesTypes />\n </div>\n <UploadManagerCreate ref={this.uploadXlsRef} />\n {renderModals()}\n </React.Fragment>\n );\n }\n}\n\nfunction ShowResourcesButton() {\n const dispatch = useDispatch();\n const isRoot = useSelector(isRootNode);\n const loading = useSelector(getMapNodeResourcesLoading);\n return (\n <Button\n size=\"m\"\n title=\"Show all nodes resource usage [Shift+S]\"\n disabled={isRoot}\n loading={loading}\n onClick={() => dispatch(updateResourceUsage())}\n hotkey={[{keys: 'shift+s', handler: updateResourceUsage, scope: 'all'}]}\n >\n Show resources\n </Button>\n );\n}\n\nconst MapNodeToolbarConnected = connect(mapStateToProps, mapDispatchToProps)(MapNodeToolbar);\n","// @ts-ignore\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {getPath} from '../../../selectors/navigation';\nimport {\n GET_DOCUMENT,\n SET_DOCUMENT_EDIT_MODE,\n} from '../../../../constants/navigation/content/document';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../reducers';\nimport {NavigationDocumentAction} from '../../../reducers/navigation/content/document';\nimport {wrapApiPromiseByToaster} from '../../../../utils/utils';\n\nconst requests = new CancelHelper();\n\ntype DocumentThunkAction = ThunkAction<void, RootState, any, NavigationDocumentAction>;\n\nexport const getDocument = (): DocumentThunkAction => (dispatch, getState) => {\n const state = getState();\n const path = getPath(state) as string;\n\n dispatch({type: GET_DOCUMENT.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationGetDocument, {\n parameters: {\n path,\n output_format: {$value: 'json', $attributes: {}},\n },\n cancellation: requests.saveCancelToken,\n })\n .then((document) => {\n dispatch({\n type: GET_DOCUMENT.SUCCESS,\n data: {document},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_DOCUMENT.CANCELLED});\n } else {\n dispatch({\n type: GET_DOCUMENT.FAILURE,\n data: {error},\n });\n }\n });\n};\n\nexport const saveDocument =\n ({path, documentString}: {path: string; documentString: string}): DocumentThunkAction =>\n async (dispatch) => {\n const document = documentString === '' ? null : JSON.parse(documentString);\n try {\n await wrapApiPromiseByToaster(yt.v3.set({path}, document), {\n toasterName: 'navigation-save-document',\n errorTitle: 'Failed to save document',\n successTitle: 'Document successfully saved',\n });\n\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: false});\n dispatch({\n type: GET_DOCUMENT.SUCCESS,\n data: {document: document},\n });\n\n return Promise.resolve();\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\nexport const abortAndReset = (): DocumentThunkAction => (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_DOCUMENT.CANCELLED});\n};\n","import {createSelector} from 'reselect';\nimport {RootState} from '../../../reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getNavigationDocumentLoadingStatus = createSelector(\n [\n (store: RootState) => store.navigation.content.document.loading,\n (store: RootState) => store.navigation.content.document.loaded,\n (store: RootState) => store.navigation.content.document.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const selectNavigationDocument = (store: RootState) => store.navigation.content.document;\n","import React, {FC, Fragment} from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {Alert, Button, Flex} from '@gravity-ui/uikit';\n\n// @ts-ignore\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {main} from '../../../../components/MetaTable/presets';\nimport Yson from '../../../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport Icon from '../../../../components/Icon/Icon';\nimport {OpenQueryButtons} from '../../../../containers/OpenQueryButtons/OpenQueryButtons';\nimport {useSelector} from 'react-redux';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport './DocumentBody.scss';\n\nconst block = cn('yt-document-body');\n\ntype Props = {\n attributes: Record<any, any>;\n document: any;\n settings: UnipikaSettings;\n onEditClick: () => void;\n queryAutoOpen?: boolean;\n};\n\nconst EditButton: FC<Pick<Props, 'onEditClick'>> = ({onEditClick}) => {\n return (\n <Button onClick={onEditClick}>\n <Icon awesome={'pencil'} />\n Edit\n </Button>\n );\n};\n\nfunction OpenYqlViewButton({autoOpen}: {autoOpen?: boolean}) {\n const path: string = useSelector(getPath);\n const cluster = useSelector(getCluster);\n\n return (\n <OpenQueryButtons\n path={path}\n cluster={cluster}\n className={block('yql')}\n autoOpen={autoOpen}\n />\n );\n}\n\nfunction DocumentExtraTools({\n onEditClick,\n attributes,\n queryAutoOpen,\n}: Pick<Props, 'attributes' | 'onEditClick' | 'queryAutoOpen'>) {\n const isYqlView = 'view' === ypath.getValue(attributes, '/_yql_type');\n return (\n <Flex gap={4}>\n {isYqlView && <OpenYqlViewButton autoOpen={queryAutoOpen} />}\n <EditButton onEditClick={onEditClick} />\n </Flex>\n );\n}\n\nfunction DocumentBody({attributes, settings, onEditClick, document = null, queryAutoOpen}: Props) {\n const [type] = ypath.getValues(attributes, ['/type']);\n\n return (\n <Fragment>\n <MetaTable items={[main(attributes), [{key: 'type', value: type}]]} />\n {document === null ? (\n <Alert\n layout=\"horizontal\"\n theme=\"info\"\n message=\"Document is empty.\"\n actions={<EditButton onEditClick={onEditClick} />}\n />\n ) : (\n <Yson\n value={document}\n settings={settings}\n folding\n extraTools={\n <DocumentExtraTools\n onEditClick={onEditClick}\n attributes={attributes}\n queryAutoOpen={queryAutoOpen}\n />\n }\n />\n )}\n </Fragment>\n );\n}\n\nexport default DocumentBody;\n","import React, {FC, useCallback} from 'react';\nimport cn from 'bem-cn-lite';\nimport './DocumentEditModal.scss';\nimport {FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {Text} from '@gravity-ui/uikit';\nimport {UnipikaSettings} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\n\ntype Props = {\n open: boolean;\n document: any;\n settings: UnipikaSettings;\n onCancel: () => void;\n onSave: (data: string) => Promise<void>;\n};\n\ntype FormValues = {\n jsonEditor: {value: string};\n};\n\nconst block = cn('document-edit-modal');\n\nconst DocumentEditModal: FC<Props> = ({open, document, settings, onCancel, onSave}) => {\n const handleSaveDocument = useCallback(\n (form: FormApi<FormValues, Partial<FormValues>>) => {\n return onSave(form.getState().values.jsonEditor.value);\n },\n [onSave],\n );\n\n return (\n <YTDFDialog<FormValues>\n className={block()}\n headerProps={{\n title: (\n <Text variant=\"header-1\" color=\"secondary\">\n Edit document\n </Text>\n ),\n }}\n visible={open}\n onClose={onCancel}\n onAdd={handleSaveDocument}\n initialValues={{jsonEditor: {value: JSON.stringify(document, null, '\\t')}}}\n fields={[\n {\n fullWidth: true,\n name: 'jsonEditor',\n type: 'json',\n extras: {\n className: block('editor'),\n initialSplitSize: '50%',\n initialShowPreview: false,\n unipikaSettings: settings,\n folding: true,\n },\n },\n ]}\n />\n );\n};\n\nexport default DocumentEditModal;\n","import React, {FC, useCallback, useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {Loader} from '@gravity-ui/uikit';\nimport {\n abortAndReset,\n getDocument,\n saveDocument,\n} from '../../../../store/actions/navigation/content/document';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\nimport {selectNavigationDocument} from '../../../../store/selectors/navigation/content/document';\nimport './Document.scss';\nimport DocumentBody from './DocumentBody';\nimport {SET_DOCUMENT_EDIT_MODE} from '../../../../constants/navigation/content/document';\nimport DocumentEditModal from './DocumentEditModal';\nimport unipika from '../../../../common/thor/unipika';\n\nconst block = cn('navigation-document');\n\nconst Document: FC = () => {\n const dispatch = useDispatch();\n const {loading, loaded, error, errorData, document, editMode} =\n useSelector(selectNavigationDocument);\n const attributes = useSelector(getAttributes);\n const path = useSelector(getPath);\n const settings = unipika.prepareSettings();\n const mode = useSelector(getEffectiveMode);\n const initialLoading = loading && !loaded;\n\n useEffect(() => {\n dispatch(getDocument());\n return () => {\n dispatch(abortAndReset());\n };\n }, [dispatch, path, mode]);\n\n const handleEditClick = useCallback(() => {\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: true});\n }, [dispatch]);\n\n const handleOnCancel = useCallback(() => {\n dispatch({type: SET_DOCUMENT_EDIT_MODE, data: false});\n }, [dispatch]);\n\n const handleOnDocumentSave = useCallback(\n async (documentString: string) => {\n await dispatch(saveDocument({path, documentString}));\n },\n [dispatch, path],\n );\n\n return (\n <LoadDataHandler loaded={loaded} error={error} errorData={errorData}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <>\n <DocumentBody\n document={document}\n settings={settings}\n attributes={attributes}\n onEditClick={handleEditClick}\n queryAutoOpen={loaded}\n />\n <DocumentEditModal\n settings={settings}\n open={editMode}\n onCancel={handleOnCancel}\n onSave={handleOnDocumentSave}\n document={document}\n />\n </>\n )}\n </div>\n </LoadDataHandler>\n );\n};\n\nexport default Document;\n","import React, {FC} from 'react';\nimport Document from './Document';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {getNavigationDocumentLoadingStatus} from '../../../../store/selectors/navigation/content/document';\nimport {useSelector} from 'react-redux';\n\nconst DocumentWithRum: FC = () => {\n const loadState = useSelector(getNavigationDocumentLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_DOCUMENT,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_DOCUMENT,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Document />;\n};\n\nexport default DocumentWithRum;\n","import CancelHelper from '../../../../utils/cancel-helper';\nimport {navigateParent} from '../../../../store/actions/navigation';\nimport {ABORT_TRANSACTION} from '../../../../constants/navigation/content/transaction';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function abortTransaction(id) {\n return (dispatch) => {\n dispatch({type: ABORT_TRANSACTION.REQUEST});\n\n return ytApiV3\n .abortTransaction({\n parameters: {transaction_id: id},\n cancellation: requests.saveCancelToken,\n })\n .then(() => {\n dispatch(navigateParent());\n dispatch({type: ABORT_TRANSACTION.SUCCESS});\n })\n .catch((error) => {\n dispatch({\n type: ABORT_TRANSACTION.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function resetStore() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: ABORT_TRANSACTION.CANCELLED});\n };\n}\n","import React, {useCallback} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport cn from 'bem-cn-lite';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport {main} from '../../../../components/MetaTable/presets';\nimport Button from '../../../../components/Button/Button';\nimport Modal from '../../../../components/Modal/Modal';\n\nimport {\n abortTransaction,\n resetStore,\n} from '../../../../store/actions/navigation/content/transaction';\nimport {getAttributes, getLoadState} from '../../../../store/selectors/navigation';\nimport withVisible from '../../../../hocs/withVisible';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport Yson from '../../../../components/Yson/Yson';\n\nconst block = cn('navigation-transaction');\n\nTransaction.propTypes = {\n // from withVisible hoc\n visible: PropTypes.bool.isRequired,\n handleClose: PropTypes.func.isRequired,\n handleShow: PropTypes.func.isRequired,\n};\n\nfunction Transaction({visible, handleClose, handleShow}) {\n const dispatch = useDispatch();\n const attributes = useSelector(getAttributes);\n\n const [title, startTime, timeout, id] = ypath.getValues(attributes, [\n '/title',\n '/start_time',\n '/timeout',\n '/id',\n ]);\n const {loading, error, errorData} = useSelector(\n (state) => state.navigation.content.transaction,\n );\n\n const handleTransactionAbort = useCallback(() => dispatch(abortTransaction(id)), [dispatch]);\n const handleModalClose = useCallback(() => {\n handleClose();\n dispatch(resetStore());\n }, [dispatch, handleClose]);\n\n const modalContent = (\n <LoadDataHandler loaded={false} error={error} errorData={errorData}>\n About to abort transaction <span className=\"elements-monospace\">{id}</span>\n </LoadDataHandler>\n );\n\n return (\n <div className={block()}>\n <MetaTable\n items={[\n main(attributes),\n [\n {\n key: 'title',\n value: <Yson value={title} />,\n visible: Boolean(title),\n },\n {\n key: 'start_time',\n value: startTime,\n visible: Boolean(startTime),\n },\n {\n key: 'timeout',\n value: timeout,\n visible: Boolean(timeout),\n },\n ],\n ]}\n />\n\n <Button onClick={handleShow}>Abort</Button>\n <Modal\n title=\"Abort\"\n visible={visible}\n loading={loading}\n confirmTheme=\"danger\"\n confirmText=\"Abort\"\n content={modalContent}\n onConfirm={handleTransactionAbort}\n onCancel={handleModalClose}\n />\n </div>\n );\n}\n\nconst TransactionConnected = withVisible(Transaction);\n\nexport default function TransactionWithRum() {\n const loadState = useSelector(getLoadState);\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TransactionConnected />;\n}\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {prepareNavigationState} from '../../../../utils/navigation';\n\nexport default class Transaction {\n constructor(transaction, parentParsedPath) {\n this.id = ypath.getValue(transaction, '');\n this.attributes = ypath.getValue(transaction, '/@');\n\n this.type = this.attributes.type;\n this.title = this.attributes.title;\n this.owner = this.attributes.owner;\n this.started = this.attributes.start_time;\n\n this.parsedPath = ypath.YPath.clone(parentParsedPath).concat(\n '/' + ypath.YPath.fragmentFromYSON(this.id),\n );\n this.pathState = prepareNavigationState(this.parsedPath);\n this.path = this.parsedPath.stringify();\n }\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport map_ from 'lodash/map';\n\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getParsedPath, getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport Transaction from '../../../../utils/navigation/content/transaction-map/transaction';\nimport {\n CHANGE_FILTER,\n LOAD_TRANSACTIONS,\n} from '../../../../constants/navigation/content/transaction-map';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\n\nconst requests = new CancelHelper();\n\nexport function loadTransactions() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const parsedPath = getParsedPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: LOAD_TRANSACTIONS.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .list(YTApiId.navigationListTransactions, {\n parameters: prepareRequest('/', {\n path,\n transaction,\n attributes: ['type', 'title', 'start_time', 'owner'],\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((rawTransactions) => {\n const transactions = ypath.getValue(rawTransactions, '');\n\n dispatch({\n type: LOAD_TRANSACTIONS.SUCCESS,\n data: {\n transactions: map_(\n transactions,\n (transaction) => new Transaction(transaction, parsedPath),\n ),\n },\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: LOAD_TRANSACTIONS.CANCELLED});\n } else {\n dispatch({\n type: LOAD_TRANSACTIONS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function changeFilter(filter) {\n return {\n type: CHANGE_FILTER,\n data: {filter},\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: LOAD_TRANSACTIONS.CANCELLED});\n };\n}\n","export const tableItems = {\n icon: {\n sort: false,\n caption: '',\n align: 'center',\n },\n id: {\n align: 'left',\n sort(transaction) {\n return transaction.id;\n },\n },\n owner: {\n align: 'left',\n sort(transaction) {\n return transaction.owner;\n },\n },\n title: {\n align: 'left',\n sort(transaction) {\n return transaction.title;\n },\n },\n start_time: {\n align: 'right',\n sort(transaction) {\n return transaction.started;\n },\n },\n actions: {\n caption: '',\n align: 'center',\n sort: false,\n },\n};\n","import hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {tableItems} from '../../../../utils/navigation/content/transaction-map/table';\nimport {NAVIGATION_TRANSACTION_MAP_TABLE_ID} from '../../../../constants/navigation/content/transaction-map';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nconst getRawTransactions = (state) => state.navigation.content.transactionMap.transactions;\nconst getSortState = (state) => state.tables[NAVIGATION_TRANSACTION_MAP_TABLE_ID];\nconst getFilter = (state) => state.navigation.content.transactionMap.filter;\n\nconst getFilteredTransactions = createSelector(\n [getRawTransactions, getFilter],\n (rawTransactions, filter) =>\n hammer.filter.filter({\n data: rawTransactions,\n input: filter,\n factors: ['id', 'title'],\n }),\n);\n\nexport const getTransactions = createSelector(\n [getFilteredTransactions, getSortState],\n (filteredTransactions, sortState) =>\n hammer.utils.sort(filteredTransactions, sortState, tableItems),\n);\n\nexport const getNavigationTransactionMapLoadingStatus = createSelector(\n [\n (store) => store.navigation.content.transactionMap.loading,\n (store) => store.navigation.content.transactionMap.loaded,\n (store) => store.navigation.content.transactionMap.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import React, {Component} from 'react';\nimport {Sticky, StickyContainer} from 'react-sticky';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {FormattedText, FormattedTextOrLink} from '../../../../components/formatters';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport Filter from '../../../../components/Filter/Filter';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {NAVIGATION_TRANSACTION_MAP_TABLE_ID} from '../../../../constants/navigation/content/transaction-map';\nimport {\n changeFilter,\n loadTransactions,\n} from '../../../../store/actions/navigation/content/transaction-map';\nimport {\n getNavigationTransactionMapLoadingStatus,\n getTransactions,\n} from '../../../../store/selectors/navigation/content/transaction-map';\nimport {tableItems} from '../../../../utils/navigation/content/transaction-map/table';\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {itemNavigationAllowed} from '../../../../pages/navigation/Navigation/ContentViewer/helpers';\nimport {HEADER_HEIGHT} from '../../../../constants/index';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport './TransactionMap.scss';\n\nconst block = cn('navigation-transaction-map');\n\nclass TransactionMap extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n filter: PropTypes.string.isRequired,\n transactions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n transaction: PropTypes.string,\n\n changeFilter: PropTypes.func.isRequired,\n loadTransactions: PropTypes.func.isRequired,\n };\n\n static renderIcon(item) {\n const iconName = getIconNameForType(item.type);\n\n return <Icon awesome={iconName} />;\n }\n\n static renderId(item) {\n const isLink = itemNavigationAllowed(item);\n\n return <FormattedTextOrLink state={item.pathState} asLink={isLink} text={item.id} />;\n }\n\n static renderOwner(item) {\n return <FormattedText text={item.owner} />;\n }\n\n static renderStartTime(item) {\n return hammer.format['DateTime'](item.started, {format: 'full'});\n }\n\n static renderTitle(item) {\n return <FormattedText text={item.title} />;\n }\n\n static renderActions(item) {\n return (\n <ClickableAttributesButton\n title={item.id}\n path={`//sys/transactions/${item.id}`}\n withTooltip\n />\n );\n }\n\n componentDidMount() {\n this.props.loadTransactions();\n }\n\n componentDidUpdate(prevProps) {\n const {path, transaction, loadTransactions} = this.props;\n\n if (prevProps.path !== path || prevProps.transaction !== transaction) {\n loadTransactions();\n }\n }\n\n get tableSettings() {\n return {\n css: block(),\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: NAVIGATION_TRANSACTION_MAP_TABLE_ID,\n columns: {\n items: tableItems,\n sets: {\n default: {\n items: ['icon', 'id', 'title', 'owner', 'start_time', 'actions'],\n },\n },\n mode: 'default',\n },\n templates: {\n icon: TransactionMap.renderIcon,\n id: TransactionMap.renderId,\n owner: TransactionMap.renderOwner,\n start_time: TransactionMap.renderStartTime,\n title: TransactionMap.renderTitle,\n actions: TransactionMap.renderActions,\n },\n computeKey(item) {\n return item.id;\n },\n };\n }\n\n handleFilterChange = (value) => this.props.changeFilter(value);\n\n render() {\n const {filter, loading, transactions} = this.props;\n\n return (\n <div className={block()}>\n <StickyContainer>\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div\n className={block('overview', {\n sticky: isSticky,\n })}\n >\n <Filter\n hasClear\n size=\"m\"\n value={filter}\n debounce={300}\n className={block('filter')}\n onChange={this.handleFilterChange}\n placeholder=\"Filter transactions...\"\n />\n </div>\n )}\n </Sticky>\n\n <LoadDataHandler {...this.props}>\n <ElementsTable\n {...this.tableSettings}\n items={transactions}\n isLoading={loading}\n />\n </LoadDataHandler>\n </StickyContainer>\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {filter, loading, loaded, error, errorData} = state.navigation.content.transactionMap;\n const path = getPath(state);\n const transaction = getTransaction(state);\n const transactions = getTransactions(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n transaction,\n filter,\n transactions,\n };\n};\n\nconst mapDispatchToProps = {\n loadTransactions,\n changeFilter,\n};\n\nconst TransactionMapConnected = connect(mapStateToProps, mapDispatchToProps)(TransactionMap);\n\nexport default function TranscationMapWithRum() {\n const loadState = useSelector(getNavigationTransactionMapLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION_MAP,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_TRANSACTION_MAP,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TransactionMapConnected />;\n}\n","import {AccessAclTab} from '../../../tabs/ACL/ACL';\nimport ReplicatedTable from '../../../../../pages/navigation/content/ReplicatedTable/ReplicatedTable';\nimport ReplicatedTableMeta from '../../../content/ReplicatedTable/ReplicatedTableMeta';\n\nimport Link from '../../../../../pages/navigation/content/Link/Link';\nimport File from '../../../../../pages/navigation/content/File/File';\nimport Table from '../../../../../pages/navigation/content/Table/Table';\nimport MapNode from '../../../../../pages/navigation/content/MapNode/MapNode';\nimport Document from '../../../content/Document/DocumentWithRum';\nimport Transaction from '../../../../../pages/navigation/content/Transaction/Transaction';\nimport TransactionMap from '../../../../../pages/navigation/content/TransactionMap/TransactionMap';\n\nconst supportedContentTypes = {\n map_node: MapNode,\n portal_entrance: MapNode,\n portal_exit: MapNode,\n rootstock: MapNode,\n scion: MapNode,\n cell_node_map: MapNode,\n sys_node: MapNode,\n access_control_object_namespace_map: MapNode,\n access_control_object_namespace: MapNode,\n access_control_object: AccessAclTab,\n tablet_cell: MapNode,\n chaos_cell: MapNode,\n scheduler_pool_tree_map: MapNode,\n scheduler_pool: MapNode,\n document: Document,\n string_node: Document,\n int64_node: Document,\n uint64_node: Document,\n double_node: Document,\n boolean_node: Document,\n link: Link,\n file: File,\n table: Table,\n replicated_table: ReplicatedTable,\n chaos_replicated_table: ReplicatedTable,\n replication_log_table: ReplicatedTableMeta,\n transaction: Transaction,\n nested_transaction: Transaction,\n topmost_transaction_map: TransactionMap,\n transaction_map: TransactionMap,\n};\n\nexport default (type: string) => supportedContentTypes[type as keyof typeof supportedContentTypes];\n","import {createSelector} from 'reselect';\n\nimport type {RootState} from '../../../../store/reducers';\nimport type {YtQueueStatus} from '../../../../store/reducers/navigation/tabs/queue/types';\n\nconst metaMock = {cell_id: '890', host: 'lbk-vla-249.search.yandex.net'};\nexport const emptyRate = {'1m': 0, '1h': 0, '1d': 0};\n\nexport const getFamily = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.family;\n\nexport const getPartitionCount = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.partition_count;\n\nexport const getReadDataWeightRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.read_data_weight_rate ?? emptyRate;\n\nexport const getReadRowCountRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.read_row_count_rate ?? emptyRate;\n\nexport const getWriteDataWeightRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.write_data_weight_rate ?? emptyRate;\n\nexport const getWriteRowCountRate = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.write_row_count_rate ?? emptyRate;\n\nexport const getStatusError = (state: RootState) => state.navigation.tabs.queue.status.statusError;\n\nexport const getStatusLoading = (state: RootState) =>\n state.navigation.tabs.queue.status.statusLoading;\n\nexport const getStatusLoaded = (state: RootState) =>\n state.navigation.tabs.queue.status.statusLoaded;\n\nexport const getQueueStatusDataAlerts = (state: RootState): YtQueueStatus['alerts'] =>\n state.navigation.tabs.queue.status?.statusData?.alerts;\n\nexport const getQueueMode = (state: RootState) => state.navigation.tabs.queue.filters.queueMode;\n\nexport const getQueuePartitionIndex = (state: RootState) =>\n state.navigation.tabs.queue.filters.queuePartitionIndex;\n\nexport const getQueuePartitionsColumns = (state: RootState) =>\n state.navigation.tabs.queue.filters.partitionsColumns;\n\nexport const getQueueTabletCellHost = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTabletCellHost;\n\nexport const getQueueTabletCellId = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTabletCellId;\n\nexport const getQueueConsumerName = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueConsumerName;\n\nexport const getQueueOwner = (state: RootState) => state.navigation.tabs.queue.filters.queueOwner;\n\nexport const getQueueRateMode = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueRateMode;\n\nexport const getQueueTimeWindow = (state: RootState) =>\n state.navigation.tabs.queue.filters.queueTimeWindow;\n\nconst getPartitionsData = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsData;\n\nexport const getPartitions = createSelector(\n [getQueuePartitionIndex, getQueueTabletCellHost, getQueueTabletCellId, getPartitionsData],\n (queuePartitionIndex, queueTabletCellHost, queueTabletCellId, partitionsData) =>\n partitionsData\n ?.map((partition, index) => ({\n ...partition,\n meta: partition.meta ?? metaMock,\n partition_index: index,\n write_data_weight_rate: partition.write_data_weight_rate ?? emptyRate,\n write_row_count_rate: partition.write_row_count_rate ?? emptyRate,\n }))\n ?.filter(\n (partition) =>\n partition.partition_index.toString(10).includes(queuePartitionIndex) &&\n partition.meta.host.includes(queueTabletCellHost) &&\n partition.meta.cell_id.includes(queueTabletCellId),\n ) ?? [],\n);\n\nexport type SelectedPartition = NonNullable<ReturnType<typeof getPartitions>>[0];\n\nexport const getPartitionsError = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsError;\n\nexport const getPartitionsLoading = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsLoading;\n\nexport const getPartitionsLoaded = (state: RootState) =>\n state.navigation.tabs.queue.partitions.partitionsLoaded;\n\nconst getRawConsumers = (state: RootState) =>\n state.navigation.tabs.queue.status.statusData?.registrations;\n\nexport const getConsumers = createSelector(\n [getQueueConsumerName, getRawConsumers],\n (queueConsumerName, consumers) =>\n (consumers ? consumers : [])\n ?.map((consumer) => ({\n ...consumer,\n read_data_weight_rate: emptyRate,\n read_row_count_rate: emptyRate,\n }))\n ?.filter((item) => item.consumer.includes(queueConsumerName)),\n);\n\nexport type SelectedConsumer = NonNullable<ReturnType<typeof getConsumers>>[0];\n","import {createSelector} from 'reselect';\nimport type {RootState} from '../../../../store/reducers';\nimport {emptyRate} from './queue';\n\nexport const getConsumerPartitionIndex = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerPartitionIndex;\n\nexport const getConsumerRateMode = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerRateMode;\n\nexport const getConsumerPartitionsColumns = (state: RootState) =>\n state.navigation.tabs.consumer.filters.partitionsColumns;\n\nexport const getConsumerTimeWindow = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerTimeWindow;\n\nexport const getTargetQueue = (state: RootState) =>\n state.navigation.tabs.consumer.filters.targetQueue;\n\nexport const getConsumerRegisteredQueues = (state: RootState) =>\n state.navigation.tabs.consumer.status.consumerData?.registrations;\n\nconst getStatusData = (state: RootState) => state.navigation.tabs.consumer.status.consumerData;\n\nconst getTargetQueueStatusData = (state: RootState) => {\n const statusData = getStatusData(state);\n const {queue = ''} = getTargetQueue(state) ?? {};\n\n return statusData?.queues?.[queue];\n};\n\nexport const getOwner = (state: RootState) => getTargetQueueStatusData(state)?.owner;\n\nexport const getPartitionCount = (state: RootState) =>\n getTargetQueueStatusData(state)?.partition_count;\n\nexport const getReadDataWeightRate = (state: RootState) =>\n getTargetQueueStatusData(state)?.read_data_weight_rate ?? emptyRate;\n\nexport const getReadRowCountRate = (state: RootState) =>\n getTargetQueueStatusData(state)?.read_row_count_rate ?? emptyRate;\n\nexport const getTargetQueueError = (state: RootState) => {\n const targetQueueStatusData = getTargetQueueStatusData(state);\n return targetQueueStatusData?.error;\n};\n\nexport const getStatusError = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusError;\n\nexport const getStatusLoading = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusLoading;\n\nexport const getStatusLoaded = (state: RootState) =>\n state.navigation.tabs.consumer.status.statusLoaded;\n\nexport const getConsumerMode = (state: RootState) =>\n state.navigation.tabs.consumer.filters.consumerMode;\n\nconst getPartitionsData = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsData;\n\nexport const getPartitions = createSelector(\n [getConsumerPartitionIndex, getPartitionsData],\n (consumerPartitionIndex, partitionsData) =>\n partitionsData\n ?.map((partition, index) => ({\n ...partition,\n partition_index: index,\n read_data_weight_rate: partition.read_data_weight_rate ?? emptyRate,\n read_row_count_rate: partition.read_row_count_rate ?? emptyRate,\n }))\n ?.filter((partition) =>\n partition.partition_index.toString(10).includes(consumerPartitionIndex),\n ) ?? [],\n);\n\nexport type SelectedPartition = NonNullable<ReturnType<typeof getPartitions>>[0];\n\nexport const getPartitionsError = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsError;\n\nexport const getPartitionsLoading = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsLoading;\n\nexport const getPartitionsLoaded = (state: RootState) =>\n state.navigation.tabs.consumer.partitions.partitionsLoaded;\n","import type {ChangeEvent} from 'react';\n\nimport {\n CONSUMER_CHANGE_FILTERS,\n CONSUMER_MODE,\n CONSUMER_RATE_MODE,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport type {\n ConsumerFiltersAction,\n ConsumerFiltersState,\n ConsumerPartitionsColumns,\n PartitionColumn,\n} from '../../../../../store/reducers/navigation/tabs/consumer/filters';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\n\nexport function changeConsumerMode(evt: ChangeEvent<HTMLInputElement>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerMode: evt.target.value as CONSUMER_MODE},\n };\n}\n\nexport function changeConsumerPartitionIndex(value: string): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerPartitionIndex: value},\n };\n}\n\nexport function changeConsumerRateMode(evt: ChangeEvent<HTMLInputElement>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerRateMode: evt.target.value as CONSUMER_RATE_MODE},\n };\n}\n\ninterface CompactColumnSelectorPayload {\n items: Array<PartitionColumn<ConsumerPartitionsColumns>>;\n}\nexport function changeConsumerPartitionsColumns({\n items,\n}: CompactColumnSelectorPayload): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {partitionsColumns: items},\n };\n}\n\nexport function changeConsumerTimeWindow(\n evt: ChangeEvent<HTMLInputElement>,\n): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data: {consumerTimeWindow: evt.target.value as keyof TPerformanceCounters},\n };\n}\n\nexport function changeConsumerFilters(data: Partial<ConsumerFiltersState>): ConsumerFiltersAction {\n return {\n type: CONSUMER_CHANGE_FILTERS,\n data,\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {\n getConsumerRegisteredQueues,\n getTargetQueue,\n getTargetQueueError,\n} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport ErrorBlock from '../../../../../components/Block/Block';\nimport Icon from '../../../../../components/Icon/Icon';\nimport Link from '../../../../../components/Link/Link';\nimport {findCommonPathParent, genNavigationUrl} from '../../../../../utils/navigation/navigation';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport {Item, SelectSingle} from '../../../../../components/Select/Select';\nimport {Tooltip} from '../../../../../components/Tooltip/Tooltip';\nimport {changeConsumerFilters} from '../../../../../store/actions/navigation/tabs/consumer/filters';\n\nimport './TargetQueue.scss';\n\nconst block = cn('target-queue');\n\nexport default function TargetQueue() {\n const {queue} = useSelector(getTargetQueue) ?? {};\n const error = useSelector(getTargetQueueError);\n\n let clusterQueueUrl;\n if (queue) {\n const firstColon = queue.indexOf(':');\n if (firstColon === -1) {\n throw new Error(\n 'Unexpected behavior: queue should be formatted like \"${cluster}:${path}\"',\n );\n }\n const cluster = queue.slice(0, firstColon);\n const path = queue.slice(firstColon + 1);\n clusterQueueUrl = genNavigationUrl({cluster, path});\n }\n\n return (\n <div className={block()}>\n <div className=\"elements-heading elements-heading_size_xs\">Target queue</div>\n <ConsumerQueueSelector>\n {queue && (\n <Link theme=\"secondary\" url={clusterQueueUrl} routed>\n <Icon awesome=\"link\" />\n </Link>\n )}\n </ConsumerQueueSelector>\n {error && <ErrorBlock error={error} topMargin=\"half\" />}\n </div>\n );\n}\n\ninterface ConsumerQueueSelectorProps {\n className?: string;\n\n children?: React.ReactNode;\n}\n\nexport function ConsumerQueueSelector({className, children}: ConsumerQueueSelectorProps) {\n const dispatch = useDispatch();\n const registrations = useSelector(getConsumerRegisteredQueues);\n\n const handleSelect = (value?: string) => {\n const item = value ? registrations?.find(({queue}) => queue === value) : undefined;\n dispatch(changeConsumerFilters({targetQueue: item}));\n };\n\n const {prefix, items, renderItem} = React.useMemo(() => {\n const pref = reduce_(\n registrations,\n (acc, {queue}) => {\n return findCommonPathParent(acc, queue);\n },\n registrations?.[0]?.queue ?? '',\n );\n\n const options = map_(registrations, ({queue}) => {\n return {\n value: `${queue}`,\n text: queue,\n };\n });\n\n if (options.length === 1) {\n const [{value}] = options;\n requestAnimationFrame(() => {\n handleSelect(value);\n });\n }\n\n return {\n prefix: pref,\n items: options,\n renderItem: (item: Item) => {\n return item.value.slice(pref.length);\n },\n };\n }, [registrations, dispatch]);\n\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n return (\n <div className={block('selector', className)}>\n {items.length > 1 ? (\n <>\n <Prefix text={prefix} />{' '}\n <SelectSingle\n value={queue}\n items={items}\n className={block('queue-selector-value')}\n renderItem={renderItem}\n width=\"auto\"\n onChange={handleSelect}\n placeholder=\"Select queue... \"\n />\n </>\n ) : (\n <Prefix text={queue ?? ''} />\n )}\n {queue && <ClipboardButton text={queue} view=\"clear\" />}\n {children}\n </div>\n );\n}\n\nfunction Prefix({text}: {text: string}) {\n const parts = text.split('/');\n\n return (\n <Tooltip className={block('prefix')} content={text}>\n {parts.map((item, index) => {\n return (\n <React.Fragment key={index}>\n {item && <span className={block('prefix-item')}>{item}</span>}\n {index !== parts.length - 1 ? '/' : null}\n </React.Fragment>\n );\n })}\n </Tooltip>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport './BarChart.scss';\n\nconst block = cn('multimeter');\n\ninterface Props {\n values: number[];\n size?: number;\n}\n\nconst BarChart: React.VFC<Props> = ({values, size = 20}) => {\n let min = Math.min(0, ...values);\n let max = Math.max(0, ...values);\n\n if (min === max) {\n min = 0;\n max = 1;\n }\n\n const width = Math.floor((size * 3) / (4 * values.length - 1));\n\n return (\n <div className={block('barchart')} style={{width: size, height: size}}>\n {values.map((v, i) => {\n const marginRight = Math.floor(\n i === values.length - 1 ? 0 : size / (4 * values.length - 1),\n );\n const style = {\n height: `${Math.abs(v * 100) / (max - min)}%`,\n width: `${width}px`,\n marginBottom: `${(100 * (Math.min(0, v) - min)) / (max - min)}%`,\n marginRight: `max(1px,${marginRight}px)`,\n } as any;\n if (!v) {\n style.height = '100%';\n // if there is no bar, make full height, but transparent bar so that it height is the same as full\n // bar's one\n style.backgroundColor = 'inherit';\n }\n return <div key={i} className={block('barchart-bar')} style={style} />;\n })}\n </div>\n );\n};\n\nexport default BarChart;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport hummerFormat from '../../common/hammer/format';\nimport type {TPerformanceCounters} from '../../store/reducers/navigation/tabs/queue/types';\nimport BarChart from './BarChart';\nimport {Tooltip} from '../Tooltip/Tooltip';\nimport MetaTable from '../MetaTable/MetaTable';\n\nimport './Multimeter.scss';\n\nconst block = cn('multimeter');\n\ninterface Props extends Partial<TPerformanceCounters> {\n show: keyof TPerformanceCounters;\n showTooltip?: boolean;\n format?: (value: number) => React.ReactNode;\n}\n\nconst Multimeter: React.VFC<Props> = ({show, format, ...counters}) => {\n const formatter = format || hummerFormat.Number;\n\n const counterNames = ['1d', '1h', '1m'] as const;\n const content = (\n <MetaTable\n className={block('tooltip')}\n items={counterNames.map((key) => {\n return {key, value: formatter(counters[key] ?? 0)};\n })}\n />\n );\n\n return (\n <div className={block()}>\n <Tooltip content={content}>\n <BarChart values={counterNames.map((key) => counters[key] ?? 0)} />\n </Tooltip>\n <div className={block('value')}>{formatter(counters[show] ?? 0)}</div>\n </div>\n );\n};\n\nexport default Multimeter;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\n\nimport format from '../../../../../common/hammer/format';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport Label from '../../../../../components/Label/Label';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport {SubjectCard} from '../../../../../components/SubjectLink/SubjectLink';\n\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {isNull} from '../../../../../utils';\nimport {getTargetQueue} from '../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Meta.scss';\n\nconst block = cn('consumer-meta');\n\ninterface Props {\n targetQueue?: string;\n owner?: string;\n partitionCount?: number;\n readDataWeightRate?: TPerformanceCounters;\n readRowCountRate?: TPerformanceCounters;\n}\n\nconst Meta: React.FC<Props> = ({owner, partitionCount, readDataWeightRate, readRowCountRate}) => {\n const {vital} = useSelector(getTargetQueue) ?? {};\n\n return (\n <ErrorBoundary>\n <div className={block('header')}>\n <div className={block('header-title', 'elements-heading elements-heading_size_xs')}>\n Meta\n </div>\n </div>\n <MetaTable\n className={block()}\n items={[\n [\n {\n key: 'owner',\n label: 'Owner',\n value: owner && <SubjectCard name={owner} />,\n visible: !isNull(owner),\n },\n ],\n [\n {\n key: 'vital',\n label: 'Vital',\n value: <Label theme=\"default\" text={vital ? 'True' : 'False'} />,\n visible: !isNull(vital),\n },\n {\n key: 'partition_count',\n label: 'Partition count',\n value: partitionCount,\n visible: !isNull(partitionCount),\n },\n ],\n [\n {\n key: 'read-data-weight-rate',\n label: 'Data weight read rate',\n value: (\n <Multimeter\n {...readDataWeightRate}\n show=\"1m\"\n format={format.BytesPerSecond}\n />\n ),\n visible: !isNull(readDataWeightRate),\n },\n {\n key: 'read-row-count-rate',\n label: 'Rows read rate',\n value: (\n <Multimeter\n {...readRowCountRate}\n show=\"1m\"\n format={format.RowsPerSecond}\n />\n ),\n visible: !isNull(readRowCountRate),\n },\n ],\n ]}\n />\n </ErrorBoundary>\n );\n};\n\nexport default React.memo(Meta);\n","import React, {ComponentType} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {CONSUMER_MODE} from '../../../../../constants/navigation/tabs/consumer';\nimport {changeConsumerMode} from '../../../../../store/actions/navigation/tabs/consumer/filters';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getConsumerMode} from '../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Toolbar.scss';\n\nconst block = cn('consumer-toolbar');\n\ninterface Props extends PropsFromRedux {\n extras: ComponentType;\n}\n\nconst tabItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: CONSUMER_MODE.METRICS,\n text: 'Metrics',\n },\n {\n value: CONSUMER_MODE.PARTITIONS,\n text: 'Partitions',\n },\n];\n\nconst Toolbar: React.VFC<Props> = ({extras: Extras, consumerMode, changeConsumerMode}) => {\n return (\n <div className={block()}>\n <RadioButton value={consumerMode} onChange={changeConsumerMode} items={tabItems} />\n <Extras />\n </div>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n consumerMode: getConsumerMode(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeConsumerMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Toolbar);\n","import React from 'react';\nimport moment from 'moment';\nimport type {Column} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../common/hammer/format';\nimport Label from '../../../../../components/Label/Label';\nimport Link from '../../../../../components/Link/Link';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport {SubjectCard} from '../../../../../components/SubjectLink/SubjectLink';\nimport WarningIcon from '../../../../../components/WarningIcon/WarningIcon';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {Host} from '../../../../../containers/Host/Host';\nimport type {YTError} from '../../../../../types';\nimport {genNavigationUrl} from '../../../../../utils/navigation/navigation';\nimport {ClickableText} from '../../../../../components/ClickableText/ClickableText';\nimport {showErrorPopup} from '../../../../../utils/utils';\n\nconst DISPLAY_FORMAT = 'DD-MM-YYYY HH:mm:ss';\n\nexport function bool<T>(name: string, getter: (row: T) => boolean): Column<T> {\n return {\n name,\n render({row}) {\n return <Label theme=\"default\" text={getter(row) ? 'True' : 'False'} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function datetime<T>(name: string, getter: (row: T) => string | null): Column<T> {\n return {\n name,\n render({row}) {\n return moment(getter(row)).format(DISPLAY_FORMAT);\n },\n sortAccessor(row) {\n return moment(getter(row)).valueOf();\n },\n };\n}\n\nexport function error<T>(\n name: string,\n getter: (row: T) => YTError | undefined,\n className?: string,\n): Column<T> {\n return {\n name,\n render({row}) {\n const error = getter(row);\n if (!error) return null;\n\n return (\n <WarningIcon\n className={className}\n color=\"danger\"\n hoverContent={<HoverContent error={error} />}\n >\n Error\n </WarningIcon>\n );\n },\n sortAccessor: getter,\n };\n}\n\nfunction HoverContent({error}: {error: YTError}) {\n return (\n <span>\n {error.message ?? 'Error'}{' '}\n <ClickableText onClick={() => showErrorPopup(error)}>Details</ClickableText>\n </span>\n );\n}\n\nexport function host<T>(name: string, getter: (row: T) => string, classNames: string): Column<T> {\n return {\n name,\n render({row}) {\n const host = getter(row);\n return <Host asTabletNode address={host} copyBtnClassName={classNames} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function multimeter<T>(\n name: string,\n getter: (row: T) => TPerformanceCounters,\n show: keyof TPerformanceCounters,\n valueFormat: (value: number) => React.ReactNode = format.Number,\n): Column<T> {\n return {\n name,\n render({row}) {\n const counters = getter(row);\n return <Multimeter {...counters} show={show} format={valueFormat} />;\n },\n sortAccessor(row) {\n const counters = getter(row);\n return counters['1m'];\n },\n };\n}\n\nexport function number<T>(name: string, getter: (row: T) => number | null): Column<T> {\n return {\n name,\n align: 'right',\n render({row}) {\n return format.Number(getter(row));\n },\n sortAccessor: getter,\n };\n}\n\nexport function string<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n return getter(row);\n },\n sortAccessor: getter,\n };\n}\n\nexport function user<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n return <SubjectCard name={getter(row)} />;\n },\n sortAccessor: getter,\n };\n}\n\nexport function ypath<T>(name: string, getter: (row: T) => string): Column<T> {\n return {\n name,\n render({row}) {\n const consumer = getter(row);\n if (!consumer) return null;\n\n const [cluster, path] = consumer.split(':');\n const url = genNavigationUrl({cluster, path});\n\n return (\n <Link url={url} routed>\n {consumer}\n </Link>\n );\n },\n sortAccessor: getter,\n };\n}\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../../components/Block/Block';\nimport {NoContent} from '../../../../../../components/NoContent/NoContent';\nimport {CONSUMER_RATE_MODE} from '../../../../../../constants/navigation/tabs/consumer';\nimport {\n datetime,\n error,\n multimeter,\n number,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport {loadConsumerPartitions} from '../../../../../../store/actions/navigation/tabs/consumer/partitions';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedPartition,\n getConsumerPartitionsColumns,\n getConsumerRateMode,\n getConsumerTimeWindow,\n getPartitions,\n getPartitionsError,\n getPartitionsLoaded,\n getPartitionsLoading,\n getTargetQueue,\n} from '../../../../../../store/selectors/navigation/tabs/consumer';\n\nimport './Partitions.scss';\n\nconst block = cn('consumer-partitions');\n\nconst readRateName: Record<CONSUMER_RATE_MODE, string> = {\n [CONSUMER_RATE_MODE.ROWS]: 'Read rate',\n [CONSUMER_RATE_MODE.DATA_WEIGHT]: 'Read rate',\n};\nconst readRateGetter: Record<CONSUMER_RATE_MODE, (row: SelectedPartition) => TPerformanceCounters> =\n {\n [CONSUMER_RATE_MODE.ROWS]: (x) => x.read_row_count_rate,\n [CONSUMER_RATE_MODE.DATA_WEIGHT]: (x) => x.read_data_weight_rate,\n };\n\nconst getColumns = createSelector(\n [getConsumerRateMode, getConsumerTimeWindow, getConsumerPartitionsColumns],\n (rateMode, timeWindow, columns): Array<Column<SelectedPartition>> => {\n return columns\n .filter((column) => column.checked)\n .map(({name, caption}) => {\n if (name === 'error') {\n return error<SelectedPartition>(caption, (x) => x[name], block('error'));\n } else if (name === 'read_rate') {\n return multimeter<SelectedPartition>(\n readRateName[rateMode],\n readRateGetter[rateMode],\n timeWindow,\n rateMode === CONSUMER_RATE_MODE.ROWS\n ? format.RowsPerSecond\n : format.BytesPerSecond,\n );\n } else if (name === 'next_row_commit_time') {\n return datetime<SelectedPartition>(caption, (x) => x[name]);\n } else {\n return number<SelectedPartition>(caption, (x) => x[name]);\n }\n });\n },\n);\n\nconst settings: Settings = {displayIndices: false};\n\nconst Partitions: React.VFC<PropsFromRedux> = ({\n loadConsumerPartitions,\n columns,\n partitions,\n partitionsError,\n partitionsLoading,\n partitionsLoaded,\n}) => {\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n useEffect(() => {\n if (queue) {\n loadConsumerPartitions(queue);\n }\n }, [queue]);\n\n if (!queue) {\n return (\n <NoContent\n hint={'Please select a queue'}\n warning={\"You don't have any selected queues\"}\n />\n );\n }\n\n if (partitionsError) {\n return <ErrorBlock error={partitionsError} topMargin=\"half\" />;\n }\n\n return (\n <DataTableYT\n className={block('table-row')}\n columns={columns}\n data={partitions}\n loading={partitionsLoading}\n loaded={partitionsLoaded}\n useThemeYT\n settings={settings}\n />\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n columns: getColumns(state),\n partitions: getPartitions(state),\n partitionsError: getPartitionsError(state),\n partitionsLoading: getPartitionsLoading(state),\n partitionsLoaded: getPartitionsLoaded(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadConsumerPartitions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Partitions);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n CONSUMER_PARTITIONS_LOAD_FAILURE,\n CONSUMER_PARTITIONS_LOAD_REQUEST,\n CONSUMER_PARTITIONS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {ConsumerPartitionsAction} from '../../../../../store/reducers/navigation/tabs/consumer/partitions';\nimport type {YtConsumerPartition} from '../../../../../store/reducers/navigation/tabs/consumer/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype ConsumerThunkAction = ThunkAction<void, RootState, unknown, ConsumerPartitionsAction>;\n\nexport function loadConsumerPartitions(queue: string): ConsumerThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: CONSUMER_PARTITIONS_LOAD_REQUEST});\n return ytApiV3Id\n .get(\n YTApiId.queueConsumerPartitions,\n prepareRequest(`/@queue_consumer_partitions/${queue.replace(/\\//g, '\\\\/')}`, {\n path,\n transaction,\n }),\n )\n .then((data: YtConsumerPartition[]) => {\n dispatch({\n type: CONSUMER_PARTITIONS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: CONSUMER_PARTITIONS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport Filter from '../../../../../../components/Filter/Filter';\nimport ColumnSelector from '../../../../../../components/ColumnSelector/ColumnSelector';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {CONSUMER_RATE_MODE} from '../../../../../../constants/navigation/tabs/consumer';\nimport {\n changeConsumerPartitionIndex,\n changeConsumerPartitionsColumns,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/consumer/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n getConsumerPartitionIndex,\n getConsumerPartitionsColumns,\n getConsumerRateMode,\n getConsumerTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/consumer';\nimport Button from '../../../../../../components/Button/Button';\nimport Icon from '../../../../../../components/Icon/Icon';\nimport Dropdown from '../../../../../../components/Dropdown/Dropdown';\n\nimport './PartitionsExtraControls.scss';\nimport {PartitionColumn} from '../../../../../../store/reducers/navigation/tabs/consumer/filters';\n\nconst block = cn('consumer-partitions');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: CONSUMER_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: CONSUMER_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nexport const timeItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: '1m' as keyof TPerformanceCounters,\n text: '1m',\n },\n {\n value: '1h' as keyof TPerformanceCounters,\n text: '1h',\n },\n {\n value: '1d' as keyof TPerformanceCounters,\n text: '1d',\n },\n];\n\nexport interface CompactColumnSelectorProps<Names> {\n items: Array<PartitionColumn<Names>>;\n onChange: Function;\n}\nexport function CompactColumnSelector<Names>({items, onChange}: CompactColumnSelectorProps<Names>) {\n return (\n <Dropdown\n className={block('filters-item')}\n trigger=\"click\"\n directions={['bottom']}\n button={\n <Button pin={'round-round'}>\n <Icon awesome=\"table\" face=\"light\" />\n Columns\n </Button>\n }\n template={\n <ColumnSelector\n items={items}\n onChange={onChange}\n className={block('custom-column-selector')}\n />\n }\n />\n );\n}\n\nconst PartitionsExtraControls: React.VFC<Props> = ({\n consumerPartitionIndex,\n consumerRateMode,\n consumerTimeWindow,\n partitionsColumns,\n changeConsumerPartitionIndex,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n changeConsumerPartitionsColumns,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={consumerPartitionIndex}\n onChange={changeConsumerPartitionIndex}\n placeholder=\"Partition index...\"\n />\n <div className={block('divider')} />\n <RadioButton\n value={consumerRateMode}\n onChange={changeConsumerRateMode}\n items={rateItems}\n />\n <RadioButton\n value={consumerTimeWindow}\n onChange={changeConsumerTimeWindow}\n items={timeItems}\n />\n <CompactColumnSelector\n onChange={changeConsumerPartitionsColumns}\n items={partitionsColumns}\n />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n consumerPartitionIndex: getConsumerPartitionIndex(state),\n consumerRateMode: getConsumerRateMode(state),\n consumerTimeWindow: getConsumerTimeWindow(state),\n partitionsColumns: getConsumerPartitionsColumns(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeConsumerPartitionIndex,\n changeConsumerRateMode,\n changeConsumerTimeWindow,\n changeConsumerPartitionsColumns,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(PartitionsExtraControls);\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport ErrorBlock from '../../../../components/Block/Block';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {CONSUMER_MODE} from '../../../../constants/navigation/tabs/consumer';\nimport {loadConsumerStatus} from '../../../../store/actions/navigation/tabs/consumer/status';\nimport type {RootState} from '../../../../store/reducers';\nimport {\n getConsumerMode,\n getOwner,\n getPartitionCount,\n getReadDataWeightRate,\n getReadRowCountRate,\n getStatusError,\n} from '../../../../store/selectors/navigation/tabs/consumer';\n\nimport TargetQueue from './TargetQueue/TargetQueue';\nimport Meta from './Meta/Meta';\nimport Toolbar from './Toolbar/Toolbar';\nimport ConsumerMetrics from './views/ConsumerMetrics/ConsumerMetrics';\nimport Partitions from './views/Partitions/Partitions';\nimport PartitionsExtraControls from './views/Partitions/PartitionsExtraControls';\n\nconst views: Record<CONSUMER_MODE, {ExtraControls: ComponentType; View: ComponentType}> = {\n [CONSUMER_MODE.METRICS]: {ExtraControls: () => null, View: ConsumerMetrics},\n [CONSUMER_MODE.PARTITIONS]: {ExtraControls: PartitionsExtraControls, View: Partitions},\n};\n\nconst emptyView: {ExtraControls: ComponentType; View: ComponentType} = {\n ExtraControls: () => null,\n View: () => null,\n};\n\nfunction useViewByMode(mode: CONSUMER_MODE): {ExtraControls: ComponentType; View: ComponentType} {\n return views[mode] || emptyView;\n}\n\nconst Consumer: React.VFC<PropsFromRedux> = ({\n loadConsumerStatus,\n owner,\n partitionCount,\n readDataWeightRate,\n readRowCountRate,\n consumerMode,\n statusError,\n}) => {\n useEffect(() => {\n loadConsumerStatus();\n }, []);\n\n const {ExtraControls, View} = useViewByMode(consumerMode);\n\n if (statusError) {\n return <ErrorBlock error={statusError} topMargin=\"none\" />;\n }\n\n return (\n <ErrorBoundary>\n <TargetQueue />\n <Meta\n owner={owner}\n partitionCount={partitionCount}\n readDataWeightRate={readDataWeightRate}\n readRowCountRate={readRowCountRate}\n />\n <WithStickyToolbar toolbar={<Toolbar extras={ExtraControls} />} content={<View />} />\n </ErrorBoundary>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n owner: getOwner(state),\n partitionCount: getPartitionCount(state),\n readDataWeightRate: getReadDataWeightRate(state),\n readRowCountRate: getReadRowCountRate(state),\n consumerMode: getConsumerMode(state),\n statusError: getStatusError(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadConsumerStatus,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Consumer);\n","import React from 'react';\n\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {getPath} from '../../../../../../store/selectors/navigation';\nimport {getTargetQueue} from '../../../../../../store/selectors/navigation/tabs/consumer';\nimport {useSelector} from 'react-redux';\nimport ErrorBoundary from '../../../../../../components/ErrorBoundary/ErrorBoundary';\nimport {NoContent} from '../../../../../../components/NoContent/NoContent';\nimport UIFactory from '../../../../../../UIFactory';\n\nexport default function ConsumerMetrics() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n const {queue} = useSelector(getTargetQueue) ?? {};\n\n const MetricsComponent = UIFactory.getComponentForConsumerMetrics()!;\n\n if (!MetricsComponent) {\n return <NoContent warning={'Metrics are not supported for the installation'} />;\n }\n\n if (!queue) {\n return (\n <NoContent\n hint={'Please select a queue'}\n warning={\"You don't have any selected queues\"}\n />\n );\n }\n\n return (\n <ErrorBoundary>\n <MetricsComponent {...{cluster, path, targetQueue: queue}} />{' '}\n </ErrorBoundary>\n );\n}\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n CONSUMER_STATUS_LOAD_FAILURE,\n CONSUMER_STATUS_LOAD_REQUEST,\n CONSUMER_STATUS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/consumer';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {ConsumerStatusAction} from '../../../../../store/reducers/navigation/tabs/consumer/status';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {ConsumerFiltersAction} from '../../../../../store/reducers/navigation/tabs/consumer/filters';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport {\n getConsumerRegisteredQueues,\n getTargetQueue,\n} from '../../../../../store/selectors/navigation/tabs/consumer';\nimport {changeConsumerFilters} from './filters';\n\ntype ConsumerThunkAction = ThunkAction<\n void,\n RootState,\n unknown,\n ConsumerStatusAction | ConsumerFiltersAction\n>;\n\nexport function loadConsumerStatus(): ConsumerThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: CONSUMER_STATUS_LOAD_REQUEST});\n return ytApiV3Id\n .get(\n YTApiId.queueConsumerStatus,\n prepareRequest('/@queue_consumer_status', {path, transaction}),\n )\n .then((data) => {\n if (data.error) {\n throw data.error;\n }\n dispatch({\n type: CONSUMER_STATUS_LOAD_SUCCESS,\n data,\n });\n\n const state2 = getState();\n const targetQueue = getTargetQueue(state2);\n const queues = getConsumerRegisteredQueues(state2);\n if (targetQueue && !queues?.find(({queue}) => targetQueue.queue === queue)) {\n dispatch(changeConsumerFilters({targetQueue: undefined}));\n }\n })\n .catch((error: Error) => {\n dispatch({\n type: CONSUMER_STATUS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport CollapsibleSection, {\n CollapsibleSectionProps,\n} from '../../components/CollapsibleSection/CollapsibleSection';\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Alert from '../../components/Alert/Alert';\nimport {UI_COLLAPSIBLE_SIZE} from '../../constants/global/index';\nimport {YTError} from '../../types/index';\n\nconst block = cn('yt-alerts');\n\nexport type AlertsProps = {\n className?: string;\n items?: Array<YTError> | Record<string, YTError>;\n marginDirection?: CollapsibleSectionProps['marginDirection'];\n};\n\nexport function Alerts({className, items, marginDirection = 'bottom'}: AlertsProps) {\n if (isEmpty_(items)) {\n return null;\n }\n\n return (\n <ErrorBoundary>\n <div className={block(null, className)}>\n <CollapsibleSection\n name=\"Alerts\"\n size={UI_COLLAPSIBLE_SIZE}\n marginDirection={marginDirection}\n >\n {map_(items, (alert, index) => {\n return <Alert key={index} error={alert} />;\n })}\n </CollapsibleSection>\n </div>\n </ErrorBoundary>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../../../../common/hammer/format';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport Multimeter from '../../../../../components/Multimeter/Multimeter';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {isNull} from '../../../../../utils';\n\nimport './Meta.scss';\n\nconst block = cn('queue-meta');\n\ninterface Props {\n partitionCount?: number;\n family?: string;\n writeDataWeightRate?: TPerformanceCounters;\n writeRowCountRate?: TPerformanceCounters;\n}\n\nconst Meta: React.VFC<Props> = ({\n partitionCount,\n family,\n writeDataWeightRate,\n writeRowCountRate,\n}) => {\n return (\n <ErrorBoundary>\n <div className=\"elements-heading elements-heading_size_xs\">Meta</div>\n <MetaTable\n className={block()}\n items={[\n [\n {\n key: 'partition-count',\n label: 'Partition count',\n value: partitionCount,\n visible: !isNull(partitionCount),\n },\n {\n key: 'family',\n label: 'Family',\n value: family,\n visible: !isNull(family),\n },\n ],\n [\n {\n key: 'write-row-count-rate',\n label: 'Rows write rate',\n value: (\n <Multimeter\n {...writeRowCountRate}\n show=\"1m\"\n format={format.RowsPerSecond}\n />\n ),\n visible: !isNull(writeRowCountRate),\n },\n {\n key: 'write-data-weight-rate',\n label: 'Data weight write rate',\n value: (\n <Multimeter\n {...writeDataWeightRate}\n show=\"1m\"\n format={format.BytesPerSecond}\n />\n ),\n visible: !isNull(writeDataWeightRate),\n },\n ],\n ]}\n />\n </ErrorBoundary>\n );\n};\n\nexport default React.memo(Meta);\n","import type {ChangeEvent} from 'react';\n\nimport {\n QUEUE_CHANGE_PARTITIONS_COLUMNS,\n QUEUE_CHANGE_PERSISTED_STATE,\n QUEUE_MODE,\n QUEUE_RATE_MODE,\n} from '../../../../../constants/navigation/tabs/queue';\nimport type {\n QueueFiltersAction,\n QueuePartitionsColumns,\n} from '../../../../../store/reducers/navigation/tabs/queue/filters';\nimport {PartitionColumn} from '../../../../reducers/navigation/tabs/consumer/filters';\nimport type {TPerformanceCounters} from '../../../../../store/reducers/navigation/tabs/queue/types';\n\nexport function changeQueueMode(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueMode: evt.target.value as QUEUE_MODE},\n };\n}\n\nexport function changeQueuePartitionIndex(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queuePartitionIndex: value},\n };\n}\n\nexport function changeQueueTabletCellHost(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTabletCellHost: value},\n };\n}\n\nexport function changeQueueTabletCellId(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTabletCellId: value},\n };\n}\n\nexport function changeQueueConsumerName(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueConsumerName: value},\n };\n}\n\nexport function changeQueueOwner(value: string): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueOwner: value},\n };\n}\n\nexport function changeQueueRateMode(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueRateMode: evt.target.value as QUEUE_RATE_MODE},\n };\n}\n\nexport function changeQueueTimeWindow(evt: ChangeEvent<HTMLInputElement>): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PERSISTED_STATE,\n data: {queueTimeWindow: evt.target.value as keyof TPerformanceCounters},\n };\n}\n\ninterface CompactColumnSelectorPayload {\n items: Array<PartitionColumn<QueuePartitionsColumns>>;\n}\nexport function changeQueuePartitionsColumns({\n items,\n}: CompactColumnSelectorPayload): QueueFiltersAction {\n return {\n type: QUEUE_CHANGE_PARTITIONS_COLUMNS,\n data: {partitionsColumns: items},\n };\n}\n","import React, {ComponentType} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport RadioButton from '../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_MODE} from '../../../../../constants/navigation/tabs/queue';\nimport {changeQueueMode} from '../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../store/reducers';\nimport {getQueueMode} from '../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Toolbar.scss';\n\nconst block = cn('queue-toolbar');\n\ninterface Props extends PropsFromRedux {\n extras: ComponentType;\n}\n\nconst tabItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_MODE.METRICS,\n text: 'Metrics',\n },\n {\n value: QUEUE_MODE.PARTITIONS,\n text: 'Partitions',\n },\n {\n value: QUEUE_MODE.CONSUMERS,\n text: 'Consumers',\n },\n];\n\nconst Toolbar: React.VFC<Props> = ({extras: Extras, queueMode, changeQueueMode}) => {\n return (\n <div className={block()}>\n <RadioButton value={queueMode} onChange={changeQueueMode} items={tabItems} />\n <Extras />\n </div>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queueMode: getQueueMode(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueueMode,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Toolbar);\n","import React from 'react';\n\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {getPath} from '../../../../../../store/selectors/navigation';\nimport {useSelector} from 'react-redux';\nimport ErrorBoundary from '../../../../../../components/ErrorBoundary/ErrorBoundary';\nimport UIFactory from '../../../../../../UIFactory';\n\nexport default function QueueMetrics() {\n const path = useSelector(getPath);\n const cluster = useSelector(getCluster);\n\n const MetricsComponent = UIFactory.getComonentForQueueMetrics()!;\n\n return (\n <ErrorBoundary>\n <MetricsComponent {...{cluster, path}} />\n </ErrorBoundary>\n );\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n bool,\n error,\n multimeter,\n ypath,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedConsumer,\n getConsumers,\n getQueueRateMode,\n getQueueTimeWindow,\n getStatusLoaded,\n getStatusLoading,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Consumers.scss';\n\nconst block = cn('queue-consumers');\n\nconst readRateName: Record<QUEUE_RATE_MODE, string> = {\n [QUEUE_RATE_MODE.ROWS]: 'Read rate',\n [QUEUE_RATE_MODE.DATA_WEIGHT]: 'Read rate',\n};\nconst readRateGetter: Record<QUEUE_RATE_MODE, (row: SelectedConsumer) => TPerformanceCounters> = {\n [QUEUE_RATE_MODE.ROWS]: (x) => x.read_row_count_rate,\n [QUEUE_RATE_MODE.DATA_WEIGHT]: (x) => x.read_data_weight_rate,\n};\n\nconst getColumns = createSelector(\n [getQueueRateMode, getQueueTimeWindow],\n (rateMode, timeWindow): Array<Column<SelectedConsumer>> => [\n ypath<SelectedConsumer>('Consumer', (x) => x.consumer),\n error<SelectedConsumer>('Error', (x) => x.error),\n multimeter<SelectedConsumer>(\n readRateName[rateMode],\n readRateGetter[rateMode],\n timeWindow,\n rateMode === QUEUE_RATE_MODE.ROWS ? format.RowsPerSecond : format.BytesPerSecond,\n ),\n bool<SelectedConsumer>('Vital', (x) => x.vital),\n ],\n);\n\nconst settings: Settings = {displayIndices: false};\n\nexport default function Consumers() {\n const columns = useSelector(getColumns);\n const consumers = useSelector(getConsumers);\n const consumersLoading = useSelector(getStatusLoading);\n const consumersLoaded = useSelector(getStatusLoaded);\n\n return (\n <DataTableYT\n className={block('table-row')}\n columns={columns}\n data={consumers}\n loading={consumersLoading}\n loaded={consumersLoaded}\n useThemeYT\n settings={settings}\n />\n );\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport Filter from '../../../../../../components/Filter/Filter';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n changeQueueConsumerName,\n changeQueueOwner,\n changeQueueRateMode,\n changeQueueTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport {\n getQueueConsumerName,\n getQueueOwner,\n getQueueRateMode,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './ConsumersExtraControls.scss';\n\nconst block = cn('queue-consumers');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: QUEUE_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nconst ConsumersExtraControls: React.VFC<Props> = ({\n queueConsumerName,\n queueRateMode,\n changeQueueConsumerName,\n changeQueueRateMode,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={queueConsumerName}\n onChange={changeQueueConsumerName}\n placeholder=\"Consumer name...\"\n />\n <RadioButton value={queueRateMode} onChange={changeQueueRateMode} items={rateItems} />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queueConsumerName: getQueueConsumerName(state),\n queueOwner: getQueueOwner(state),\n queueRateMode: getQueueRateMode(state),\n queueTimeWindow: getQueueTimeWindow(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueueConsumerName,\n changeQueueOwner,\n changeQueueRateMode,\n changeQueueTimeWindow,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(ConsumersExtraControls);\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport {createSelector} from 'reselect';\nimport type {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../../common/hammer/format';\nimport DataTableYT from '../../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../../components/Block/Block';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n datetime,\n error,\n host,\n multimeter,\n number,\n string,\n} from '../../../../../../pages/navigation/tabs/Queue/utils/column-builder';\nimport {loadQueuePartitions} from '../../../../../../store/actions/navigation/tabs/queue/partitions';\nimport type {RootState} from '../../../../../../store/reducers';\nimport type {TPerformanceCounters} from '../../../../../../store/reducers/navigation/tabs/queue/types';\nimport {\n SelectedPartition,\n getPartitions,\n getPartitionsError,\n getPartitionsLoaded,\n getPartitionsLoading,\n getQueuePartitionsColumns,\n getQueueRateMode,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './Partitions.scss';\n\nconst block = cn('queue-partitions');\n\nconst writeRateName: Record<QUEUE_RATE_MODE, string> = {\n [QUEUE_RATE_MODE.ROWS]: 'Write rate',\n [QUEUE_RATE_MODE.DATA_WEIGHT]: 'Write rate',\n};\n\nconst writeRateGetter: Record<QUEUE_RATE_MODE, (row: SelectedPartition) => TPerformanceCounters> = {\n [QUEUE_RATE_MODE.ROWS]: (x) => x.write_row_count_rate,\n [QUEUE_RATE_MODE.DATA_WEIGHT]: (x) => x.write_data_weight_rate,\n};\n\nconst getColumns = createSelector(\n [getQueueRateMode, getQueueTimeWindow, getQueuePartitionsColumns],\n (rateMode, timeWindow, columns): Array<Column<SelectedPartition>> => {\n return columns\n .filter((column) => column.checked)\n .map(({name, caption}) => {\n if (name === 'error') {\n return error<SelectedPartition>(caption, (x) => x[name], block('error'));\n } else if (name === 'host') {\n return host<SelectedPartition>(\n caption,\n (x) => x.meta?.host,\n block('hover-action'),\n );\n } else if (name === 'cell_id') {\n return string<SelectedPartition>(caption, (x) => x.meta?.cell_id);\n } else if (name === 'write_rate') {\n return multimeter<SelectedPartition>(\n writeRateName[rateMode],\n writeRateGetter[rateMode],\n timeWindow,\n rateMode === QUEUE_RATE_MODE.ROWS\n ? format.RowsPerSecond\n : format.BytesPerSecond,\n );\n } else if (name === 'last_row_commit_time') {\n return datetime<SelectedPartition>(caption, (x) => x[name]);\n } else {\n return number<SelectedPartition>(caption, (x) => x[name]);\n }\n });\n },\n);\n\nconst settings: Settings = {displayIndices: false};\n\nconst Partitions: React.VFC<PropsFromRedux> = ({\n loadQueuePartitions,\n columns,\n partitions,\n partitionsError,\n partitionsLoading,\n partitionsLoaded,\n}) => {\n useEffect(() => {\n loadQueuePartitions();\n }, []);\n\n if (partitionsError) {\n return <ErrorBlock error={partitionsError} topMargin=\"half\" />;\n }\n\n return (\n <DataTableYT\n className={block()}\n columns={columns}\n data={partitions}\n loading={partitionsLoading}\n loaded={partitionsLoaded}\n useThemeYT\n settings={settings}\n />\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n columns: getColumns(state),\n partitions: getPartitions(state),\n partitionsError: getPartitionsError(state),\n partitionsLoading: getPartitionsLoading(state),\n partitionsLoaded: getPartitionsLoaded(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadQueuePartitions,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Partitions);\n","import type {ThunkAction} from 'redux-thunk';\nimport {\n QUEUE_PARTITIONS_LOAD_FAILURE,\n QUEUE_PARTITIONS_LOAD_REQUEST,\n QUEUE_PARTITIONS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/queue';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {QueuePartitionsAction} from '../../../../../store/reducers/navigation/tabs/queue/partitions';\nimport type {YtQueuePartition} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype QueueThunkAction = ThunkAction<void, RootState, unknown, QueuePartitionsAction>;\n\nexport function loadQueuePartitions(): QueueThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: QUEUE_PARTITIONS_LOAD_REQUEST});\n\n return ytApiV3Id\n .get(YTApiId.queuePartitions, prepareRequest('/@queue_partitions', {path, transaction}))\n .then(async (data: YtQueuePartition[]) => {\n dispatch({\n type: QUEUE_PARTITIONS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: QUEUE_PARTITIONS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {\n CompactColumnSelector,\n timeItems,\n} from '../../../Consumer/views/Partitions/PartitionsExtraControls';\nimport Filter from '../../../../../../components/Filter/Filter';\nimport RadioButton from '../../../../../../components/RadioButton/RadioButton';\nimport {QUEUE_RATE_MODE} from '../../../../../../constants/navigation/tabs/queue';\nimport {\n changeQueuePartitionIndex,\n changeQueuePartitionsColumns,\n changeQueueRateMode,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueTimeWindow,\n} from '../../../../../../store/actions/navigation/tabs/queue/filters';\nimport type {RootState} from '../../../../../../store/reducers';\nimport {\n getQueuePartitionIndex,\n getQueuePartitionsColumns,\n getQueueRateMode,\n getQueueTabletCellHost,\n getQueueTabletCellId,\n getQueueTimeWindow,\n} from '../../../../../../store/selectors/navigation/tabs/queue';\n\nimport './PartitionsExtraControls.scss';\n\nconst block = cn('queue-partitions');\n\ninterface Props extends PropsFromRedux {}\n\nconst rateItems: React.ComponentProps<typeof RadioButton>['items'] = [\n {\n value: QUEUE_RATE_MODE.ROWS,\n text: 'Rows',\n },\n {\n value: QUEUE_RATE_MODE.DATA_WEIGHT,\n text: 'Data weight',\n },\n];\n\nconst PartitionsExtraControls: React.VFC<Props> = ({\n queuePartitionIndex,\n queueTabletCellHost,\n queueTabletCellId,\n queueRateMode,\n queueTimeWindow,\n queuePartitionsColumns,\n changeQueuePartitionIndex,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueRateMode,\n changeQueueTimeWindow,\n changeQueuePartitionsColumns,\n}) => {\n return (\n <>\n <div className={block('divider')} />\n <Filter\n className={block('filter')}\n value={queuePartitionIndex}\n onChange={changeQueuePartitionIndex}\n placeholder=\"Partition index...\"\n />\n <Filter\n className={block('filter')}\n value={queueTabletCellHost}\n onChange={changeQueueTabletCellHost}\n placeholder=\"Tablet cell host...\"\n />\n <Filter\n className={block('filter')}\n value={queueTabletCellId}\n onChange={changeQueueTabletCellId}\n placeholder=\"Tablet cell ID...\"\n />\n <div className={block('divider')} />\n <RadioButton value={queueRateMode} onChange={changeQueueRateMode} items={rateItems} />\n <RadioButton\n value={queueTimeWindow}\n onChange={changeQueueTimeWindow}\n items={timeItems}\n />\n <CompactColumnSelector\n items={queuePartitionsColumns}\n onChange={changeQueuePartitionsColumns}\n />\n </>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n queuePartitionIndex: getQueuePartitionIndex(state),\n queueTabletCellHost: getQueueTabletCellHost(state),\n queueTabletCellId: getQueueTabletCellId(state),\n queueRateMode: getQueueRateMode(state),\n queueTimeWindow: getQueueTimeWindow(state),\n queuePartitionsColumns: getQueuePartitionsColumns(state),\n };\n}\n\nconst mapDispatchToProps = {\n changeQueuePartitionIndex,\n changeQueueTabletCellHost,\n changeQueueTabletCellId,\n changeQueueRateMode,\n changeQueueTimeWindow,\n changeQueuePartitionsColumns,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(PartitionsExtraControls);\n","import React, {ComponentType, useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\n\nimport {Alerts} from '../../../../components/Alerts/Alerts';\nimport ErrorBlock from '../../../../components/Block/Block';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {QUEUE_MODE} from '../../../../constants/navigation/tabs/queue';\nimport {loadQueueStatus} from '../../../../store/actions/navigation/tabs/queue/status';\nimport type {RootState} from '../../../../store/reducers';\nimport {\n getFamily,\n getPartitionCount,\n getQueueMode,\n getQueueStatusDataAlerts,\n getStatusError,\n getWriteDataWeightRate,\n getWriteRowCountRate,\n} from '../../../../store/selectors/navigation/tabs/queue';\n\nimport Meta from './Meta/Meta';\nimport Toolbar from './Toolbar/Toolbar';\nimport QueueMetrics from './views/QueueMetrics/QueueMetrics';\nimport Consumers from './views/Consumers/Consumers';\nimport ConsumersExtraControls from './views/Consumers/ConsumersExtraControls';\nimport Partitions from './views/Partitions/Partitions';\nimport PartitionsExtraControls from './views/Partitions/PartitionsExtraControls';\nimport UIFactory from '../../../../UIFactory';\n\nconst emptyView = {ExtraControls: () => null, View: () => null};\n\nconst views: Record<QUEUE_MODE, {ExtraControls: ComponentType; View: ComponentType}> = {\n [QUEUE_MODE.METRICS]: {ExtraControls: () => null, View: () => null},\n [QUEUE_MODE.PARTITIONS]: {ExtraControls: PartitionsExtraControls, View: Partitions},\n [QUEUE_MODE.CONSUMERS]: {ExtraControls: ConsumersExtraControls, View: Consumers},\n};\n\nfunction useViewByMode(mode: QUEUE_MODE) {\n const component = UIFactory.getComonentForQueueMetrics();\n if (component && mode === QUEUE_MODE.METRICS) {\n return {ExtraControls: () => null, View: QueueMetrics};\n }\n\n return views[mode] || emptyView;\n}\n\nconst Queue: React.VFC<PropsFromRedux> = ({\n loadQueueStatus,\n family,\n partitionCount,\n writeDataWeightRate,\n writeRowCountRate,\n queueMode,\n statusError,\n}) => {\n useEffect(() => {\n loadQueueStatus();\n }, []);\n\n const {ExtraControls, View} = useViewByMode(queueMode);\n\n const items = useSelector(getQueueStatusDataAlerts);\n\n if (statusError) {\n return <ErrorBlock error={statusError} topMargin=\"none\" />;\n }\n\n return (\n <ErrorBoundary>\n <Alerts items={items} />\n <Meta\n family={family}\n partitionCount={partitionCount}\n writeDataWeightRate={writeDataWeightRate}\n writeRowCountRate={writeRowCountRate}\n />\n <WithStickyToolbar toolbar={<Toolbar extras={ExtraControls} />} content={<View />} />\n </ErrorBoundary>\n );\n};\n\nfunction mapStateToProps(state: RootState) {\n return {\n family: getFamily(state),\n partitionCount: getPartitionCount(state),\n writeDataWeightRate: getWriteDataWeightRate(state),\n writeRowCountRate: getWriteRowCountRate(state),\n queueMode: getQueueMode(state),\n statusError: getStatusError(state),\n };\n}\n\nconst mapDispatchToProps = {\n loadQueueStatus,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\ntype PropsFromRedux = ConnectedProps<typeof connector>;\n\nexport default connector(Queue);\n","import type {ThunkAction} from 'redux-thunk';\n\nimport {\n QUEUE_STATUS_LOAD_FAILURE,\n QUEUE_STATUS_LOAD_REQUEST,\n QUEUE_STATUS_LOAD_SUCCESS,\n} from '../../../../../constants/navigation/tabs/queue';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {RootState} from '../../../../../store/reducers';\nimport type {QueueStatusAction} from '../../../../../store/reducers/navigation/tabs/queue/status';\nimport type {YtQueueStatus} from '../../../../../store/reducers/navigation/tabs/queue/types';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {prepareRequest} from '../../../../../utils/navigation';\n\ntype QueueThunkAction = ThunkAction<void, RootState, unknown, QueueStatusAction>;\n\nexport function loadQueueStatus(): QueueThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: QUEUE_STATUS_LOAD_REQUEST});\n return ytApiV3Id\n .get(YTApiId.queueStatus, prepareRequest('/@queue_status', {path, transaction}))\n .then((data: YtQueueStatus) => {\n if (data.error) {\n throw data.error;\n }\n dispatch({\n type: QUEUE_STATUS_LOAD_SUCCESS,\n data,\n });\n })\n .catch((error: Error) => {\n dispatch({\n type: QUEUE_STATUS_LOAD_FAILURE,\n data: error,\n });\n });\n };\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport map_ from 'lodash/map';\nimport slice_ from 'lodash/slice';\n\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {\n GET_LOCKS,\n IS_PARTIAL,\n MAX_TRANSACTIONS_REQUESTS,\n} from '../../../../constants/navigation/tabs/locks';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {splitBatchResults} from '../../../../utils/utils';\n\nconst requests = new CancelHelper();\n\nfunction prepareData(locks, transactions = []) {\n return map_(locks, (lock, index) => {\n const item = {...lock};\n item.transaction = transactions[index] || {};\n item.transaction.id = item.transaction_id;\n item.index = index;\n\n return item;\n });\n}\n\nfunction getTransactions(rowLocks) {\n return (dispatch) => {\n const requests = map_(slice_(rowLocks, 0, MAX_TRANSACTIONS_REQUESTS), (lock) => {\n return {\n command: 'get',\n parameters: {\n path: '//sys/transactions/' + lock.transaction_id + '/@',\n attributes: ['title', 'start_time', 'operation_id'],\n },\n };\n });\n\n return ytApiV3Id\n .executeBatch(YTApiId.navigationTransactions, {requests})\n .then((data) => {\n const {error, results: transactions} = splitBatchResults(\n data,\n 'Failed to get transactions',\n );\n if (error) {\n return Promise.reject(error);\n }\n\n const locks = prepareData(rowLocks, transactions);\n const isPartial = locks.length > MAX_TRANSACTIONS_REQUESTS;\n\n dispatch({\n type: IS_PARTIAL,\n data: {isPartial},\n });\n\n dispatch({\n type: GET_LOCKS.SUCCESS,\n data: {locks},\n });\n })\n .catch((error) => {\n dispatch({\n type: GET_LOCKS.FAILURE,\n data: {error},\n });\n });\n };\n}\n\nexport function getLocks() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_LOCKS.REQUEST});\n requests.removeAllRequests();\n\n ytApiV3Id\n .get(YTApiId.navigationLocks, {\n parameters: prepareRequest('/@locks', {path, transaction}),\n cancellation: requests.saveCancelToken,\n })\n .then((locks) => dispatch(getTransactions(locks)))\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_LOCKS.CANCELLED});\n } else {\n dispatch({\n type: GET_LOCKS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_LOCKS.CANCELLED});\n };\n}\n\nexport function setLocksModeFilter(modeFilter) {\n return {type: GET_LOCKS.PARTITION, data: {modeFilter}};\n}\n","import find_ from 'lodash/find';\n\nimport {rumLogError} from '../rum/rum-counter';\nimport {YT} from '../config/yt-config';\n\nconst {clusters} = YT;\n\nexport function findClusterConfigByOperationId(operationId: string) {\n try {\n const cellTag = Number.parseInt(operationId?.split('-')[2], 16) >> 16; // eslint-disable-line no-bitwise\n return find_(clusters, (clusterConfig) => clusterConfig.primaryMaster?.cellTag === cellTag);\n } catch (error) {\n rumLogError(\n {\n message: 'Cannot find cluster config for operation',\n additional: {\n operationId,\n },\n },\n error as any,\n );\n }\n return null;\n}\n","import filter_ from 'lodash/filter';\n\nimport {createSelector} from 'reselect';\nimport {RootState} from '../../../../store/reducers';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nconst getLocks = (state: RootState) => state.navigation.tabs.locks.locks;\nconst getLocksLoading = (state: RootState) => state.navigation.tabs.locks.loading;\nconst getLocksLoaded = (state: RootState) => state.navigation.tabs.locks.loaded;\nconst getLocksError = (state: RootState) => state.navigation.tabs.locks.error;\nexport const getLocksModeFilter = (state: RootState) => state.navigation.tabs.locks.modeFilter;\n\nexport const getLocksLoadStatus = createSelector(\n [getLocksLoading, getLocksLoaded, getLocksError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n\nexport const getLocksFiltered = createSelector(\n [getLocksModeFilter, getLocks],\n (modeFilter, items) => {\n if (!modeFilter) {\n return items;\n }\n return filter_(items, ({mode}) => mode === modeFilter);\n },\n);\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport unipika from '../../../../common/thor/unipika';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {FormattedLink, FormattedText} from '../../../../components/formatters';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport MetaTable, {TemplateTime} from '../../../../components/MetaTable/MetaTable';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {Loader} from '@gravity-ui/uikit';\nimport Link from '../../../../components/Link/Link';\nimport {Linkify} from '../../../../components/Linkify/Linkify';\n\nimport {MAX_TRANSACTIONS_REQUESTS} from '../../../../constants/navigation/tabs/locks';\nimport {\n abortAndReset,\n getLocks,\n setLocksModeFilter,\n} from '../../../../store/actions/navigation/tabs/locks';\nimport {Page} from '../../../../constants/index';\nimport {findClusterConfigByOperationId} from '../../../../utils/clusters';\n\nimport {\n getLocksFiltered,\n getLocksLoadStatus,\n getLocksModeFilter,\n} from '../../../../store/selectors/navigation/tabs/locks';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\n\nimport Yson from '../../../../components/Yson/Yson';\nimport CustomRadioButton from '../../../../components/RadioButton/RadioButton';\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\n\nimport './Locks.scss';\n\nconst block = cn('navigation-locks');\nconst messageBlock = cn('elements-message');\n\nclass Locks extends Component {\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n isPartial: PropTypes.bool.isRequired,\n locks: PropTypes.arrayOf(\n PropTypes.shape({\n child_key: PropTypes.string,\n id: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n mode: PropTypes.string.isRequired,\n state: PropTypes.string.isRequired,\n transaction_id: PropTypes.string.isRequired,\n transaction: PropTypes.shape({\n id: PropTypes.string.isRequired,\n start_time: PropTypes.string,\n title: PropTypes.string,\n operation_id: PropTypes.string,\n }).isRequired,\n }),\n ).isRequired,\n\n getLocks: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n };\n\n static renderIndex({index}) {\n return <FormattedText text={index + 1} />;\n }\n\n static renderLock(item) {\n return (\n <MetaTable\n qa=\"lock-meta-table\"\n items={[\n {key: 'id', value: item.id, className: block('id')},\n {key: 'mode', value: item.mode},\n {key: 'state', value: item.state},\n {\n key: 'child_key',\n value: item.child_key,\n visible: Boolean(item.child_key),\n },\n {\n key: 'attribute_key',\n value: item.attribute_key,\n visible: Boolean(item.attribute_key),\n },\n ]}\n />\n );\n }\n\n componentDidMount() {\n this.props.getLocks();\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n tableSettings = {\n theme: 'light',\n itemHeight: 100,\n columns: {\n items: {\n index: {\n sort: false,\n caption: '#',\n align: 'center',\n },\n lock: {\n sort: false,\n align: 'left',\n },\n transaction: {\n sort: false,\n align: 'left',\n },\n },\n sets: {\n default: {\n items: ['index', 'lock', 'transaction'],\n },\n },\n mode: 'default',\n },\n computeKey(item) {\n return item.id;\n },\n };\n\n renderTransaction = ({transaction}) => {\n const operationId = transaction.operation_id;\n const {id: clusterId} = findClusterConfigByOperationId(operationId) || {};\n if (operationId && !clusterId) {\n console.error(new Error(`Cannot find cluster by operation id ${operationId}`));\n }\n const operationIdUrl = `/${clusterId}/operations/${operationId}`;\n\n const title = unipika.decode(String(transaction.title));\n\n return (\n <MetaTable\n items={[\n {\n key: 'id',\n value: (\n <FormattedLink\n text={transaction.id}\n state={{\n page: Page.NAVIGATION,\n path: '//sys/transactions/' + transaction.id,\n }}\n />\n ),\n className: block('id'),\n },\n {\n key: 'title',\n value: (\n <Tooltip\n content={<Yson value={transaction.title} />}\n to={['top-center', 'bottom-center']}\n >\n <div className={block('title-tooltip')}>\n <div className={block('title', 'unipika')}>\n <Linkify className={'string'} text={title} />\n </div>\n </div>\n </Tooltip>\n ),\n visible: Boolean(transaction.title),\n },\n {\n key: 'start_time',\n value: (\n <TemplateTime time={transaction.start_time} valueFormat=\"DateTime\" />\n ),\n visible: Boolean(transaction.start_time),\n className: block('start-time'),\n },\n {\n key: 'operation_id',\n value: <Link url={operationIdUrl}>{operationId}</Link>,\n visible: Boolean(operationId) || Boolean(clusterId),\n },\n ]}\n />\n );\n };\n\n get templates() {\n return {\n index: Locks.renderIndex,\n lock: Locks.renderLock,\n transaction: this.renderTransaction,\n };\n }\n\n renderMessage() {\n return (\n <div className={messageBlock({theme: 'info'})}>\n <p className=\"elements-message__paragraph\">\n Transaction information was only loaded for first {MAX_TRANSACTIONS_REQUESTS}{' '}\n locks.\n </p>\n </div>\n );\n }\n\n onModeFilter = (e) => {\n const mode = e.target.value;\n this.props.setLocksModeFilter(mode);\n };\n\n renderModeFilter() {\n const {modeFilter} = this.props;\n return (\n <Toolbar\n className={block('toolbar')}\n itemsToWrap={[\n {\n name: 'buttons',\n node: (\n <CustomRadioButton\n qa=\"locks-type-filter\"\n onChange={this.onModeFilter}\n value={modeFilter}\n items={[\n {\n text: 'All',\n value: '',\n },\n {\n text: 'Exclusive',\n value: 'exclusive',\n },\n {\n text: 'Shared',\n value: 'shared',\n },\n {\n text: 'Snapshot',\n value: 'snapshot',\n },\n ]}\n />\n ),\n },\n ]}\n />\n );\n }\n\n renderContent() {\n const {isPartial, locks} = this.props;\n const toolbar = this.renderModeFilter();\n\n return (\n <WithStickyToolbar\n toolbar={toolbar}\n content={\n <Fragment>\n {isPartial && this.renderMessage()}\n <ElementsTable\n {...this.tableSettings}\n templates={this.templates}\n items={locks}\n css={block()}\n />\n </Fragment>\n }\n />\n );\n }\n\n render() {\n const {loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...this.props}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? <Loader /> : this.renderContent()}\n </div>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, isPartial} = state.navigation.tabs.locks;\n\n return {\n loading,\n loaded,\n error,\n errorData,\n\n modeFilter: getLocksModeFilter(state),\n locks: getLocksFiltered(state),\n isPartial,\n };\n};\nconst mapDispatchToProps = {\n getLocks,\n abortAndReset,\n setLocksModeFilter,\n};\n\nconst LocksConnected = connect(mapStateToProps, mapDispatchToProps)(Locks);\n\nexport default function LocksWithRum() {\n const loadState = useSelector(getLocksLoadStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_LOCKS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_LOCKS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <LocksConnected />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport Icon from '../Icon/Icon';\nimport {Button} from '@gravity-ui/uikit';\n\nimport './ErrorIcon.scss';\nimport {showErrorPopup} from '../../utils/utils';\n\nconst b = cn('yt-error-icon');\n\ninterface Props {\n className?: string;\n error?: any;\n}\n\nexport default function ErrorIcon(props: Props) {\n const {className, error} = props;\n return (\n <span className={b(null, className)}>\n <Button view=\"flat\" size=\"s\" pin=\"circle-circle\" onClick={() => showErrorPopup(error)}>\n <Icon className={b('icon')} awesome=\"exclamation-circle\" />\n </Button>\n </span>\n );\n}\n","import React, {useState} from 'react';\nimport {Text} from '@gravity-ui/uikit';\nimport Button from '../Button/Button';\nimport Icon from '../Icon/Icon';\nimport Modal from '../Modal/Modal';\nimport cn from 'bem-cn-lite';\n\nimport {useMarkdown} from '../Markdown/Markdown';\nimport './MarkdownLinePreview.scss';\n\nconst block = cn('one-line-text-preview');\nconst mdBlock = cn('yt-markdown');\n\ninterface Props {\n text: string;\n title: string;\n className?: string;\n allowHTML?: boolean;\n}\n\nexport function MarkdownLinePreview({text, title, className, allowHTML = false}: Props) {\n const [visible, setVisible] = useState(false);\n\n const showModal = () => {\n setVisible(true);\n };\n\n const hideModal = () => {\n setVisible(false);\n };\n\n const {result} = useMarkdown({text, allowHTML});\n\n const {plainText, html} = React.useMemo(() => {\n const {html} = result ?? {};\n const div = document.createElement('div');\n div.innerHTML = html ?? '';\n const plainText = div.innerText;\n return {html, plainText};\n }, [result]);\n\n return (\n <div className={block(null, className)}>\n <Text className={block('preview-text')} color={'primary'} ellipsis>\n {plainText}\n </Text>\n <Button onClick={showModal} view={'flat-secondary'} size={'m'} width={'auto'}>\n <Icon awesome=\"window-maximize\"></Icon>\n </Button>\n {visible ? (\n <Modal\n visible={visible}\n title={title}\n onOutsideClick={hideModal}\n onCancel={hideModal}\n footer={false}\n content={\n <div\n className={mdBlock(null, 'yfm')}\n dangerouslySetInnerHTML={{__html: html ?? ''}}\n />\n }\n />\n ) : null}\n </div>\n );\n}\n","import React from 'react';\nimport {Popover, Text} from '@gravity-ui/uikit';\nimport Icon from '../../../../../components/Icon/Icon';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport {MarkdownLinePreview} from '../../../../../components/MarkdownLinePreview/MarkdownLinePreview';\nimport cn from 'bem-cn-lite';\n\nimport './ExternalDescription.scss';\n\nconst block = cn('external-description');\n\nexport interface ExternalSchemaDescription {\n name: string;\n type: string;\n glossaryEntity: {\n description: string;\n title: string;\n };\n}\n\ninterface Props {\n type: string;\n data: ExternalSchemaDescription;\n column: keyof ExternalSchemaDescription['glossaryEntity'];\n}\n\nexport function ExternalDescription({type, data, column}: Props) {\n const hasWarning = type !== data.type;\n const {[column]: markdown} = data.glossaryEntity ?? {};\n\n const typeMismatchElement = (\n <>\n <Text color={'warning'}>\n <Icon awesome=\"exclamation-triangle\" face=\"solid\" />\n There might be a type mismatch\n </Text>\n <MetaTable\n className={block('meta')}\n items={[\n {\n key: 'type',\n value: type,\n },\n {\n key: 'external type',\n value: data.type,\n },\n ]}\n />\n </>\n );\n return (\n <div className={block()}>\n {hasWarning ? (\n <Popover\n className={block('warning')}\n content={typeMismatchElement}\n placement={'left'}\n disabled={!hasWarning}\n >\n <Icon className={block('icon')} awesome=\"exclamation-triangle\" face=\"solid\" />\n </Popover>\n ) : null}\n {markdown ? (\n <MarkdownLinePreview\n className={block('preview')}\n text={markdown}\n title={data.name}\n allowHTML={true}\n />\n ) : (\n <Text className={block('preview')} color={'hint'} ellipsis>\n {'no description'}\n </Text>\n )}\n </div>\n );\n}\n","import React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport omit_ from 'lodash/omit';\n\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport {ColumnInfo} from '../../../../components/ElementsTable/ElementsTableHeader';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport HelpLink from '../../../../components/HelpLink/HelpLink';\nimport Link from '../../../../components/Link/Link';\nimport {FormattedText} from '../../../../components/formatters';\nimport Filter from '../../../../components/Filter/Filter';\nimport Icon from '../../../../components/Icon/Icon';\nimport ErrorIcon from '../../../../components/ErrorIcon/ErrorIcon';\nimport SchemaDataType from '../../../../components/SchemaDataType/SchemaDataType';\nimport UIFactory from '../../../../UIFactory';\nimport {\n ExternalDescription,\n ExternalSchemaDescription,\n} from './ExternalDescription/ExternalDescription';\n\nimport {\n getComputedColumns,\n getFilteredSchema,\n getSchema,\n getSchemaMeta,\n} from '../../../../store/selectors/navigation/tabs/schema';\nimport {updateSchemaFilter} from '../../../../store/actions/navigation/tabs/schema';\nimport {getCluster} from '../../../../store/selectors/global';\nimport hammer from '../../../../common/hammer';\n\nimport './Schema.scss';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {getAttributesPath, getLoadState} from '../../../../store/selectors/navigation';\nimport {isFinalLoadingStatus, wrapApiPromiseByToaster} from '../../../../utils/utils';\nimport {docsUrl} from '../../../../config';\nimport {YTError} from '../../../../../@types/types';\nimport {RootState} from '../../../../store/reducers';\nimport {ytApiV3} from '../../../../rum/rum-wrap-api';\n\nconst block = cn('navigation-schema');\nconst elementsBlock = cn('elements-message');\n\nconst COLUMNS_TO_HIDE: Partial<Record<SchemaColumnNames, boolean>> = {\n required: true,\n type: true,\n};\n\nexport type SchemaColumnNames = keyof SchemaItem | 'description' | 'title';\n\nexport type SchemaProps = {\n cluster: string;\n column?: string;\n path: string;\n schema: Array<SchemaItem>;\n filteredSchema?: Array<SchemaItem>;\n meta: Array<SchemaMetaItem>;\n computedColumns: SchemaComputedColumns<SchemaColumnNames>;\n\n updateFilter: (filter: string) => void;\n};\n\ntype SchemaItem = {\n index: number;\n name: string;\n required: boolean;\n type: string;\n type_v3: unknown;\n};\n\ntype SchemaMetaItem = {\n value: 'strong' | boolean;\n key: 'schema_mode' | 'strict' | 'unique_keys' | string;\n};\n\ntype SchemaComputedColumns<ColumnName extends string = string> = {\n items: Partial<Record<ColumnName, ColumnInfo>>;\n set: Array<ColumnName>;\n};\n\ntype SchemaState = {\n externalSchema?: Map<string, ExternalSchemaDescription>;\n externalSchemaUrl?: string;\n externalSchemaError?: YTError;\n};\n\nclass Schema extends Component<SchemaProps> {\n state: SchemaState;\n\n constructor(props: SchemaProps) {\n super(props);\n this.state = {\n externalSchemaUrl: undefined,\n externalSchema: undefined,\n externalSchemaError: undefined,\n };\n }\n\n componentDidMount() {\n this.loadExternalSchemaData();\n }\n\n get templates() {\n return {\n __default__(\n item: SchemaItem,\n column: Exclude<keyof SchemaItem, 'type_v3' | 'name' | 'required'>,\n ) {\n return <FormattedText text={item[column]} />;\n },\n name(item: Record<string, string>, column: string) {\n const {sort_order} = item;\n return (\n <span>\n {Boolean(sort_order) && (\n <Icon\n className={block('sort-icon')}\n awesome={\n sort_order === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n <FormattedText text={item[column]} />\n </span>\n );\n },\n required(item: SchemaItem) {\n const {required} = item;\n return (\n <span>\n {typeof required === 'boolean' ? String(required) : hammer.format.NO_VALUE}\n </span>\n );\n },\n type_v3(item: SchemaItem) {\n const {type_v3} = item;\n return <SchemaDataType type_v3={type_v3} />;\n },\n description: (item: SchemaItem) => {\n return this.renderExternalColumn(item, 'description');\n },\n title: (item: SchemaItem) => {\n return this.renderExternalColumn(item, 'title');\n },\n };\n }\n\n renderExternalColumn(item: SchemaItem, column: 'description' | 'title') {\n const {externalSchema} = this.state;\n const {type, name} = item;\n const data = externalSchema?.get(name);\n return data ? <ExternalDescription type={type} data={data} column={column} /> : null;\n }\n\n get tableSettings() {\n const {externalSchema, externalSchemaUrl, externalSchemaError} = this.state;\n const {items, set} = this.props.computedColumns;\n\n const preparedSet = set.filter((col) => !COLUMNS_TO_HIDE[col]);\n\n const preparedItems = omit_(items, 'type_v2');\n\n if (externalSchema) {\n (['title', 'description'] as const).forEach((column) => {\n const {columns} = UIFactory.externalSchemaDescriptionSetup;\n const caption = columns?.[column] ?? `External ${column}`;\n preparedItems[column] = {\n caption,\n sort: false,\n align: 'left',\n renderHeader: () => (\n <div className={block('description')}>\n <div className={block('table-item')}>{caption}</div>\n {externalSchemaUrl ? (\n <Link className={block('icon')} url={externalSchemaUrl}>\n <Icon awesome=\"external-link\" />\n </Link>\n ) : null}\n {externalSchemaError ? (\n <ErrorIcon className={block('icon')} error={externalSchemaError} />\n ) : null}\n </div>\n ),\n };\n preparedSet.push(column);\n });\n }\n\n return {\n templates: this.templates,\n columns: {\n items: preparedItems,\n sets: {\n default: {\n items: preparedSet,\n },\n },\n mode: 'default',\n },\n virtualType: 'simple',\n theme: 'light',\n striped: false,\n computeKey(item: SchemaItem) {\n return item.name;\n },\n };\n }\n\n async loadExternalSchemaData() {\n const {cluster, path} = this.props;\n const truePath = await wrapApiPromiseByToaster(\n ytApiV3.get({\n parameters: {\n path: `${path}/@path`,\n },\n }),\n {\n skipSuccessToast: true,\n toasterName: 'get_true_path',\n errorTitle: 'Failed to load true path',\n },\n );\n\n try {\n const {url, externalSchema} = await UIFactory.externalSchemaDescriptionSetup.load(\n cluster,\n truePath || path,\n );\n\n this.setState({\n externalSchemaUrl: url,\n externalSchema: externalSchema,\n });\n } catch (err) {\n this.setState({\n externalSchema: new Map(),\n externalSchemaError: err,\n });\n }\n }\n\n renderContent() {\n const {column, filteredSchema, updateFilter} = this.props;\n return (\n <Fragment>\n <Filter\n placeholder=\"Filter by name...\"\n className={block('filter')}\n onChange={updateFilter}\n value={column ?? ''}\n size=\"m\"\n />\n\n <ElementsTable {...this.tableSettings} items={filteredSchema} css={block()} />\n </Fragment>\n );\n }\n\n renderPlaceholder() {\n return (\n <div className={elementsBlock({theme: 'warning'})}>\n <p className={elementsBlock('paragraph')}>Schema is empty.</p>\n </div>\n );\n }\n\n render() {\n const {meta, schema} = this.props;\n\n return (\n <div className={block()}>\n {docsUrl(\n <div className={block('help')}>\n <HelpLink url={UIFactory.docsUrls['storage:static_schema']} />\n </div>,\n )}\n\n <MetaTable items={meta} />\n\n {schema?.length > 0 ? this.renderContent() : this.renderPlaceholder()}\n </div>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {column} = state.navigation.tabs.schema;\n\n const cluster = getCluster(state);\n const path = getAttributesPath(state);\n const schema = getSchema(state);\n const meta = getSchemaMeta(state);\n const filteredSchema = getFilteredSchema(state);\n const computedColumns = getComputedColumns(state);\n\n return {column, meta, schema, filteredSchema, computedColumns, cluster, path};\n};\n\nconst mapDispatchToProps = {\n updateFilter: updateSchemaFilter,\n};\n\nconst SchemaConnected = connect(mapStateToProps, mapDispatchToProps)(Schema);\n\nexport default function SchemaWithRum() {\n const loadState = useSelector(getLoadState);\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_SCHEMA,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_SCHEMA,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n return <SchemaConnected />;\n}\n","import {SCHEMA_UPDATE_FILTER} from '../../../../constants/navigation/tabs/schema';\n\nexport function updateSchemaFilter(column) {\n return {\n type: SCHEMA_UPDATE_FILTER,\n data: {column},\n };\n}\n","import filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\n\nimport ypath from '../../../common/thor/ypath';\nimport hammer from '../../../common/hammer';\nimport {tableItems} from '../../../utils/navigation/tabs/tables';\n\nfunction prepareFlatColumns(columns, flatColumns = {}, prefix) {\n const correctPrefix = prefix ? prefix + '_' : '';\n\n forEach_(columns, (column, columnName) => {\n if (column.group) {\n prepareFlatColumns(column.items, flatColumns, columnName);\n } else {\n const flatColumnName = correctPrefix + columnName;\n flatColumns[flatColumnName] = column;\n }\n });\n\n return flatColumns;\n}\n\nexport function prepareDataForColumns(collection) {\n const preparedColumns = prepareFlatColumns(tableItems);\n\n return map_(collection, (item) => {\n return mapValues_(preparedColumns, (column) => {\n return typeof column.get === 'function' ? column.get(item) : undefined;\n });\n });\n}\n\nexport function prepareAggregation(preparedCollection) {\n let preparedColumns = map_(prepareFlatColumns(tableItems), (column, columnName) => ({\n name: columnName,\n type: column.overall,\n }));\n preparedColumns = filter_(preparedColumns, 'type');\n\n const aggregation = hammer.aggregation.prepare(preparedCollection, preparedColumns)[0];\n aggregation['index'] = 'aggregation';\n\n return aggregation;\n}\n\nexport function getStorePreloadValues(tablet) {\n return {\n completed: Number(ypath.getValue(tablet, '/statistics/preload_completed_store_count')),\n failed: Number(ypath.getValue(tablet, '/statistics/preload_failed_store_count')),\n pending: Number(ypath.getValue(tablet, '/statistics/preload_pending_store_count')),\n };\n}\n","import ypath from '../../../common/thor/ypath';\nimport {getStorePreloadValues} from '../../../utils/navigation/tabs/tablets';\nimport {DESC_ASC_UNORDERED} from '../../sort-helpers';\n\nexport const tableItems = {\n name_tablet_id: {\n caption: 'Node / Tablet id',\n sort(item) {\n return item.name;\n },\n },\n name_cell_id: {\n caption: 'Cell id / Tablet id',\n sort(item) {\n return item.name;\n },\n },\n index: {\n sort: true,\n caption: 'Tablet index',\n align: 'left',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/index'));\n },\n },\n tablet_id: {\n sort: true,\n align: 'left',\n get(tablet) {\n return ypath.getValue(tablet, '/tablet_id');\n },\n },\n cell_leader_address: {\n sort: true,\n align: 'left',\n caption: 'Node',\n get(item) {\n return ypath.getValue(item, '/cell_leader_address');\n },\n },\n state: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getValue(tablet, '/state');\n },\n },\n cell_id: {\n sort: true,\n align: 'left',\n get(tablet) {\n return ypath.getValue(tablet, '/cell_id');\n },\n },\n error_count: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getNumberDeprecated(tablet, '/error_count', NaN);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n overall: 'sum',\n },\n replication_error_count: {\n sort: true,\n align: 'center',\n get(tablet) {\n return ypath.getNumberDeprecated(tablet, '/replication_error_count', NaN);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n overall: 'sum',\n },\n pivot_key: {\n sort: false,\n align: 'left',\n caption: 'Pivot Key',\n get(tablet) {\n return ypath.getValue(tablet, '/pivot_key');\n },\n },\n // Structure\n chunk_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/chunk_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n partition_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/partition_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n store_count: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/store_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n overlapping_store_count: {\n sort: true,\n align: 'right',\n overall: 'max',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/overlapping_store_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n store_preload: {\n align: 'center',\n sort(tablet) {\n const storePreload = getStorePreloadValues(tablet);\n const completed = storePreload.completed;\n const failed = storePreload.failed;\n const pending = storePreload.pending;\n const total = completed + failed + pending;\n\n return [total > 0 ? completed / total : 0, total > 0 ? failed / total : 0, total];\n },\n overall(aggregation, tablet, name) {\n const aggregatedStorePreload = (aggregation[name] = aggregation[name] || {\n completed: 0,\n failed: 0,\n pending: 0,\n });\n const currentStorePreload = tablet[name];\n\n aggregatedStorePreload.completed += currentStorePreload.completed;\n aggregatedStorePreload.failed += currentStorePreload.failed;\n aggregatedStorePreload.pending += currentStorePreload.pending;\n },\n get(tablet) {\n return getStorePreloadValues(tablet);\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n // Data\n unmerged_row_count: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/unmerged_row_count'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n uncompressed_data_size: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/uncompressed_data_size'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n compressed_data_size: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/compressed_data_size'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n disk_space: {\n sort: true,\n align: 'center',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/statistics/disk_space'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n // Performance\n static_chunk: {\n group: true,\n items: {\n read: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/static_chunk_row_read_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n lookup: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(\n tablet,\n '/performance_counters/static_chunk_row_lookup_rate',\n ),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n },\n set: ['read', 'lookup'],\n },\n dynamic: {\n group: true,\n items: {\n read: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_read_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n lookup: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_lookup_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n write: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_write_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n delete: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(\n ypath.getValue(tablet, '/performance_counters/dynamic_row_delete_rate'),\n );\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n },\n set: ['read', 'lookup', 'write', 'delete'],\n },\n unmerged_row_read_rate: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/performance_counters/unmerged_row_read_rate'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n merged_row_read_rate: {\n sort: true,\n align: 'right',\n overall: 'sum',\n get(tablet) {\n return Number(ypath.getValue(tablet, '/performance_counters/merged_row_read_rate'));\n },\n allowedOrderTypes: DESC_ASC_UNORDERED,\n },\n actions: {\n align: 'right',\n caption: '',\n },\n};\n\nexport const histogramItems = {\n unmerged_row_count: {\n format: 'Number',\n },\n uncompressed_data_size: {\n dataName: 'bytes',\n format: 'Bytes',\n },\n compressed_data_size: {\n dataName: 'bytes',\n format: 'Bytes',\n },\n store_count: {\n format: 'Number',\n },\n partition_count: {\n format: 'Number',\n },\n chunk_count: {\n format: 'Number',\n },\n overlapping_store_count: {\n format: 'Number',\n },\n static_chunk_read: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['static_chunk'].items['read'].get(tablet);\n },\n },\n static_chunk_lookup: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['static_chunk'].items['lookup'].get(tablet);\n },\n },\n unmerged_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n },\n merged_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n },\n dynamic_row_read_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['read'].get(tablet);\n },\n },\n dynamic_row_lookup_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['lookup'].get(tablet);\n },\n },\n dynamic_row_write_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['write'].get(tablet);\n },\n },\n dynamic_row_delete_rate: {\n dataName: 'rows/s',\n format: 'Number',\n get(tablet) {\n return tableItems['dynamic'].items['delete'].get(tablet);\n },\n },\n};\n","import mapValues_ from 'lodash/mapValues';\nimport map_ from 'lodash/map';\n\nimport hammer from '../../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {histogramItems, tableItems} from '../../../../utils/navigation/tabs/tables';\nimport {NAVIGATION_TABLETS_TABLE_ID} from '../../../../constants/navigation/tabs/tablets';\nimport {prepareAggregation, prepareDataForColumns} from '../../../../utils/navigation/tabs/tablets';\nimport {calculateLoadingStatus} from '../../../../utils/utils';\n\nexport const getTabletsMode = (state) => state.navigation.tabs.tablets.tabletsMode;\n\nconst getRawTablets = (state) => state.navigation.tabs.tablets.tablets;\n/** @returns { OldSortState } */\nexport const getTabletsSortState = (state) => state.tables[NAVIGATION_TABLETS_TABLE_ID];\nconst getTabletsFilter = (state) => state.navigation.tabs.tablets.tabletsFilter;\nexport const getActiveHistogram = (state) => state.navigation.tabs.tablets.histogramType;\n\nconst getSortedTablets = createSelector(\n [getRawTablets, getTabletsSortState],\n (rawTablets, sortState) => hammer.utils.sort(rawTablets, sortState, tableItems),\n);\n\nconst getFilteredTablets = createSelector(\n [getSortedTablets, getTabletsFilter],\n (sortedTablets, tabletsFilter) =>\n hammer.filter.filter({\n data: sortedTablets,\n input: tabletsFilter,\n factors: [\n function (item) {\n return tableItems['tablet_id'].get(item);\n },\n function (item) {\n return tableItems['cell_id'].get(item);\n },\n function (item) {\n return tableItems['state'].get(item);\n },\n function (item) {\n return tableItems['cell_leader_address'].get(item);\n },\n ],\n }),\n);\n\nexport const getPreparedDataForColumns = createSelector([getFilteredTablets], (items) => {\n /** @type {Array<TabletInfo>} */\n const res = prepareDataForColumns(items);\n return res;\n});\n\nexport const getTablets = createSelector(getPreparedDataForColumns, (filteredTablets) => {\n const aggregation = prepareAggregation(filteredTablets);\n return [aggregation, ...filteredTablets];\n});\n\nconst getHistograms = createSelector(getRawTablets, (tablets) => {\n return mapValues_(histogramItems, (histogramItem, key) => {\n const get = histogramItem.get || tableItems[key].get;\n\n return {\n ...histogramItem,\n data: map_(tablets, get),\n dataFormat: histogramItem.format,\n dataName: histogramItem.dataName || hammer.format['ReadableField'](key, {caps: 'none'}),\n };\n });\n});\n\nexport const getHistogram = createSelector(\n [getHistograms, getActiveHistogram],\n (histograms, activeHistogram) => histograms[activeHistogram],\n);\n\nexport const getNavigationTabletsLoadingStatus = createSelector(\n [\n (state) => state.navigation.tabs.tablets.loading,\n (state) => state.navigation.tabs.tablets.loaded,\n (state) => state.navigation.tabs.tablets.error,\n ],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport max_ from 'lodash/max';\nimport reduce_ from 'lodash/reduce';\nimport toArray_ from 'lodash/toArray';\n\nimport {createSelector} from 'reselect';\nimport {getPreparedDataForColumns, getTabletsMode, getTabletsSortState} from './tablets';\nimport {\n FieldDescr,\n TreeItem,\n TreeNode,\n flattenTree,\n sortTree,\n} from '../../../../common/hammer/tree-list';\nimport {OldSortState, TypedKeys} from '../../../../types';\nimport {RootState} from '../../../reducers';\n\nexport const getTabletsExpandedHosts = (state: RootState): Array<string> =>\n state.navigation.tabs.tablets.expandedHosts;\n\ninterface TabletInfo {\n name: string;\n level?: number;\n tablet_id: string;\n cell_id: string;\n cell_leader_address: string;\n unmerged_row_count: number;\n uncompressed_data_size: number;\n compressed_data_size: number;\n disk_space: number;\n childrenCount?: number;\n}\n\nconst SUM_FIELDS: Array<TypedKeys<TabletInfo, number>> = [\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n];\n\nfunction addHostItem(\n dst: TreeNode<TabletInfo, TabletInfo>,\n item: TabletInfo,\n maxDst: Pick<TabletInfo, TypedKeys<TabletInfo, number>>,\n) {\n dst.children.push({\n name: item.tablet_id,\n parent: dst.name,\n attributes: {\n ...item,\n name: item.tablet_id,\n level: 1,\n },\n leaves: [],\n children: [],\n });\n\n forEach_(SUM_FIELDS, (k) => {\n dst.attributes[k] += item[k];\n\n maxDst[k] = max_([maxDst[k], item[k]])!;\n });\n}\n\nexport const getTabletsMax = createSelector([getPreparedDataForColumns], (items) => {\n const max = {\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n };\n forEach_(items, (item) => {\n forEach_(SUM_FIELDS, (k) => {\n max[k] = max_([max[k], item[k]])!;\n });\n });\n return max;\n});\n\nconst getTabletsByNameRoot = createSelector(\n [getPreparedDataForColumns, getTabletsSortState, getTabletsMode],\n (sortedAndFilteredItems, sortState, mode) => {\n const groupByKey = mode === 'by_host' ? 'cell_leader_address' : 'cell_id';\n\n const maxDst = {\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n };\n const maxHost = {...maxDst};\n const mapByName: Record<string, TreeNode<TabletInfo, TabletInfo>> = {};\n forEach_(sortedAndFilteredItems, (item) => {\n const {[groupByKey]: groupBy, cell_leader_address, cell_id} = item;\n const dst = (mapByName[groupBy] = mapByName[groupBy] || {\n name: groupBy,\n children: [],\n leaves: [],\n attributes: {\n isTopLevel: true,\n name: groupBy,\n cell_leader_address,\n cell_id,\n unmerged_row_count: 0,\n uncompressed_data_size: 0,\n compressed_data_size: 0,\n disk_space: 0,\n level: 0,\n },\n });\n addHostItem(dst, item, maxDst);\n });\n\n const root = {\n name: '',\n children: toArray_(mapByName),\n leaves: [],\n attributes: {} as any,\n };\n\n forEach_(root.children, (item) => {\n item.attributes.childrenCount = item.children.length;\n forEach_(SUM_FIELDS, (k) => {\n maxHost[k] = max_([maxHost[k], item.attributes[k]])!;\n });\n });\n\n sortTreeInPlace(root, sortState);\n return {\n maxByLevel: [maxHost, maxDst] as const,\n root,\n };\n },\n);\n\nexport const getTabletsByName = createSelector(\n [getTabletsByNameRoot, getTabletsExpandedHosts],\n ({root, maxByLevel}, expandedHosts) => {\n const expanded = new Set(expandedHosts);\n const children = map_(root.children, (item) => {\n const {name} = item;\n const isCollapsed = !expanded.has(name);\n return {\n ...item,\n attributes: {\n ...item.attributes,\n isCollapsed,\n },\n children: isCollapsed ? [] : item.children,\n };\n });\n\n return {\n maxByLevel,\n items: map_(flattenTree({...root, children}), 'attributes'),\n };\n },\n);\n\nfunction sortTreeInPlace(root: TreeNode<TabletInfo, TabletInfo>, sortState?: OldSortState) {\n if (!sortState?.field) {\n return;\n }\n\n sortTree(root, sortState, {\n name_tablet_id: {\n get(item) {\n return item.attributes.name;\n },\n },\n name_cell_id: {\n get(item) {\n return item.attributes.name;\n },\n },\n ...reduce_(\n Object.keys(root.children[0]?.attributes! || {}) as Array<keyof TabletInfo>,\n (acc, k) => {\n acc[k] = {\n get(item: TreeItem<TabletInfo, TabletInfo>) {\n return item.attributes[k];\n },\n };\n return acc;\n },\n {} as Record<string, FieldDescr<TabletInfo, TabletInfo>>,\n ),\n });\n}\n","import yt from '@ytsaurus/javascript-wrapper/lib/yt';\nimport CancelHelper from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants/index';\nimport {getPath, getTransaction} from '../../../../store/selectors/navigation';\nimport {\n CHANGE_ACTIVE_HISTOGRAM,\n CHANGE_TABLETS_MODE,\n GET_TABLETS,\n TABLETS_STATE_PARTIAL,\n TOGGLE_HISTOGRAM,\n} from '../../../../constants/navigation/tabs/tablets';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {getTabletsExpandedHosts} from '../../../../store/selectors/navigation/tabs/tablets-ts';\n\nconst requests = new CancelHelper();\n\nexport function loadTablets() {\n return (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch({type: GET_TABLETS.REQUEST});\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationTablets, {\n parameters: prepareRequest('/@tablets', {\n path,\n transaction,\n output_format: TYPED_OUTPUT_FORMAT,\n }),\n cancellation: requests.saveCancelToken,\n })\n .then((tablets) => {\n dispatch({\n type: GET_TABLETS.SUCCESS,\n data: {tablets},\n });\n })\n .catch((error) => {\n if (error.code === yt.codes.CANCELLED) {\n dispatch({type: GET_TABLETS.CANCELLED});\n } else {\n dispatch({\n type: GET_TABLETS.FAILURE,\n data: {error},\n });\n }\n });\n };\n}\n\nexport function changeTabletsFilter(tabletsFilter) {\n return {\n type: TABLETS_STATE_PARTIAL,\n data: {tabletsFilter},\n };\n}\n\nexport function changeTabletsMode(evt) {\n return {\n type: CHANGE_TABLETS_MODE,\n data: {tabletsMode: evt.target.value},\n };\n}\n\nexport function toggleExpandedHost(name) {\n return (dispatch, getState) => {\n const expandedHosts = getTabletsExpandedHosts(getState()).slice();\n const index = expandedHosts.indexOf(name);\n if (index >= 0) {\n expandedHosts.splice(index, 1);\n } else {\n expandedHosts.push(name);\n }\n dispatch({type: TABLETS_STATE_PARTIAL, data: {expandedHosts}});\n };\n}\n\nexport function changeActiveHistogram(histogramType) {\n return {\n type: CHANGE_ACTIVE_HISTOGRAM,\n data: {histogramType},\n };\n}\n\nexport function toggleHistogram() {\n return {\n type: TOGGLE_HISTOGRAM,\n };\n}\n\nexport function abortAndReset() {\n return (dispatch) => {\n requests.removeAllRequests();\n dispatch({type: GET_TABLETS.CANCELLED});\n };\n}\n","import {Sticky, StickyContainer} from 'react-sticky';\nimport React, {Component, Fragment} from 'react';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport ClickableAttributesButton from '../../../../components/AttributesButton/ClickableAttributesButton';\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ElementsTable from '../../../../components/ElementsTable/ElementsTable';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport RadioButton from '../../../../components/RadioButton/RadioButton';\nimport {Loader, Progress} from '@gravity-ui/uikit';\nimport Histogram from '../../../../components/Histogram/Histogram';\nimport Filter from '../../../../components/Filter/Filter';\nimport Label from '../../../../components/Label/Label';\nimport Link from '../../../../components/Link/Link';\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport {getPath, getType} from '../../../../store/selectors/navigation';\n\nimport {\n getActiveHistogram,\n getHistogram,\n getNavigationTabletsLoadingStatus,\n getTablets,\n} from '../../../../store/selectors/navigation/tabs/tablets';\n\nimport {NAVIGATION_TABLETS_TABLE_ID} from '../../../../constants/navigation/tabs/tablets';\nimport {HEADER_HEIGHT, Page} from '../../../../constants/index';\n\nimport {\n abortAndReset,\n changeActiveHistogram,\n changeTabletsFilter,\n changeTabletsMode,\n loadTablets,\n toggleExpandedHost,\n toggleHistogram,\n} from '../../../../store/actions/navigation/tabs/tablets';\n\nimport {histogramItems, tableItems} from '../../../../utils/navigation/tabs/tables';\nimport {asNumber} from '../../../../components/templates/utils';\nimport hammer from '../../../../common/hammer';\nimport ypath from '../../../../common/thor/ypath';\nimport unipika from '../../../../common/thor/unipika';\n\nimport {genTabletCellBundlesCellUrl} from '../../../../utils/tablet_cell_bundles';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {Host} from '../../../../containers/Host/Host';\nimport {\n getTabletsByName,\n getTabletsMax,\n} from '../../../../store/selectors/navigation/tabs/tablets-ts';\nimport {getProgressBarColorByIndex} from '../../../../constants/colors';\n\nimport './Tablets.scss';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../../constants/global';\n\nconst block = cn('navigation-tablets');\n\nclass Tablets extends Component {\n static typedValueProps = PropTypes.shape({\n $type: PropTypes.string.isRequired,\n $value: PropTypes.string.isRequired,\n });\n\n static tabletProps = PropTypes.shape({\n index: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n\n cell_id: PropTypes.string,\n error_count: PropTypes.number,\n last_commit_timestamp: PropTypes.number,\n replication_error_count: PropTypes.number,\n state: PropTypes.string,\n tablet_id: PropTypes.string,\n\n performance_counters: PropTypes.object,\n statistics: PropTypes.object,\n\n pivot_key: PropTypes.arrayOf(Tablets.typedValueProps),\n });\n\n static propTypes = {\n // from connect\n loading: PropTypes.bool.isRequired,\n loaded: PropTypes.bool.isRequired,\n error: PropTypes.bool.isRequired,\n errorData: PropTypes.object.isRequired,\n\n path: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n tabletsMode: PropTypes.string.isRequired,\n tabletsFilter: PropTypes.string.isRequired,\n activeHistogram: PropTypes.string.isRequired,\n histogramCollapsed: PropTypes.bool.isRequired,\n tablets: PropTypes.arrayOf(Tablets.tabletProps).isRequired,\n histogram: PropTypes.shape({\n data: PropTypes.array.isRequired,\n format: PropTypes.string.isRequired,\n dataName: PropTypes.string.isRequired,\n dataFormat: PropTypes.string.isRequired,\n }).isRequired,\n\n loadTablets: PropTypes.func.isRequired,\n abortAndReset: PropTypes.func.isRequired,\n toggleHistogram: PropTypes.func.isRequired,\n changeTabletsMode: PropTypes.func.isRequired,\n changeTabletsFilter: PropTypes.func.isRequired,\n changeActiveHistogram: PropTypes.func.isRequired,\n };\n\n static prepareStorePreloadProgress(storePreload) {\n const completed = storePreload?.completed || 0;\n const failed = storePreload?.failed || 0;\n const pending = storePreload?.pending || 0;\n const total = completed + failed + pending;\n\n return {\n text: hammer.format['Number'](completed) + ' / ' + hammer.format['Number'](total),\n value: total > 0 ? ((failed + completed) / total) * 100 : 0,\n stack: [\n {\n value: total > 0 ? (completed / total) * 100 : 0,\n theme: 'info',\n },\n {\n value: total > 0 ? (failed / total) * 100 : 0,\n theme: 'danger',\n },\n ],\n };\n }\n\n static rowClassName(item) {\n const {level} = item;\n return block('row', {top: level === 0});\n }\n\n static renderName(item) {\n const {name, level, isCollapsed, cell_leader_address} = item;\n const content =\n level === 0 ? (\n <React.Fragment>\n <Button view={'flat-secondary'}>\n <Icon awesome={isCollapsed ? 'angle-down' : 'angle-up'} />\n </Button>{' '}\n {name === cell_leader_address\n ? Tablets.renderHost(item)\n : Tablets.renderCellId(item)}\n </React.Fragment>\n ) : (\n Tablets.renderTabletId(item)\n );\n\n return <div className={block('name', {level})}>{content}</div>;\n }\n\n static isTopLevel(item) {\n const {level, name, cell_leader_address, cell_id} = item;\n return level === 0 && (name === cell_leader_address || name === cell_id);\n }\n\n static renderIndex(item, columnName) {\n if (Tablets.isTopLevel(item) && item.childrenCount) {\n return `(total ${item.childrenCount})`;\n }\n if (Tablets)\n if (item.index === 'aggregation') {\n return hammer.format['ReadableField'](item.index);\n } else {\n return hammer.format['Number'](item[columnName]);\n }\n }\n\n static renderTabletId(item) {\n const id = item.tablet_id;\n const url = `${Page.TABLET}/${id}`;\n\n return Tablets.renderIdWithLink(id, url);\n }\n\n static renderCellId(item) {\n const id = item.cell_id;\n const url = genTabletCellBundlesCellUrl(id);\n\n return Tablets.renderIdWithLink(id, url);\n }\n\n static renderHost(item) {\n const host = item.cell_leader_address;\n return (\n <Host\n asTabletNode\n address={host}\n className={block('host')}\n copyBtnClassName={block('copy-btn')}\n />\n );\n }\n\n static renderIdWithLink(id, url) {\n return id ? (\n <div className={block('id-link')}>\n <Link url={url}>{id}</Link>\n <ClipboardButton className={block('copy-btn')} view={'flat-secondary'} text={id} />\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderState(item, columnName) {\n const state = item[columnName];\n const theme = {\n none: 'default',\n unmounted: 'default',\n mounted: 'info',\n frozen: 'info',\n freezing: 'warning',\n unfreezing: 'warning',\n mounting: 'warning',\n unmounting: 'warning',\n mixed: 'danger',\n }[state];\n\n return typeof state !== 'undefined' ? (\n <Label theme={theme} text={state} />\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderPivotKey(item, columnName) {\n const pivotKey = item[columnName];\n\n const text = unipika.prettyprint(pivotKey, {\n break: false,\n indent: 0,\n asHTML: false,\n });\n const title = text.split(',').join(',\\n');\n\n return typeof pivotKey !== 'undefined' ? (\n <div className=\"elements-column_with-hover-button unipika navigation-tablets__pivot-key\">\n [\n <span title={title} className=\"uint64 elements-ellipsis\">\n {text.slice(1, -1)}\n </span>\n ]\n <ClipboardButton\n text={text}\n view=\"flat-secondary\"\n size=\"s\"\n title=\"Copy Pivot Key\"\n />\n </div>\n ) : (\n hammer.format.NO_VALUE\n );\n }\n\n static renderActions(item) {\n if (item.index === 'aggregation' || Tablets.isTopLevel(item)) {\n return null;\n } else {\n const tablet = ypath.getValue(item, '/tablet_id');\n\n return (\n <ClickableAttributesButton\n title={item.tablet_id}\n path={`//sys/tablets/${tablet}`}\n withTooltip\n />\n );\n }\n }\n\n static renderStorePreload(item, columnName) {\n const storePreload = item[columnName];\n const storePreloadProgress = Tablets.prepareStorePreloadProgress(storePreload);\n\n return <Progress {...storePreloadProgress} />;\n }\n\n componentDidMount() {\n this.props.loadTablets();\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.path !== this.props.path) {\n this.props.loadTablets();\n }\n }\n\n componentWillUnmount() {\n this.props.abortAndReset();\n }\n\n get defaultItems() {\n const {type} = this.props;\n\n const newDefaultItemsForReplicatedTable = [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'state',\n 'cell_id',\n 'error_count',\n 'replication_error_count',\n 'pivot_key',\n 'actions',\n ];\n const newDefaultItemsForTable = [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'state',\n 'cell_id',\n 'error_count',\n 'pivot_key',\n 'actions',\n ];\n\n const newDefaultItems =\n type === 'replicated_table'\n ? newDefaultItemsForReplicatedTable\n : newDefaultItemsForTable;\n\n return newDefaultItems;\n }\n\n get tableSets() {\n return {\n default: {\n items: this.defaultItems,\n },\n data: {\n items: [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n structure: {\n items: [\n 'index',\n 'tablet_id',\n 'cell_leader_address',\n 'chunk_count',\n 'partition_count',\n 'store_count',\n 'overlapping_store_count',\n 'store_preload',\n 'actions',\n ],\n },\n performance: {\n items: [\n 'index',\n 'cell_leader_address',\n 'dynamic',\n 'static_chunk',\n 'unmerged_row_read_rate',\n 'merged_row_read_rate',\n 'actions',\n ],\n },\n by_host: {\n items: [\n 'name_tablet_id',\n 'index',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n by_cell: {\n items: [\n 'name_cell_id',\n 'index',\n 'unmerged_row_count',\n 'uncompressed_data_size',\n 'compressed_data_size',\n 'disk_space',\n 'actions',\n ],\n },\n };\n }\n\n get tableSettings() {\n const {tabletsMode} = this.props;\n\n return {\n css: block(),\n theme: 'light',\n cssHover: true,\n striped: false,\n tableId: NAVIGATION_TABLETS_TABLE_ID,\n columns: {\n items: tableItems,\n sets: this.tableSets,\n mode: tabletsMode,\n },\n templates: {\n name_tablet_id: Tablets.renderName,\n name_cell_id: Tablets.renderName,\n index: Tablets.renderIndex,\n tablet_id: Tablets.renderTabletId,\n cell_id: Tablets.renderCellId,\n cell_leader_address: Tablets.renderHost,\n state: Tablets.renderState,\n pivot_key: Tablets.renderPivotKey,\n actions: Tablets.renderActions,\n store_preload: Tablets.renderStorePreload,\n error_count: asNumber,\n replication_error_count: asNumber,\n chunk_count: asNumber,\n partition_count: asNumber,\n store_count: asNumber,\n overlapping_store_count: asNumber,\n unmerged_row_count: this.renderNumberProgress,\n uncompressed_data_size: this.renderBytesProgress,\n compressed_data_size: this.renderBytesProgress,\n disk_space: this.renderBytesProgress,\n static_chunk_read: asNumber,\n static_chunk_lookup: asNumber,\n dynamic_read: asNumber,\n dynamic_lookup: asNumber,\n dynamic_write: asNumber,\n dynamic_delete: asNumber,\n unmerged_row_read_rate: asNumber,\n merged_row_read_rate: asNumber,\n },\n computeKey(item) {\n return item.name || item.tablet_id;\n },\n itemMods(tablet) {\n return (\n tablet.index === 'aggregation' && {\n aggregation: 'yes',\n }\n );\n },\n };\n }\n\n renderProgress = (item, column, useBytes) => {\n const {maxByLevel = []} = this.props;\n const {level = 0, [column]: value, index} = item;\n if (value === undefined) {\n return hammer.format.NO_VALUE;\n }\n const {[column]: max} = maxByLevel[level] || {};\n if (!max || index === 'aggregation') {\n return asNumber(item, column);\n }\n\n const progress = (value / max) * 100;\n const text = hammer.format[useBytes ? 'Bytes' : 'Number'](value);\n\n if (level === 1) {\n return (\n <Progress\n stack={[\n {\n value: progress,\n color: getProgressBarColorByIndex(3),\n },\n ]}\n text={text}\n />\n );\n }\n\n return <Progress value={progress} text={text} theme={'info'} />;\n };\n\n renderBytesProgress = (item, column) => {\n return this.renderProgress(item, column, true);\n };\n\n renderNumberProgress = (item, column) => {\n return this.renderProgress(item, column, false);\n };\n\n renderOverview() {\n const {tabletsFilter, changeTabletsFilter, tabletsMode, changeTabletsMode} = this.props;\n\n return (\n <Sticky topOffset={-HEADER_HEIGHT}>\n {({isSticky}) => (\n <div className={block('overview', {sticky: isSticky})}>\n <Filter\n size=\"m\"\n value={tabletsFilter}\n onChange={changeTabletsFilter}\n placeholder=\"Filter by Tablet Id/Cell Id/State/Host...\"\n className={block('tablets-filter')}\n />\n\n <RadioButton\n size=\"m\"\n value={tabletsMode}\n onChange={changeTabletsMode}\n name=\"navigation-tablets-mode\"\n items={[\n {\n value: 'default',\n text: 'Default',\n },\n {\n value: 'data',\n text: 'Data',\n },\n {\n value: 'by_host',\n text: 'Data by nodes',\n },\n {\n value: 'by_cell',\n text: 'Data by cells',\n },\n {\n value: 'structure',\n text: 'Structure',\n },\n {\n value: 'performance',\n text: 'Performance',\n },\n ]}\n />\n </div>\n )}\n </Sticky>\n );\n }\n\n renderContent() {\n const {\n tablets,\n histogramCollapsed,\n toggleHistogram,\n histogram,\n activeHistogram,\n changeActiveHistogram,\n collapsibleSize,\n } = this.props;\n\n return (\n <Fragment>\n <CollapsibleSection\n name=\"Histogram\"\n collapsed={histogramCollapsed}\n onToggle={toggleHistogram}\n size={collapsibleSize}\n >\n <Histogram\n activeHistogram={activeHistogram}\n handleHistogramChange={changeActiveHistogram}\n histogramItems={histogramItems}\n histogram={histogram}\n />\n </CollapsibleSection>\n\n <CollapsibleSection name=\"Tablets\" size={collapsibleSize}>\n <StickyContainer>\n {this.renderOverview()}\n\n <ElementsTable\n {...this.tableSettings}\n items={tablets}\n rowClassName={Tablets.rowClassName}\n onItemClick={this.onRowClick}\n />\n </StickyContainer>\n </CollapsibleSection>\n </Fragment>\n );\n }\n\n onRowClick = (item) => {\n const {isTopLevel, name} = item;\n if (isTopLevel) {\n this.props.toggleExpandedHost(name);\n }\n };\n\n render() {\n const {loading, loaded} = this.props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler {...this.props}>\n <ErrorBoundary>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? <Loader /> : this.renderContent()}\n </div>\n </ErrorBoundary>\n </LoadDataHandler>\n );\n }\n}\n\nconst mapStateToProps = (state) => {\n const {loading, loaded, error, errorData, tabletsMode, tabletsFilter, histogramCollapsed} =\n state.navigation.tabs.tablets;\n const path = getPath(state);\n let tablets;\n let maxByLevel = [];\n if (tabletsMode === 'by_host' || tabletsMode === 'by_cell') {\n const data = getTabletsByName(state);\n tablets = data.items;\n maxByLevel = data.maxByLevel;\n } else {\n tablets = getTablets(state);\n maxByLevel = [getTabletsMax(state)];\n }\n\n const histogram = getHistogram(state);\n const activeHistogram = getActiveHistogram(state);\n const type = getType(state);\n\n return {\n loading,\n loaded,\n error,\n errorData,\n path,\n tablets,\n maxByLevel,\n tabletsMode,\n tabletsFilter,\n histogramCollapsed,\n activeHistogram,\n histogram,\n type,\n collapsibleSize: UI_COLLAPSIBLE_SIZE,\n };\n};\n\nconst mapDispatchToProps = {\n loadTablets,\n abortAndReset,\n toggleHistogram,\n changeTabletsMode,\n changeTabletsFilter,\n changeActiveHistogram,\n toggleExpandedHost,\n};\n\nconst TabletsConnected = connect(mapStateToProps, mapDispatchToProps)(Tablets);\n\nexport default function TabletsWithRum() {\n const loadState = useSelector(getNavigationTabletsLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLETS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLETS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TabletsConnected />;\n}\n","import {RootState} from '../../../reducers';\n\nexport const getAttributesTab = (state: RootState) => state.navigation.tabs.attributes.attributes;\n\nexport const getAttributesLoadingInfo = (state: RootState) => ({\n loading: state.navigation.tabs.attributes.loading,\n loaded: state.navigation.tabs.attributes.loaded,\n error: state.navigation.tabs.attributes.error,\n});\n","import {UnknownAction} from 'redux';\nimport {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {prepareRequest} from '../../../../../utils/navigation';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {attributesActions} from '../../../../reducers/navigation/tabs/attributes';\nimport {getPath, getTransaction} from '../../../../../store/selectors/navigation';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../../constants';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function requestAttributes(): AsyncAction<Promise<void>> {\n return async (dispatch, getState) => {\n dispatch(attributesActions.onRequest());\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n const requestParams = {\n path,\n transaction,\n };\n\n try {\n const response = await ytApiV3Id.executeBatch(YTApiId.nodeAttributes, {\n parameters: {\n requests: [\n {\n command: 'get',\n parameters: prepareRequest('/@', {...requestParams}),\n },\n ],\n output_format: TYPED_OUTPUT_FORMAT,\n },\n cancellation: cancelHelper.removeAllAndSave,\n });\n\n const {output, error} = response[0];\n if (error) {\n throw error;\n }\n\n dispatch(attributesActions.onSuccess({attributes: output}));\n } catch (error: any) {\n if (!isCancelled(error)) {\n dispatch(attributesActions.onFailure({error}));\n }\n }\n };\n}\n","import React, {Fragment, useEffect} from 'react';\nimport b from 'bem-cn-lite';\nimport unipika from '../../../../common/thor/unipika';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport Yson from '../../../../components/Yson/Yson';\nimport {YsonDownloadButton} from '../../../../components/DownloadAttributesButton';\nimport ErrorBlock from '../../../../components/Block/Block';\n\nimport {\n getAttributesPath,\n getAttributesWithTypes,\n getLoadState,\n} from '../../../../store/selectors/navigation';\nimport {\n getAttributesLoadingInfo,\n getAttributesTab,\n} from '../../../../store/selectors/navigation/tabs/attributes';\nimport {requestAttributes} from '../../../../store/actions/navigation/tabs/attributes/attributes';\n\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\n\nimport {pathToFileName} from '../../helpers/pathToFileName';\n\nimport './Attributes.scss';\n\nconst block = b('yt-attributes');\n\nfunction Attributes() {\n const dispatch = useDispatch();\n\n const attributes = useSelector(getAttributesTab);\n const attributesPath = useSelector(getAttributesPath);\n const {loading, loaded, error} = useSelector(getAttributesLoadingInfo);\n\n const settings = unipika.prepareSettings();\n\n useEffect(() => {\n dispatch(requestAttributes());\n }, [attributesPath]);\n\n const initialLoading = !loaded && loading;\n\n if (initialLoading) {\n return <Loader className={block({loading: initialLoading})} />;\n }\n\n return (\n <Fragment>\n {error != undefined && <ErrorBlock error={error} />}\n <Yson\n settings={settings}\n value={attributes}\n folding\n extraTools={\n <YsonDownloadButton\n value={attributes}\n settings={settings}\n name={`attributes_${pathToFileName(attributesPath)}`}\n />\n }\n />\n </Fragment>\n );\n}\n\nexport default function AttributesWithRum() {\n const loadState = useSelector(getLoadState);\n const attributes = useSelector(getAttributesWithTypes);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_ATTRIBUTES,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_ATTRIBUTES,\n stopDeps: [loadState, attributes],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <Attributes />;\n}\n","export {TimelinePicker} from './TimelinePicker/TimelinePicker';\n\nexport {convertTimeToRequestParams, formatInterval} from './util';\n\nfunction shortcut(time: string, title?: string) {\n return {time, title: title || time};\n}\n\nexport const TIMELINE_RANGE_PICKER_SHORTCUTS = [\n [shortcut('4h'), shortcut('8h'), shortcut('12h'), shortcut('24h')],\n [shortcut('2d'), shortcut('7d', 'Week'), shortcut('2w', '2 Weeks')],\n [shortcut('1M', 'Month'), shortcut('2M', '2 Months')],\n];\n","import isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\n\nimport {RootState} from '../../../../store/reducers';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getPath} from '../../../../store/selectors/navigation/index';\nimport {convertTimeToRequestParams} from '../../../../components/common/Timeline';\n\nconst getAccessLogFiltersState = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters;\n\nexport const getAccessLogFilterPagination = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.pagination;\n\nexport const getAccessLogFilterPathRegex = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.path_regex;\n\nexport const getAccessLogFilterUserRegex = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.user_regex;\n\nexport const getAccessLogFilterMethod = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.method_group;\n\nexport const getAccessLogFilterUserType = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.user_type;\n\nexport const getAccessLogFilterScope = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.scope;\n\nexport const getAccessLogFilterTime = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.time;\n\nexport const getAccessLogFilterFieldSelector = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.field_selector;\n\nexport const getAccessLogFilterMetadata = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.metadata;\n\nexport const getAccessLogFilterDistinctBy = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLogFilters.distinct_by;\n\nexport const getAccessLogLoading = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.loading;\n\nexport const getAccessLogReady = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.ready;\n\nexport const getAccessLogLoaded = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.loaded;\n\nexport const getAccessLogError = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.error;\n\nexport const getAccessLogItems = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.accesses;\n\nexport const getAccessLogTotalRowCount = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.total_row_count;\n\nexport const getAccessLogAvailableTimeRange = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.availableTimeRange;\n\nexport const getAccessLogPagesCount = createSelector(\n [getAccessLogTotalRowCount, (state) => getAccessLogFilterPagination(state).size],\n (totalRowCount, size) => {\n return Math.ceil(totalRowCount / size);\n },\n);\n\nexport const getAccessLogLastLoadedParams = (state: RootState) =>\n state.navigation.tabs.accessLog.accessLog.params;\n\nfunction skipEmpty<T>(v: T) {\n return isEmpty_(v) ? undefined : v;\n}\n\nexport const getAccessLogRequestParams = createSelector(\n [getCluster, getPath, getAccessLogFiltersState],\n (cluster, path, filters) => {\n const {time, field_selector, method_group, user_type, scope, ...rest} = filters;\n\n const {from, to} = convertTimeToRequestParams(time) || {};\n return {\n ...rest,\n begin: from === undefined ? undefined : from / 1000,\n end: to === undefined ? undefined : to / 1000,\n cluster,\n path,\n field_selector: skipEmpty(field_selector),\n method_group: skipEmpty(method_group),\n user_type: skipEmpty(user_type),\n scope: skipEmpty(scope),\n };\n },\n);\n\nexport const getAccessLogHasChangedFilters = createSelector(\n [getAccessLogLastLoadedParams, getAccessLogRequestParams],\n (lastLoaded, current) => {\n return Boolean(lastLoaded.path) && !isEqual_(lastLoaded, current);\n },\n);\n\nexport const getAccessLogLastLoadedFieldSelector = createSelector(\n [getAccessLogLastLoadedParams],\n (params) => {\n return params.field_selector;\n },\n);\n","import axios from 'axios';\nimport {ThunkAction} from 'redux-thunk';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {\n AccessLogAction,\n AccessLogAvailableTimeRange,\n AccessLogData,\n} from '../../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport {\n ACCESS_LOG_FAILURE,\n ACCESS_LOG_FILTERS,\n ACCESS_LOG_PARTIAL,\n ACCESS_LOG_PATH_CHANGED,\n ACCESS_LOG_REQUEST,\n ACCESS_LOG_RESET_FILTERS,\n ACCESS_LOG_SUCCESS,\n} from '../../../../../constants/navigation/tabs/access-log';\nimport {\n getAccessLogFilterPagination,\n getAccessLogLastLoadedParams,\n getAccessLogRequestParams,\n} from '../../../../../store/selectors/navigation/tabs/access-log';\nimport {\n AccessLogFilterAction,\n AccessLogFiltersState,\n} from '../../../../../store/reducers/navigation/tabs/access-log/access-log-filters';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {getAccessLogBasePath} from '../../../../../config';\nimport {wrapApiPromiseByToaster} from '../../../../../utils/utils';\nimport {getCluster} from '../../../../selectors/global';\n\ntype AccessLogThunkAction<Res = any> = ThunkAction<Res, RootState, any, AccessLogAction>;\ntype AccessLogFiltersThunkAction<Res = any> = ThunkAction<\n Res,\n RootState,\n any,\n AccessLogFilterAction\n>;\n\nexport function resetPaginationIfNeededAndCheckIfPathChanged(): AccessLogFiltersThunkAction<Boolean> {\n return (dispatch, getState) => {\n const state = getState();\n\n const lastLoadedParams = getAccessLogLastLoadedParams(state);\n const params = getAccessLogRequestParams(state);\n\n const result = params.path !== lastLoadedParams.path;\n\n if (result) {\n dispatch({type: ACCESS_LOG_PATH_CHANGED});\n }\n\n return result;\n };\n}\n\nconst accesLogCancelHelper = new CancelHelper();\n\nexport function fetchAccessLog(): AccessLogThunkAction {\n return (dispatch, getState) => {\n const pathChanged = dispatch(resetPaginationIfNeededAndCheckIfPathChanged());\n dispatch({type: ACCESS_LOG_REQUEST, data: pathChanged ? {loaded: false} : {}});\n\n const state = getState();\n const params = getAccessLogRequestParams(state);\n\n dispatch({type: ACCESS_LOG_PARTIAL, data: {params}});\n return Promise.all([\n axios.get(`${getAccessLogBasePath()}/ready`),\n axios\n .request<AccessLogAvailableTimeRange>({\n method: 'POST',\n url: `${getAccessLogBasePath()}/visible-time-range`,\n withCredentials: true,\n data: {cluster: params.cluster},\n cancelToken: accesLogCancelHelper.removeAllAndGenerateNextToken(),\n })\n .catch((e) => {\n console.log(e);\n return {data: {latest: undefined, erliest: undefined}};\n }),\n axios.request<AccessLogData>({\n method: 'POST',\n url: `${getAccessLogBasePath()}/access_log`,\n data: params,\n withCredentials: true,\n cancelToken: accesLogCancelHelper.generateNextToken(),\n }),\n ])\n .then(([{data: ready}, {data: availableTimeRange}, {data}]) => {\n dispatch({\n type: ACCESS_LOG_SUCCESS,\n data: {...data, ready, availableTimeRange, params},\n });\n })\n .catch((e: any) => {\n if (!isCancelled(e)) {\n const error = e?.response?.data || e;\n dispatch({type: ACCESS_LOG_FAILURE, data: {error}});\n }\n });\n };\n}\n\nexport const fetchAccessLogQtId = (): AccessLogThunkAction => async (_, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n const params = getAccessLogRequestParams(state);\n\n const newParams = {...params} as Partial<typeof params>;\n delete newParams.pagination;\n\n const {data} = await wrapApiPromiseByToaster(\n axios.request({\n method: 'POST',\n url: `${getAccessLogBasePath()}/qt_access_log`,\n withCredentials: true,\n data: newParams,\n }),\n {\n toasterName: 'getAccessLogQtId',\n errorTitle: 'Failed to load access log query id',\n skipSuccessToast: true,\n },\n );\n\n window.open(`/${cluster}/queries/${data.query_id}`);\n};\n\nexport function applyAccessLogFilters(): AccessLogFiltersThunkAction {\n return (dispatch) => {\n dispatch(setAccessLogFiltersPage(0));\n };\n}\n\nexport function setAccessLogFilters(\n data: Partial<AccessLogFiltersState>,\n): AccessLogFiltersThunkAction {\n return (dispatch) => {\n dispatch({type: ACCESS_LOG_FILTERS, data});\n };\n}\n\nexport function setAccessLogFiltersPage(index: number): AccessLogFiltersThunkAction {\n return (dispatch, getState) => {\n const {size} = getAccessLogFilterPagination(getState());\n dispatch({type: ACCESS_LOG_FILTERS, data: {pagination: {index, size}}});\n dispatch(fetchAccessLog());\n };\n}\n\nexport function accessLogResetFilters(): AccessLogFiltersThunkAction {\n return (dispatch, getState) => {\n const lastLoadedParams = getAccessLogLastLoadedParams(getState());\n if (!lastLoadedParams.path) {\n // skip for initial loading\n return;\n }\n\n return dispatch({type: ACCESS_LOG_RESET_FILTERS});\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport Yson from '../../../../components/Yson/Yson';\nimport {AccessLogTransactionInfo} from '../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\n\nimport './AccountsLogTransactionInfo.scss';\n\nconst block = cn('accounts-log-transaction-info');\n\ninterface Props {\n data: AccessLogTransactionInfo;\n}\n\nfunction TransactionInfo(props: Props) {\n const {data} = props;\n return (\n <MetaTable\n items={[\n {\n key: 'Id',\n value: <CopyText text={data.transaction_id} />,\n },\n {\n key: 'Title',\n value: <CopyText text={data.transaction_title || ''} />,\n visible: Boolean(data.transaction_title),\n },\n {\n key: 'Operation Id',\n value: <CopyText text={data.operation_id || ''} />,\n visible: Boolean(data.operation_id),\n },\n {\n key: 'Operation title',\n value: <CopyText text={data.operation_title || ''} />,\n visible: Boolean(data.operation_title),\n },\n {\n key: 'Parent',\n value: <Yson value={data.parent} />,\n visible: Boolean(data.parent),\n },\n ]}\n />\n );\n}\n\nfunction CopyText({text, copyText}: {text: string; copyText?: string}) {\n return (\n <div className={block('copy')}>\n <span className={block('copy-text')}>{text}</span>\n <ClipboardButton\n className={block('copy-btn')}\n view=\"flat-secondary\"\n text={copyText ?? text}\n />\n </div>\n );\n}\n\nexport default React.memo(TransactionInfo);\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport compact_ from 'lodash/compact';\n\nimport DataTable, {Column, Settings} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../common/hammer/format';\nimport DataTableYT from '../../../../components/DataTableYT/DataTableYT';\nimport Label from '../../../../components/Label/Label';\nimport Link from '../../../../components/Link/Link';\nimport {Secondary, Warning} from '../../../../components/Text/Text';\nimport {SubjectCard} from '../../../../components/SubjectLink/SubjectLink';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {STICKY_DOUBLE_TOOLBAR_BOTTOM} from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport ColumnHeader from '../../../../components/ColumnHeader/ColumnHeader';\n\nimport {\n getAccessLogFilterPagination,\n getAccessLogItems,\n getAccessLogLastLoadedFieldSelector,\n getAccessLogLoaded,\n getAccessLogLoading,\n getAccessLogPagesCount,\n getAccessLogReady,\n} from '../../../../store/selectors/navigation/tabs/access-log';\nimport {AccessLogItem} from '../../../../store/reducers/navigation/tabs/access-log/access-log';\nimport {getCluster} from '../../../../store/selectors/global';\n\nimport {genNavigationUrl} from '../../../../utils/navigation/navigation';\n\nimport AccountsLogTransactionInfo from './AccountsLogTransactionInfo';\n\nimport './AccessLogTable.scss';\n\nconst block = cn('access-log-table');\n\nconst DateHeaderMemo = React.memo(DateHeader);\n\nconst TABLE_SETTINGS: Settings = {\n displayIndices: false,\n stickyHead: DataTable.MOVING,\n stickyFooter: DataTable.MOVING,\n stickyTop: STICKY_DOUBLE_TOOLBAR_BOTTOM,\n stickyBottom: 0,\n syncHeadOnResize: true,\n sortable: false,\n};\n\nfunction useColumns() {\n const cluster = useSelector(getCluster);\n const fieldSelector = useSelector(getAccessLogLastLoadedFieldSelector);\n const columns: Array<Column<AccessLogItem>> = React.useMemo(() => {\n const res: Array<Column<AccessLogItem>> = compact_([\n {\n name: 'Date',\n render({row}) {\n return <Secondary>{row.instant}</Secondary>;\n },\n header: <DateHeaderMemo />,\n },\n {\n name: 'Method',\n render({row}) {\n return row.method;\n },\n },\n {\n name: 'Path',\n render({row: {path, target_path, original_path}}) {\n if (!path) {\n return (\n <Secondary>\n Path is hidden due to access permission restrictions\n </Secondary>\n );\n }\n return (\n <div className={block('path')}>\n <span className={block('path-link')}>\n <Link\n url={genNavigationUrl({cluster, path})}\n className={block('path-link-link')}\n >\n {path}\n {''}\n </Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n </span>\n {target_path && (\n <PathTag text=\"target\" cluster={cluster} path={target_path} />\n )}\n {original_path && (\n <PathTag text=\"original\" cluster={cluster} path={original_path} />\n )}\n </div>\n );\n },\n },\n {\n name: 'User',\n render({row: {user}}) {\n return <SubjectCard name={user} />;\n },\n },\n {\n name: 'Type',\n render({row: {type}}) {\n return format.ReadableField(type);\n },\n },\n fieldSelector?.scope && {\n name: 'Scope',\n render({row: {scope}}) {\n return format.ReadableField(scope);\n },\n },\n fieldSelector?.user_type && {\n name: 'User type',\n render({row: {user_type}}) {\n return user_type;\n },\n },\n fieldSelector?.method_group && {\n name: 'Method group',\n render({row: {method_group}}) {\n return method_group;\n },\n },\n fieldSelector?.transaction_info && {\n name: 'Tx',\n headerTitle: 'Transaction info',\n render({row: {transaction_info}}) {\n if (!transaction_info) {\n return null;\n }\n return (\n <Tooltip\n placement={'left'}\n content={<AccountsLogTransactionInfo data={transaction_info} />}\n >\n <Label text=\"Tx\" />\n </Tooltip>\n );\n },\n },\n ]);\n return res;\n }, [cluster, fieldSelector]);\n return columns;\n}\n\nfunction AccessLogTable() {\n const items = useSelector(getAccessLogItems);\n const columns = useColumns();\n\n const loading = useSelector(getAccessLogLoading);\n const loaded = useSelector(getAccessLogLoaded);\n\n const ready = useSelector(getAccessLogReady);\n\n return ready ? (\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={loaded ? items : []}\n useThemeYT\n settings={TABLE_SETTINGS}\n />\n ) : (\n <Warning>The service is under maintenance. Please try again later.</Warning>\n );\n}\n\nexport default React.memo(AccessLogTable);\n\nfunction DateHeader() {\n const loading = useSelector(getAccessLogLoading);\n const {index} = useSelector(getAccessLogFilterPagination);\n const pageCount = useSelector(getAccessLogPagesCount);\n\n return <ColumnHeader column=\"Date\" loading={loading} pageIndex={index} pageCount={pageCount} />;\n}\n\nfunction PathTag({\n text,\n path,\n cluster,\n}: {\n text: 'target' | 'original';\n path?: string;\n cluster: string;\n}) {\n const isTarget = text === 'target';\n return path ? (\n <Tooltip\n content={\n <div>\n <Link url={genNavigationUrl({cluster, path})}>{path}</Link>\n <ClipboardButton text={path} view={'flat-secondary'} />\n {isTarget ? (\n <div>\n The Target directs to the node/attribute that has been accessed by the\n link from the Path.\n </div>\n ) : (\n <div>The Path has been accessed by the link from the Original.</div>\n )}\n </div>\n }\n >\n <Label text={text} capitalize />\n </Tooltip>\n ) : null;\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\n\nimport ErrorBlock from '../../../../components/Block/Block';\nimport {getAccessLogError} from '../../../../store/selectors/navigation/tabs/access-log';\n\nfunction AccessLogError() {\n const error = useSelector(getAccessLogError);\n\n return !error ? null : <ErrorBlock error={error} topMargin={'half'} />;\n}\n\nexport default React.memo(AccessLogError);\n","import reduce_ from 'lodash/reduce';\n\nimport type {\n AccessLogFieldSelectorType,\n AccessLogMethodType,\n AccessLogScopeType,\n AccessLogUserType,\n} from '../../../store/reducers/navigation/tabs/access-log/access-log-filters';\n\nexport function valueToSelection<KeyType extends string, V>(value: Record<KeyType, V>) {\n return reduce_(\n value,\n (acc, v, key) => {\n if (v) {\n acc.push(key as KeyType);\n }\n return acc;\n },\n [] as Array<KeyType>,\n );\n}\n\nfunction selectionToValue<KeyType extends string, EmptyValue>(\n selected: Array<KeyType>,\n emptyValue: EmptyValue,\n) {\n if (!selected.length) {\n return emptyValue;\n }\n return reduce_(\n selected,\n (acc, item) => {\n acc[item as KeyType] = true;\n return acc;\n },\n {} as Record<KeyType, boolean>,\n );\n}\n\nexport const ACCESS_LOG_FIELD_SELECTOR_ITEMS: Array<{\n text: string;\n value: AccessLogFieldSelectorType;\n}> = [\n {text: 'Scope', value: 'scope'},\n {text: 'User type', value: 'user_type'},\n {text: 'Method group', value: 'method_group'},\n {text: 'Transaction info', value: 'transaction_info'},\n];\n\nexport function accessLogFieldSelectorSelectionToValue<EmptyValue>(\n selection: Array<AccessLogFieldSelectorType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_METHOD_ITEMS: Array<{text: string; value: AccessLogMethodType}> = [\n {text: 'Read', value: 'read'},\n {text: 'Write', value: 'write'},\n {text: 'Lock', value: 'lock'},\n {text: 'Link', value: 'link'},\n {text: 'Copy/Move', value: 'copy_move'},\n {text: 'Dynamic table commands', value: 'dynamic_table_commands'},\n];\n\nexport function accessLogMethodSelectionToValue<EmptyValue>(\n selection: Array<AccessLogMethodType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_USER_TYPE_ITEMS: Array<{text: string; value: AccessLogUserType}> = [\n {text: 'Human', value: 'human'},\n {text: 'Robot', value: 'robot'},\n {text: 'System', value: 'system'},\n];\n\nexport function accessLogUserTypeSelectionToValue<EmptyValue>(\n selection: Array<AccessLogUserType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n\nexport const ACCESS_LOG_SCOPE_ITEMS: Array<{text: string; value: AccessLogScopeType}> = [\n {text: 'Table', value: 'table'},\n {text: 'Directory', value: 'directory'},\n {text: 'File', value: 'file'},\n {text: 'Document', value: 'document'},\n {text: 'Other', value: 'other'},\n];\n\nexport function accessLogScopeSelectionToValue<EmptyValue>(\n selection: Array<AccessLogScopeType>,\n emptyValue: EmptyValue,\n) {\n return selectionToValue(selection, emptyValue);\n}\n","const SvgAbbrSql = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><g clipPath=\"url(#abbr-sql_svg__a)\"><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M13.5 4.75a.75.75 0 0 0-1.5 0v6.5c0 .414.336.75.75.75h2.5a.75.75 0 0 0 0-1.5H13.5zM11 8c0 1.32-.257 2.314-.709 2.98l.99.99a.75.75 0 1 1-1.061 1.06l-1.132-1.132a2.4 2.4 0 0 1-.713.102C6.8 12 5.75 10.667 5.75 8S6.8 4 8.375 4 11 5.333 11 8m-1.957 2.15c.222-.322.457-.98.457-2.149 0-1.168-.235-1.826-.457-2.149-.175-.254-.366-.35-.668-.35s-.493.096-.668.35c-.222.323-.457.981-.457 2.15 0 1.167.235 1.826.457 2.148.175.254.366.351.668.351s.493-.097.668-.351M2.562 4.002c-.689 0-1.285.249-1.702.713C.453 5.17.277 5.76.277 6.352c0 .732.326 1.28.759 1.658.41.358.908.561 1.305.684.398.122.684.217.89.372.147.113.27.266.27.625 0 .29-.109.469-.253.589a1.08 1.08 0 0 1-.686.222c-.202 0-.438-.093-.658-.293a1.4 1.4 0 0 1-.423-.684.75.75 0 1 0-1.462.333c.127.557.453 1.079.878 1.463.426.386 1.006.681 1.665.681.578 0 1.177-.18 1.647-.57.485-.405.791-1.006.791-1.74 0-.843-.352-1.433-.864-1.82-.434-.33-.962-.492-1.306-.597l-.047-.015c-.31-.095-.579-.221-.76-.38a.65.65 0 0 1-.246-.528c0-.304.09-.512.2-.635.099-.11.27-.215.585-.215.322 0 .498.099.612.206.13.123.233.313.3.56a.75.75 0 1 0 1.449-.386c-.113-.42-.325-.892-.719-1.263-.409-.387-.961-.617-1.642-.617\" clipRule=\"evenodd\" /></g><defs><clipPath id=\"abbr-sql_svg__a\"><path fill=\"currentColor\" d=\"M0 0h16v16H0z\" /></clipPath></defs></svg>;\nexport default SvgAbbrSql;","import React, {FC, useState} from 'react';\nimport {useDispatch} from 'react-redux';\nimport {fetchAccessLogQtId} from '../../../../store/actions/navigation/tabs/access-log/access-log';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport AbbrSqlIcon from '@gravity-ui/icons/svgs/abbr-sql.svg';\n\nexport const AccessLogOpenQtButton: FC = () => {\n const [loading, setLoading] = useState(false);\n const dispatch = useDispatch();\n\n const handleClick = async () => {\n try {\n setLoading(true);\n await dispatch(fetchAccessLogQtId());\n } finally {\n setLoading(false);\n }\n };\n\n return (\n <Button onClick={handleClick} loading={loading}>\n <Icon data={AbbrSqlIcon} size={16} />\n Open in QT\n </Button>\n );\n};\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport cn from 'bem-cn-lite';\n\nimport Button from '../../../../components/Button/Button';\nimport Icon from '../../../../components/Icon/Icon';\n\nimport SimplePagination from '../../../../components/Pagination/SimplePagination';\nimport TextInputWithDebounce from '../../../../components/TextInputWithDebounce/TextInputWithDebounce';\nimport {Toolbar} from '../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport Select from '../../../../components/Select/Select';\n\nimport {\n getAccessLogAvailableTimeRange,\n getAccessLogFilterDistinctBy,\n getAccessLogFilterFieldSelector,\n getAccessLogFilterMetadata,\n getAccessLogFilterMethod,\n getAccessLogFilterPagination,\n getAccessLogFilterPathRegex,\n getAccessLogFilterScope,\n getAccessLogFilterTime,\n getAccessLogFilterUserRegex,\n getAccessLogFilterUserType,\n getAccessLogHasChangedFilters,\n getAccessLogPagesCount,\n} from '../../../../store/selectors/navigation/tabs/access-log';\nimport {\n applyAccessLogFilters,\n setAccessLogFilters,\n setAccessLogFiltersPage,\n} from '../../../../store/actions/navigation/tabs/access-log/access-log';\nimport {\n AccessLogFieldSelectorType,\n AccessLogMethodType,\n AccessLogScopeType,\n AccessLogUserType,\n initialState,\n} from '../../../../store/reducers/navigation/tabs/access-log/access-log-filters';\n\nimport './AccessLogFilters.scss';\nimport {\n TIMELINE_RANGE_PICKER_SHORTCUTS,\n TimelinePicker,\n convertTimeToRequestParams,\n formatInterval,\n} from '../../../../components/common/Timeline';\nimport {EMPTY_OBJECT} from '../../../../constants/empty';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport {\n ACCESS_LOG_FIELD_SELECTOR_ITEMS,\n ACCESS_LOG_METHOD_ITEMS,\n ACCESS_LOG_SCOPE_ITEMS,\n ACCESS_LOG_USER_TYPE_ITEMS,\n accessLogFieldSelectorSelectionToValue,\n accessLogMethodSelectionToValue,\n accessLogScopeSelectionToValue,\n accessLogUserTypeSelectionToValue,\n valueToSelection,\n} from '../../../../utils/navigation/tabs/access-log';\nimport {AccessLogOpenQtButton} from './AccessLogOpenQtButton';\n\nconst block = cn('access-log-filters');\n\nexport default React.memo(AccessLogFilters);\n\nfunction AccessLogFilters() {\n return (\n <React.Fragment>\n <Toolbar\n className={block()}\n itemsToWrap={[\n {node: <AccessLogPagination />},\n {node: <AccessLogTimeline />},\n {node: <AccessLogFieldselector />},\n {node: <AccessLogMetadata />},\n {node: <AccessLogDistictBy />},\n {node: <AccessLogOpenQtButton />},\n ]}\n />\n <Toolbar\n className={block()}\n itemsToWrap={[\n {\n node: <AccessLogPathRegexp />,\n growable: true,\n shrinkable: true,\n wrapperClassName: block('path-regex'),\n },\n {\n node: <AccessLogUserRegexp />,\n wrapperClassName: block('user-regex'),\n },\n {\n node: <AccessLogUserTypeFilter />,\n wrapperClassName: block('user-type'),\n },\n {\n node: <AccessLogScopeFilter />,\n wrapperClassName: block('scope'),\n },\n {\n node: <AccessLogMethod />,\n wrapperClassName: block('method-group'),\n },\n {node: <AccessLogApplyFilters />},\n ]}\n />\n </React.Fragment>\n );\n}\n\nfunction AccessLogApplyFilters() {\n const dispatch = useDispatch();\n const hasChanges = useSelector(getAccessLogHasChangedFilters);\n const handleApply = React.useCallback(() => {\n dispatch(applyAccessLogFilters());\n }, [dispatch]);\n return (\n <Button width=\"max\" disabled={!hasChanges} view=\"action\" onClick={handleApply}>\n Apply\n </Button>\n );\n}\n\nfunction AccessLogPagination() {\n const dispatch = useDispatch();\n\n const {index} = useSelector(getAccessLogFilterPagination);\n const pageCount = useSelector(getAccessLogPagesCount);\n\n const handleChange = React.useCallback(\n (value: number) => {\n dispatch(setAccessLogFiltersPage(value));\n },\n [dispatch],\n );\n\n return (\n <SimplePagination\n value={index}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={handleChange}\n />\n );\n}\n\nfunction AccessLogPathRegexp() {\n const dispatch = useDispatch();\n const filter = useSelector(getAccessLogFilterPathRegex);\n\n const handleChange = React.useCallback(\n (path_regex: string) => {\n dispatch(setAccessLogFilters({path_regex}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'Path regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nfunction AccessLogUserRegexp() {\n const dispatch = useDispatch();\n const filter = useSelector(getAccessLogFilterUserRegex);\n\n const handleChange = React.useCallback(\n (user_regex: string) => {\n dispatch(setAccessLogFilters({user_regex}));\n },\n [dispatch],\n );\n\n return (\n <TextInputWithDebounce\n debounce={500}\n value={filter}\n placeholder={'User regexp...'}\n onUpdate={handleChange}\n />\n );\n}\n\nconst METADATA_ITEMS = [\n {\n text: 'Only attributes',\n value: 'only_attrs',\n },\n {\n text: 'Skip attributes',\n value: 'skip_attrs',\n },\n];\n\nfunction AccessLogMetadata() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterMetadata);\n const handleChange = React.useCallback(\n (v: string) => {\n const metadata = v ? v === 'only_attrs' : undefined;\n\n dispatch(setAccessLogFilters({metadata}));\n },\n [dispatch, value],\n );\n const valueStr = value === undefined ? '' : value ? 'only_attrs' : 'skip_attrs';\n return (\n <Select\n value={valueStr ? [valueStr] : undefined}\n items={METADATA_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n placeholder={'Attributes'}\n />\n );\n}\n\nconst DISTINCT_BY_ITEMS = [{text: 'By User', value: 'user'}];\nfunction AccessLogDistictBy() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterDistinctBy);\n const handleChange = React.useCallback(\n (v: string) => {\n dispatch(setAccessLogFilters({distinct_by: v as 'user'}));\n },\n [dispatch],\n );\n\n return (\n <Select\n value={value ? [value] : undefined}\n items={DISTINCT_BY_ITEMS}\n onUpdate={(vals) => handleChange(vals[0])}\n placeholder={'Distinct'}\n />\n );\n}\n\nfunction AccessLogFieldselector() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterFieldSelector);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const field_selector = accessLogFieldSelectorSelectionToValue(\n items as Array<AccessLogFieldSelectorType>,\n initialState.field_selector,\n );\n dispatch(setAccessLogFilters({field_selector}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n items={ACCESS_LOG_FIELD_SELECTOR_ITEMS}\n value={selected}\n multiple\n onUpdate={handleUpdate}\n placeholder={'Columns'}\n />\n );\n}\n\nfunction AccessLogMethod() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterMethod);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const method_group = accessLogMethodSelectionToValue(\n items as Array<AccessLogMethodType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({method_group}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_METHOD_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'Method group: All'}\n width=\"max\"\n />\n );\n}\n\nfunction AccessLogUserTypeFilter() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterUserType);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const user_type = accessLogUserTypeSelectionToValue(\n items as Array<AccessLogUserType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({user_type}));\n },\n [dispatch, value],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_USER_TYPE_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'User type: All'}\n width=\"max\"\n maxVisibleValues={2}\n />\n );\n}\n\nfunction AccessLogScopeFilter() {\n const dispatch = useDispatch();\n const value = useSelector(getAccessLogFilterScope);\n\n const selected = React.useMemo(() => {\n return valueToSelection(value);\n }, [value]);\n\n const handleUpdate = React.useCallback(\n (items: Array<string>) => {\n const scope = accessLogScopeSelectionToValue(\n items as Array<AccessLogScopeType>,\n EMPTY_OBJECT,\n );\n dispatch(setAccessLogFilters({scope}));\n },\n [dispatch],\n );\n\n return (\n <Select\n multiple\n items={ACCESS_LOG_SCOPE_ITEMS}\n value={selected}\n onUpdate={handleUpdate}\n placeholder={'Scope: All'}\n width=\"max\"\n />\n );\n}\n\nconst TIMELINE_SHOURCUTS = [\n {\n title: '1d',\n time: '1d',\n },\n {\n title: '1w',\n time: '1w',\n },\n {\n title: '1M',\n time: '1M',\n },\n {\n time: 'custom',\n },\n];\n\nfunction AccessLogTimeline() {\n const dispatch = useDispatch();\n const updateTime = React.useCallback(\n (time: {from?: number; to?: number}) => {\n const {from, to} = time;\n dispatch(setAccessLogFilters({time: {from, to}}));\n },\n [dispatch],\n );\n\n const updateShortcut = React.useCallback(\n (shortcutValue: string) => {\n dispatch(setAccessLogFilters({time: {shortcutValue}}));\n },\n [dispatch],\n );\n\n const time = useSelector(getAccessLogFilterTime);\n const now = Date.now();\n const {from = now - 24 * 12 * 1000, to = now} = convertTimeToRequestParams(time) || {};\n\n return (\n <React.Fragment>\n <TimelinePicker\n from={from || 0}\n to={to || 0}\n shortcut={time?.shortcutValue}\n onUpdate={updateTime}\n onShortcut={updateShortcut}\n topShortcuts={TIMELINE_SHOURCUTS}\n shortcuts={TIMELINE_RANGE_PICKER_SHORTCUTS}\n hasDatePicker\n />\n <AvailableTimeRange />\n </React.Fragment>\n );\n}\n\nfunction AvailableTimeRange() {\n const {earliest, latest} = useSelector(getAccessLogAvailableTimeRange);\n const hidden = earliest === undefined || latest === undefined;\n\n return (\n <Tooltip\n className={block('available-range')}\n content={\n <React.Fragment>\n Available range:{' '}\n {hidden\n ? 'Please wait until the range is loaded'\n : formatInterval((earliest ?? 0) * 1000, (latest ?? 0) * 1000)}\n </React.Fragment>\n }\n >\n <Icon awesome=\"question-circle\" />\n </Tooltip>\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport WithStickyToolbar from '../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {\n accessLogResetFilters,\n fetchAccessLog,\n} from '../../../../store/actions/navigation/tabs/access-log/access-log';\n\nimport AccessLogTable from './AccessLogTable';\nimport AccessLogError from './AccessLogError';\nimport AccessLogFilters from './AccessLogFilters';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nfunction AccessLog() {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n\n React.useEffect(() => {\n dispatch(accessLogResetFilters());\n dispatch(fetchAccessLog());\n }, [dispatch, path]);\n\n return (\n <React.Fragment>\n <WithStickyToolbar\n doubleHeight\n toolbar={<AccessLogFilters />}\n content={\n <React.Fragment>\n <AccessLogError />\n <AccessLogTable />\n </React.Fragment>\n }\n />\n </React.Fragment>\n );\n}\n\nexport default React.memo(AccessLog);\n","import React, {useEffect} from 'react';\nimport {ConnectedProps, connect, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport capitalize_ from 'lodash/capitalize';\nimport isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {Loader} from '@gravity-ui/uikit';\nimport Error from '../../../../components/Error/Error';\nimport Link from '../../../../components/Link/Link';\nimport CollapsibleSection from '../../../../components/CollapsibleSection/CollapsibleSection';\nimport {Secondary} from '../../../../components/Text/Text';\n\nimport {getTabletErrors} from '../../../../store/actions/navigation/tabs/tablet-errors/tablet-errors-background';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {\n getTabletErrorsBackgroundCountNoticeVisbile,\n getTabletErrorsLoadingStatus,\n getTabletErrorsReplicationErrors,\n} from '../../../../store/selectors/navigation/tabs/tablet-errors-background';\nimport {getReplicatedTableReplicasMap} from '../../../../store/selectors/navigation/content/replicated-table';\nimport {RootState} from '../../../../store/reducers';\n\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus} from '../../../../utils/utils';\nimport {YTError} from '../../../../types';\n\nimport './TabletErrorsBackground.scss';\n\nconst block = cn('navigation-tablet-errors-background');\n\nfunction TabletErrors(props: ConnectedProps<typeof connector>) {\n const {path, mode, cluster, getTabletErrors} = props;\n useEffect(() => {\n getTabletErrors();\n }, [path, mode]);\n\n const {\n loading,\n loaded,\n tabletErrors: {tablet_errors},\n replicationErrors,\n error,\n } = props;\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler loaded={loaded} error={Boolean(error)} errorData={error}>\n {initialLoading ? (\n <Loader />\n ) : (\n <div className={block({loading: initialLoading})}>\n <TabletErrorsCountNotice />\n <CollapsibleSection name=\"Tablet errors\">\n <TabletErrorsBlock\n cluster={cluster}\n items={tablet_errors}\n sectionClassName={block('section')}\n />\n </CollapsibleSection>\n <CollapsibleSection name=\"Replication errors\">\n <ReplicationErrorsBlock cluster={cluster} data={replicationErrors} />\n </CollapsibleSection>\n </div>\n )}\n </LoadDataHandler>\n );\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {loading, loaded, error, tabletErrors} = state.navigation.tabs.tabletErrorsBackground;\n const path = getPath(state);\n const mode = getEffectiveMode(state);\n const cluster = getCluster(state);\n\n return {\n loading,\n loaded,\n error,\n\n path,\n mode,\n tabletErrors,\n cluster,\n replicationErrors: getTabletErrorsReplicationErrors(state),\n };\n};\n\nconst mapDispatchToProps = {\n getTabletErrors,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nconst TabletErrorsConnected = connector(TabletErrors);\n\nexport default function TabletErrorsWithRum() {\n const loadState = useSelector(getTabletErrorsLoadingStatus);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLET_ERRORS,\n startDeps: [loadState],\n allowStart: ([loadState]) => {\n return !isFinalLoadingStatus(loadState);\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_TABLET_ERRORS,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <TabletErrorsConnected />;\n}\n\ninterface ReplicationErrorsBlockProps {\n cluster: string;\n data: ReturnType<typeof getTabletErrorsReplicationErrors>;\n}\n\nfunction ReplicationErrorsBlock({data, cluster}: ReplicationErrorsBlockProps) {\n let counter = 0;\n return (\n <React.Fragment>\n {map_(data, (items, replicaId) => {\n return (\n <CollapsibleSection\n key={replicaId}\n name={<ReplicaErrorHeader id={replicaId} />}\n className={block('group', block('section'))}\n collapsed={0 < counter++}\n >\n <TabletErrorsBlock cluster={cluster} items={items} />\n </CollapsibleSection>\n );\n })}\n </React.Fragment>\n );\n}\n\nfunction TabletErrorsCountNotice() {\n const visible = useSelector(getTabletErrorsBackgroundCountNoticeVisbile);\n if (!visible) {\n return null;\n }\n return (\n <div className={block('count-notice')}>\n Only limited number of errors is displayed. See Tablets tab for the complete list.\n </div>\n );\n}\n\nfunction TabletErrorsHeader({id, cluster}: {id: string; cluster: string}) {\n return (\n <React.Fragment>\n Errors of tablet <Link url={`/${cluster}/tablet/${id}`}>{id}</Link>\n </React.Fragment>\n );\n}\n\nfunction ReplicaErrorHeader({id}: {id: string}) {\n const data = useSelector(getReplicatedTableReplicasMap);\n const {[id]: attrs} = data;\n\n if (!attrs) return null;\n const {cluster_name: cluster, mode, replica_path: path} = attrs;\n\n const link =\n cluster && path ? <Link url={`/${cluster}/navigation?path=${path}`}>{path}</Link> : id;\n\n return (\n <React.Fragment>\n {id}{' '}\n <Secondary>\n ({mode ? `${mode} replica to ` : 'Replica to '}\n {capitalize_(cluster)}, table path {link})\n </Secondary>\n </React.Fragment>\n );\n}\n\ninterface Props {\n cluster: string;\n items?: Record<string, Array<YTError>>;\n sectionClassName?: string;\n}\n\nfunction TabletErrorsBlock({items, cluster, sectionClassName}: Props) {\n if (isEmpty_(items)) {\n return null;\n }\n\n let counter = 0;\n return (\n <div className={block('items')}>\n {map_(items, (errors, id) => {\n return (\n <CollapsibleSection\n key={id}\n className={block('group', sectionClassName)}\n size=\"s\"\n name={<TabletErrorsHeader {...{id, cluster}} />}\n collapsed={0 < counter++}\n >\n {map_(errors, (error, index) => {\n return (\n <Error\n key={index}\n className={block('error')}\n topMargin=\"none\"\n error={error}\n disableLogger={true}\n />\n );\n })}\n </CollapsibleSection>\n );\n })}\n </div>\n );\n}\n","import {ROWS_PER_PAGE} from '../../../../constants/pagination';\nimport {RootState} from '../../../../store/reducers/index.main';\n\nexport const getTabletErrorsByPathError = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.error;\n\nexport const getTabletErrorsByPathLoading = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.loading;\n\nexport const getTabletErrorsByPathLoaded = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.loaded;\n\nexport const getTabletErrorsByPathData = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.data;\n\nexport const getTabletErrorsByPathDataParams = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.dataParams;\n\nexport const getTabletErrorsByPathAllMethods = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.data?.all_methods;\n\nexport const getTabletErrorsByPathPageCount = (state: RootState) => {\n return Math.ceil(\n (state.navigation.tabs.tabletErrorsByPath.total_row_count ?? 0) / ROWS_PER_PAGE,\n );\n};\n\n// Filters\n\nexport const getTabletErrorsByPathTimeRange = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.timeRangeFilter;\n\nexport const getTabletErrorsByPathMethodsFilter = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.methodsFilter;\n\nexport const getTabletErrorsByPathPageFilter = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.pageFilter;\n\nexport const getTabletErrorsByPathTabletIdFilter = (state: RootState) =>\n state.navigation.tabs.tabletErrorsByPath.tabletIdFilter;\n","import {ThunkAction} from 'redux-thunk';\nimport isEqual_ from 'lodash/isEqual';\nimport omit_ from 'lodash/omit';\n\nimport {RootState} from '../../../../../store/reducers';\nimport {\n TabletErrorsApi,\n fetchFromTabletErrorsApi,\n} from '../../../../../../shared/tablet-errors-manager';\nimport {ROWS_PER_PAGE} from '../../../../../constants/pagination';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport {tabletErrorsByPathActions} from '../../../../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport CancelHelper, {isCancelled} from '../../../../../utils/cancel-helper';\nimport {\n getTabletErrorsByPathData,\n getTabletErrorsByPathDataParams,\n} from '../../../../../store/selectors/navigation/tabs/tablet-errors-by-path';\n\ntype AsyncAction<T = Promise<void>> = ThunkAction<T, RootState, unknown, any>;\n\nconst cancelHelper = new CancelHelper();\n\ntype ApiMethod = TabletErrorsApi['tablet_errors_by_table'];\n\nexport function loadTabletErrorsByTablePath(\n page: number,\n params: Pick<\n ApiMethod['body'],\n | 'table_path'\n | 'table_id'\n | 'start_timestamp'\n | 'end_timestamp'\n | 'methods'\n | 'tablet_id'\n | 'fixed_end_timestamp'\n >,\n): AsyncAction {\n return (dispatch, getState) => {\n dispatch(\n tabletErrorsByPathActions.onRequest({\n table_path: params.table_path,\n table_id: params.table_id,\n }),\n );\n\n const state = getState();\n const cluster = getCluster(state);\n\n const prevDataParams = getTabletErrorsByPathDataParams(state);\n if (\n page != 0 &&\n !isEqual_(\n omit_(prevDataParams, ['fixed_end_timestamp']),\n omit_(params, ['fixed_end_timestamp']),\n )\n ) {\n page = 0;\n dispatch(tabletErrorsByPathActions.updateFilter({pageFilter: page}));\n return Promise.resolve();\n }\n\n const prevData = getTabletErrorsByPathData(state);\n if (page != 0 && prevData) {\n params.fixed_end_timestamp = prevData.fixed_end_timestamp;\n }\n\n return fetchFromTabletErrorsApi(\n 'tablet_errors_by_table',\n cluster,\n {...params, offset: page * ROWS_PER_PAGE, count_limit: 100},\n cancelHelper.removeAllAndGenerateNextToken(),\n )\n .then(({data}) => {\n const payload =\n page === 0\n ? {data, dataParams: params, total_row_count: data.total_row_count}\n : {data, dataParams: params};\n\n dispatch(tabletErrorsByPathActions.onSuccess(payload));\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch(tabletErrorsByPathActions.onError({error}));\n }\n });\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport moment from 'moment';\nimport cn from 'bem-cn-lite';\n\nimport {Flex, Link, Text} from '@gravity-ui/uikit';\n\nimport {\n getTabletErrorsByPathData,\n getTabletErrorsByPathError,\n getTabletErrorsByPathLoaded,\n getTabletErrorsByPathLoading,\n getTabletErrorsByPathPageCount,\n getTabletErrorsByPathPageFilter,\n} from '../../../../../store/selectors/navigation/tabs/tablet-errors-by-path';\nimport {getCluster} from '../../../../../store/selectors/global';\nimport ColumnHeader from '../../../../../components/ColumnHeader/ColumnHeader';\nimport DataTableYT, {\n Column,\n DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT,\n} from '../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport {Host} from '../../../../../containers/Host/Host';\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\n\nconst block = cn('yt-tablet-errors-by-path-table');\n\nexport function TabletErrorsByPathTable({className}: {className?: string}) {\n const {columns, data, loading, loaded} = useTableColumnsAndData();\n const error = useSelector(getTabletErrorsByPathError);\n return (\n <div className={className}>\n {Boolean(error) && <ErrorBlock error={error} />}\n <DataTableYT\n loading={loading}\n loaded={loaded}\n columns={columns}\n data={data}\n settings={DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT}\n useThemeYT\n />\n </div>\n );\n}\n\ntype RowType = Exclude<ReturnType<typeof getTabletErrorsByPathData>, undefined>['errors'][number];\n\nfunction useTableColumnsAndData() {\n const cluster = useSelector(getCluster);\n const loading = useSelector(getTabletErrorsByPathLoading);\n const loaded = useSelector(getTabletErrorsByPathLoaded);\n const page = useSelector(getTabletErrorsByPathPageFilter);\n const pageCount = useSelector(getTabletErrorsByPathPageCount);\n\n const {errors = []} = useSelector(getTabletErrorsByPathData) ?? {};\n const columns = React.useMemo(() => {\n const res: Array<Column<RowType>> = [\n {\n name: 'tablet_id',\n header: (\n <ColumnHeader\n column=\"Tablet Id\"\n loading={loading}\n pageIndex={page}\n pageCount={pageCount}\n />\n ),\n render({row: {tablet_id}}) {\n return (\n <Flex className=\"elements-monospace\" alignItems=\"center\">\n <Text ellipsis variant=\"inherit\">\n <Link href={`/${cluster}/tablet/${tablet_id}`}>{tablet_id}</Link>\n </Text>\n <ClipboardButton text={tablet_id} view=\"flat-secondary\" inlineMargins />\n </Flex>\n );\n },\n },\n {\n name: 'method',\n header: <ColumnHeader column=\"Method\" />,\n render({row: {method}}) {\n return method;\n },\n },\n {\n name: 'host',\n header: <ColumnHeader column=\"Host\" />,\n render({row: {host}}) {\n return <Host address={host} asTabletNode inlineMargins />;\n },\n },\n {\n name: 'date',\n header: <ColumnHeader column=\"Date\" />,\n render({row: {timestamp}}) {\n return moment(timestamp * 1000).format('YYYY-MM-DD HH:mm:ss');\n },\n },\n {\n name: 'error_message',\n header: <ColumnHeader column=\"Error message\" />,\n className: block('cell-error-msg'),\n render({row: {error}}) {\n return error.message;\n },\n },\n {\n name: 'actions',\n header: null,\n render({row: {error}}) {\n return (\n <ClickableAttributesButton\n title=\"Details\"\n attributes={error}\n inlineMargins\n />\n );\n },\n },\n ];\n return res;\n }, [cluster, page, pageCount, loading]);\n return {data: errors, columns, loading, loaded};\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport SimplePagination from '../../../../../components/Pagination/SimplePagination';\nimport Select from '../../../../../components/Select/Select';\nimport {YTTimeline, calcFromTo} from '../../../../../components/common/YTTimeline';\nimport WithStickyToolbar from '../../../../../components/WithStickyToolbar/WithStickyToolbar';\nimport {Toolbar} from '../../../../../components/WithStickyToolbar/Toolbar/Toolbar';\nimport TextInputWithDebounce from '../../../../../components/TextInputWithDebounce/TextInputWithDebounce';\n\nimport {docsUrl} from '../../../../../config';\n\nimport {getPath} from '../../../../../store/selectors/navigation';\nimport {\n getTabletErrorsByPathAllMethods,\n getTabletErrorsByPathMethodsFilter,\n getTabletErrorsByPathPageCount,\n getTabletErrorsByPathPageFilter,\n getTabletErrorsByPathTabletIdFilter,\n getTabletErrorsByPathTimeRange,\n} from '../../../../../store/selectors/navigation/tabs/tablet-errors-by-path';\nimport {tabletErrorsByPathActions} from '../../../../../store/reducers/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {loadTabletErrorsByTablePath} from '../../../../../store/actions/navigation/tabs/tablet-errors/tablet-errors-by-path';\nimport {getNavigationPathAttributes} from '../../../../../store/selectors/navigation/navigation';\nimport UIFactory from '../../../../../UIFactory';\n\nimport {TabletErrorsByPathTable} from './TabletErrorsByPathTable';\n\nimport './TabletErrorsByPath.scss';\n\nconst block = cn('yt-tablet-errors-by-path');\n\nexport function TabletErrorsRequest() {\n return (\n <WithStickyToolbar\n className={block()}\n doubleHeight\n toolbar={<TabletErrorsRequestToolbar className={block('toolbar')} />}\n content={<TabletErrorsByPathTable className={block('content')} />}\n />\n );\n}\n\nexport function TabletErrorsRequestToolbar({className}: {className: string}) {\n const dispatch = useDispatch();\n const {\n timeRange: {from, to, shortcutValue},\n tabletIdFilter,\n pageFilter,\n methodsFilter,\n } = useTabletErrorFromApiLoad();\n const pageCount = useSelector(getTabletErrorsByPathPageCount);\n\n const allMethods = useSelector(getTabletErrorsByPathAllMethods) ?? [];\n\n return (\n <div className={className}>\n <YTTimeline\n from={from!}\n to={to!}\n shortcut={shortcutValue}\n onUpdate={({from, to, shortcutValue}) => {\n dispatch(\n tabletErrorsByPathActions.updateFilter({\n timeRangeFilter: {from, to, shortcutValue},\n }),\n );\n }}\n hasRuler={true}\n />\n <Toolbar\n itemsToWrap={[\n {\n node: (\n <SimplePagination\n value={pageFilter}\n min={0}\n max={Math.max(0, pageCount - 1)}\n onChange={(pageFilter) => {\n dispatch(tabletErrorsByPathActions.updateFilter({pageFilter}));\n }}\n />\n ),\n },\n {\n node: (\n <TextInputWithDebounce\n className={block('tablet-id-filter')}\n value={tabletIdFilter}\n onUpdate={(value) => {\n dispatch(\n tabletErrorsByPathActions.updateFilter({\n tabletIdFilter: value,\n }),\n );\n }}\n placeholder=\"Tablet Id filter...\"\n />\n ),\n },\n {\n node: (\n <Select\n multiple\n label=\"Methods:\"\n value={methodsFilter}\n items={allMethods?.map((value) => {\n return {value, text: value};\n })}\n onUpdate={(v) =>\n dispatch(\n tabletErrorsByPathActions.updateFilter({\n methodsFilter: v,\n }),\n )\n }\n placeholder=\"Select...\"\n hasClear\n maxVisibleValuesTextLength={80}\n />\n ),\n },\n {\n node: docsUrl(\n <HelpLink url={UIFactory.docsUrls['bundles:tablet-errors']} />,\n ),\n },\n ]}\n />\n </div>\n );\n}\n\nfunction useTabletErrorFromApiLoad() {\n const path = useSelector(getPath);\n const timeRange = useSelector(getTabletErrorsByPathTimeRange);\n const methodsFilter = useSelector(getTabletErrorsByPathMethodsFilter);\n const pageFilter = useSelector(getTabletErrorsByPathPageFilter);\n const {id} = useSelector(getNavigationPathAttributes) ?? {};\n const tabletIdFilter = useSelector(getTabletErrorsByPathTabletIdFilter);\n\n const dispatch = useDispatch();\n\n React.useEffect(() => {\n if (!path || !id) {\n return;\n }\n\n if (timeRange.from === undefined || timeRange.to === undefined) {\n const {from, to} = calcFromTo(timeRange);\n dispatch(\n tabletErrorsByPathActions.updateFilter({timeRangeFilter: {...timeRange, from, to}}),\n );\n } else {\n dispatch(\n loadTabletErrorsByTablePath(pageFilter, {\n table_id: id,\n table_path: path,\n start_timestamp: Math.floor(timeRange.from / 1000),\n end_timestamp: Math.ceil(timeRange.to / 1000),\n methods: methodsFilter.length ? methodsFilter : undefined,\n ...(tabletIdFilter ? {tablet_id: tabletIdFilter} : {}),\n }),\n );\n }\n }, [path, id, timeRange, methodsFilter, pageFilter, tabletIdFilter, dispatch]);\n return {timeRange, methodsFilter, tabletIdFilter, pageFilter};\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\n\nimport {RadioButton} from '@gravity-ui/uikit';\n\nimport {getConfigData} from '../../../../config/ui-settings';\nimport {updateTabletErrorsViewMode} from '../../../../store/actions/navigation/tabs/tablet-errors/tablet-errors-background';\nimport {\n getTabletErrorsBackgroundCount,\n getTabletErrorsViewMode,\n} from '../../../../store/selectors/navigation/tabs/tablet-errors-background';\n\nimport TabletErrorsBackground from './TabletErrorsBackground';\nimport {TabletErrorsRequest} from './TabletErrorsByPath/TabletErrorsByPath';\n\nexport default function TabletErrors() {\n const dispatch = useDispatch();\n\n const viewMode = useSelector(getTabletErrorsViewMode);\n const backgroundErrorCount = useSelector(getTabletErrorsBackgroundCount);\n\n const allowTabletErrorsAPI = getConfigData().allowTabletErrorsAPI;\n\n const content =\n viewMode === 'request_errors' ? <TabletErrorsRequest /> : <TabletErrorsBackground />;\n\n return (\n <div>\n {allowTabletErrorsAPI && (\n <RadioButton<typeof viewMode>\n value={viewMode}\n onUpdate={(v) => dispatch(updateTabletErrorsViewMode(v))}\n options={[\n {value: 'request_errors', content: 'Request errors'},\n {\n value: 'background_errors',\n content: `Background errors ${backgroundErrorCount}`,\n },\n ]}\n />\n )}\n {content}\n </div>\n );\n}\n","import {ThunkAction} from 'redux-thunk';\nimport {UnknownAction} from '@reduxjs/toolkit';\n\nimport CancelHelper, {isCancelled} from '../../../../utils/cancel-helper';\nimport {prepareRequest} from '../../../../utils/navigation';\nimport {getPath, getTransaction} from '../../../selectors/navigation';\nimport {YTApiId, ytApiV3Id} from '../../../../rum/rum-wrap-api';\nimport {RootState} from '../../../../store/reducers';\nimport {userAttributesActions} from '../../../../store/reducers/navigation/tabs/user-attributes';\nimport {TYPED_OUTPUT_FORMAT} from '../../../../constants';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, UnknownAction>;\n\nconst requests = new CancelHelper();\n\nexport function requestUserAttributes(): AsyncAction<Promise<void>> {\n return async (dispatch, getState) => {\n const state = getState();\n const path = getPath(state);\n const transaction = getTransaction(state);\n\n dispatch(userAttributesActions.onRequest());\n requests.removeAllRequests();\n\n return ytApiV3Id\n .get(YTApiId.navigationUserAttributes, {\n parameters: prepareRequest('/@user_attributes', {\n path,\n transaction,\n }),\n output_format: TYPED_OUTPUT_FORMAT,\n cancellation: requests.saveCancelToken,\n })\n .then((attributes) => {\n dispatch(userAttributesActions.onSuccess({attributes}));\n })\n .catch((error) => {\n if (!isCancelled(error)) {\n dispatch(userAttributesActions.onFailure({error}));\n }\n });\n };\n}\n\nexport function abortAndReset(): AsyncAction<Promise<void>> {\n return async (_dispatch) => {\n requests.removeAllRequests();\n };\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getUserAttributes = (state: RootState) =>\n state.navigation.tabs.userAttributes.attributes;\nexport const getUserAttributesLoadInfo = (state: RootState) => ({\n loading: state.navigation.tabs.userAttributes.loading,\n loaded: state.navigation.tabs.userAttributes.loaded,\n error: state.navigation.tabs.userAttributes.error,\n});\n","import React, {useEffect} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport unipika from '../../../../common/thor/unipika';\nimport cn from 'bem-cn-lite';\nimport {Loader} from '@gravity-ui/uikit';\n\nimport LoadDataHandler from '../../../../components/LoadDataHandler/LoadDataHandler';\nimport {YsonDownloadButton} from '../../../../components/DownloadAttributesButton';\nimport Yson from '../../../../components/Yson/Yson';\n\nimport {\n abortAndReset,\n requestUserAttributes,\n} from '../../../../store/actions/navigation/tabs/user-attributes';\nimport {\n getUserAttributes,\n getUserAttributesLoadInfo,\n} from '../../../../store/selectors/navigation/tabs/user-attributes';\nimport {getPath} from '../../../../store/selectors/navigation';\nimport {getEffectiveMode} from '../../../../store/selectors/navigation/navigation';\n\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\n\nimport {calculateLoadingStatus, isFinalLoadingStatus} from '../../../../utils/utils';\nimport {pathToFileName} from '../../helpers/pathToFileName';\n\nimport './UserAttributes.scss';\n\nconst block = cn('navigation-user-attributes');\n\nfunction UserAttributes() {\n const dispatch = useDispatch();\n const {loading, loaded, error} = useSelector(getUserAttributesLoadInfo);\n const path = useSelector(getPath);\n const mode = useSelector(getEffectiveMode);\n const userAttributes = useSelector(getUserAttributes);\n const settings = unipika.prepareSettings();\n\n useEffect(() => {\n dispatch(requestUserAttributes());\n return () => {\n dispatch(abortAndReset);\n };\n }, [path, mode]);\n\n const initialLoading = loading && !loaded;\n\n return (\n <LoadDataHandler loaded error={Boolean(error)}>\n <div className={block({loading: initialLoading})}>\n {initialLoading ? (\n <Loader />\n ) : (\n <Yson\n value={userAttributes}\n settings={settings}\n extraTools={\n <YsonDownloadButton\n value={userAttributes}\n settings={settings}\n name={`user_attributes_${pathToFileName(path)}`}\n />\n }\n folding\n />\n )}\n </div>\n </LoadDataHandler>\n );\n}\n\nexport default function UserAttributesWithRum() {\n const {loaded, loading, error} = useSelector(getUserAttributesLoadInfo);\n const loadState = calculateLoadingStatus(Boolean(loading), Boolean(loaded), error);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_TAB_USER_ATTRIBUTES,\n startDeps: [loading],\n allowStart: ([loading]) => Boolean(loading),\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_TAB_USER_ATTRIBUTES,\n stopDeps: [loadState],\n allowStop: ([loadState]) => {\n return isFinalLoadingStatus(loadState);\n },\n });\n\n return <UserAttributes />;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {useSelector} from 'react-redux';\nimport {getNavigationTableMountConfig} from '../../../../store/selectors/navigation/content/table-mount-config';\nimport ErrorBlock from '../../../../components/Error/Error';\nimport Yson from '../../../../components/Yson/Yson';\nimport {getNavigationMountConfigYsonSettings} from '../../../../store/selectors/thor/unipika';\nimport {YsonDownloadButton} from '../../../../components/DownloadAttributesButton';\nimport {UnipikaValue} from '../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {pathToFileName} from '../../helpers/pathToFileName';\nimport {getPath} from '../../../../store/selectors/navigation';\n\nconst block = cn('table-mount-config');\n\nfunction TableMountConfig() {\n const {data, error} = useSelector(getNavigationTableMountConfig);\n const path = useSelector(getPath);\n\n const settings = useSelector(getNavigationMountConfigYsonSettings);\n\n return (\n <div className={block('table-mount-config')}>\n {error ? (\n <ErrorBlock error={error} topMargin={'none'} />\n ) : (\n <Yson\n value={data}\n settings={settings}\n folding\n extraTools={\n <YsonDownloadButton\n value={data as UnipikaValue}\n settings={settings}\n name={`mount_config_${pathToFileName(path)}`}\n />\n }\n />\n )}\n </div>\n );\n}\n\nexport default React.memo(TableMountConfig);\n","import React from 'react';\nimport withLazyLoading from '../../../../hocs/withLazyLoading';\n\nfunction importFlow() {\n return import(/* webpackChunkName: \"navigation-flow\" */ './Flow');\n}\n\nexport const Flow = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importFlow()).Flow};\n }),\n);\n","import React from 'react';\n\nimport Consumer from '../../../../../pages/navigation/tabs/Consumer/Consumer';\nimport Queue from '../../../../../pages/navigation/tabs/Queue/Queue';\nimport ACL from '../../../../../pages/navigation/tabs/ACL/ACL';\nimport Locks from '../../../../../pages/navigation/tabs/Locks/Locks';\nimport Schema from '../../../../../pages/navigation/tabs/Schema/Schema';\nimport Tablets from '../../../../../pages/navigation/tabs/Tablets/Tablets';\nimport Attributes from '../../../../../pages/navigation/tabs/Attributes/Attributes';\nimport AccessLog from '../../../../../pages/navigation/tabs/AccessLog/AccessLog';\nimport TabletErrors from '../../../../../pages/navigation/tabs/TabletErrors/TabletErrors';\nimport UserAttributes from '../../../../../pages/navigation/tabs/UserAttributes/UserAttributes';\nimport TableMountConfig from '../../../../../pages/navigation/tabs/TableMountConfig/TableMountConfig';\nimport {Flow} from '../../../../../pages/navigation/tabs/Flow';\n\nimport {Tab} from '../../../../../constants/navigation';\nimport UIFactory from '../../../../../UIFactory';\n\nconst getSupportedAttributeTypes = () => {\n const supportedAttributeTypes: Record<string, React.ComponentType> = {\n acl: ACL,\n locks: Locks,\n schema: Schema,\n tablets: Tablets,\n attributes: Attributes,\n tablet_errors: TabletErrors,\n user_attributes: UserAttributes,\n [Tab.ACCESS_LOG]: AccessLog,\n [Tab.AUTO]: React.Fragment,\n [Tab.CONSUMER]: Consumer,\n [Tab.MOUNT_CONFIG]: TableMountConfig,\n [Tab.QUEUE]: Queue,\n [Tab.FLOW]: Flow,\n };\n\n UIFactory.getNavigationExtraTabs().forEach((tab) => {\n supportedAttributeTypes[tab.value] = tab.component;\n });\n\n return supportedAttributeTypes;\n};\n\nexport default (mode: string) => {\n const supportedAttributeTypes = getSupportedAttributeTypes();\n\n return mode in supportedAttributeTypes\n ? supportedAttributeTypes[mode as keyof typeof supportedAttributeTypes]\n : undefined;\n};\n","import getComponentByContentType from './getComponentByContentType';\nimport {Tab} from '../../../../../constants/navigation';\nimport {YTError} from '../../../../../../@types/types';\nimport ypath from '../../../../../common/thor/ypath';\nimport getComponentByMode from './getComponentByMode';\n\nexport function checkContentIsSupported(type: string, mode: string) {\n if (mode === Tab.CONTENT) return Boolean(getComponentByContentType(type));\n return Boolean(getComponentByMode(mode));\n}\n\nfunction hasViewerForType(type: string): boolean {\n return checkContentIsSupported(type, Tab.CONTENT);\n}\n\nexport function itemNavigationAllowed(item: {\n type: string;\n targetPathBroken: unknown;\n parsedPathError?: YTError;\n}) {\n if (item) {\n if (\n item.parsedPathError ||\n (item.type === 'link' && ypath.getBoolean(item.targetPathBroken))\n ) {\n return false;\n }\n\n const noAccess = item.type === undefined;\n\n return hasViewerForType(item.type) || noAccess;\n }\n\n return false;\n}\n","import React, {Component, Fragment} from 'react';\nimport PropTypes from 'prop-types';\n\nimport Hotkey from '../../../components/Hotkey/Hotkey';\n\nimport {getDisplayName} from '../../../utils';\n\nimport '../ElementsTable.scss';\n\nexport default (ElementsTable) => {\n return class WithKeyboardNavigation extends Component {\n static displayName = `WithKeyboardNavigation(${getDisplayName(ElementsTable)})`;\n\n static propTypes = {\n // from parent\n hotkeys: PropTypes.array,\n onItemClick: PropTypes.func,\n selectedIndex: PropTypes.number,\n items: PropTypes.array.isRequired,\n };\n\n static defaultProps = {\n hotkeys: [],\n selectedIndex: 0,\n onItemClick: () => {},\n };\n\n state = {\n hoverSelectedIndex: this.props.selectedIndex,\n selectedIndex: this.props.selectedIndex,\n mode: 'mouse',\n };\n\n get hotkeys() {\n return [\n ...this.props.hotkeys.map(this.wrapHotkeyHandler),\n\n {keys: 'k, up', handler: this.selectPrev, scope: 'all'},\n {keys: 'up', handler: this.selectPrev, scope: 'filter'},\n\n {keys: 'j, down', handler: this.selectNext, scope: 'all'},\n {keys: 'down', handler: this.selectNext, scope: 'filter'},\n\n {\n keys: 'l, enter, ctrl+right',\n handler: this.handleItemKeyboardClick,\n scope: 'all',\n },\n {\n keys: 'enter',\n handler: this.handleItemKeyboardClick,\n scope: 'filter',\n },\n ];\n }\n\n wrapHotkeyHandler = (params) => {\n const {handler, ...rest} = params;\n return {\n ...rest,\n handler: (...args) => {\n const {items} = this.props;\n const {selectedIndex} = this.state;\n return handler(...args, {\n item: items[selectedIndex],\n index: selectedIndex,\n });\n },\n };\n };\n\n selectIndex = (index) => {\n const {items} = this.props;\n const maxIndex = Math.max(0, items.length - 1);\n\n let state;\n if (index > maxIndex) {\n state = {\n selectedIndex: maxIndex,\n hoverSelectedIndex: maxIndex,\n };\n } else if (index < 0) {\n state = {\n selectedIndex: 0,\n hoverSelectedIndex: 0,\n };\n } else {\n state = {\n selectedIndex: index,\n hoverSelectedIndex: index,\n };\n }\n\n this.setState({mode: 'keyboard', ...state});\n };\n\n selectNext = () => {\n const {hoverSelectedIndex} = this.state;\n\n this.selectIndex(hoverSelectedIndex + 1);\n };\n\n selectPrev = () => {\n const {hoverSelectedIndex} = this.state;\n\n this.selectIndex(hoverSelectedIndex - 1);\n };\n\n handleMouseMove = () => {\n const {mode} = this.state;\n\n if (mode !== 'mouse') {\n this.setState({mode: 'mouse'});\n }\n };\n\n handleItemHover = (item, index) => {\n const {mode} = this.state;\n\n if (mode === 'mouse') {\n this.setState({\n hoverSelectedIndex: index,\n });\n }\n };\n\n handleItemSelect = (item, index) => {\n const {mode} = this.state;\n const elem = document.querySelector(\n `.elements-table__row_selected_yes[data-index=\"${index}\"]`,\n );\n\n if (elem && mode === 'keyboard') {\n const windowHeight = document.documentElement.clientHeight;\n const bounding = elem.getBoundingClientRect();\n const bottomCoordinate = bounding.y + bounding.height;\n const topCoordinate = bounding.y;\n\n if (bottomCoordinate > windowHeight) {\n elem.scrollIntoView(false);\n } else if (topCoordinate < 120) {\n elem.scrollIntoView(true);\n window.scrollBy(0, -120);\n }\n }\n };\n\n handleItemKeyboardClick = () => {\n const {onItemClick, items} = this.props;\n const {selectedIndex} = this.state;\n\n if (items && items[selectedIndex]) {\n onItemClick(items[selectedIndex]);\n }\n };\n\n render() {\n const {selectedIndex, mode} = this.state;\n\n return (\n <Fragment>\n <ElementsTable\n {...this.props}\n cssHover={mode === 'mouse'}\n onItemHover={this.handleItemHover}\n onMouseMove={this.handleMouseMove}\n selectedIndex={mode === 'keyboard' ? selectedIndex : null}\n onItemSelect={mode === 'keyboard' ? this.handleItemSelect : null}\n />\n <Hotkey settings={this.hotkeys} />\n </Fragment>\n );\n }\n };\n};\n","import React, {Component} from 'react';\nimport {batch, connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport cn from 'bem-cn-lite';\n\nimport findIndex_ from 'lodash/findIndex';\n\nimport {\n FormattedLink,\n FormattedTextOrLink,\n printColumnAsBytes,\n printColumnAsNumber,\n} from '../../../../components/formatters';\nimport {Checkbox} from '@gravity-ui/uikit';\n\nimport withKeyboardNavigation from '../../../../components/ElementsTable/hocs/withKeyboardNavigation';\nimport ElementsTableBase from '../../../../components/ElementsTable/ElementsTable';\nimport Link from '../../../../components/Link/Link';\nimport Icon from '../../../../components/Icon/Icon';\nimport AccountLink from '../../../accounts/AccountLink';\n\nimport {getIconNameForType} from '../../../../utils/navigation/path-editor';\nimport {itemNavigationAllowed} from '../../../../pages/navigation/Navigation/ContentViewer/helpers';\n\nimport {\n getContentMode,\n getLoadState,\n getPreparedTableColumns,\n getSelected,\n getSelectedIndex,\n getSortedNodes,\n} from '../../../../store/selectors/navigation/content/map-node';\nimport {getTransaction} from '../../../../store/selectors/navigation';\n\nimport {\n navigateParent,\n setMode,\n updatePath,\n updateView,\n} from '../../../../store/actions/navigation';\nimport {setSelectedItem} from '../../../../store/actions/navigation/content/map-node';\n\nimport {ROOT_POOL_NAME, Tab as SchedulingTab} from '../../../../constants/scheduling';\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../../constants/navigation';\nimport {LOADING_STATUS, Page} from '../../../../constants/index';\nimport hammer from '../../../../common/hammer';\nimport {showTableEraseModal} from '../../../../store/actions/navigation/modals/table-erase-modal';\nimport {\n showTableMergeModal,\n showTableSortModal,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\n\nimport {RumMeasureTypes} from '../../../../rum/rum-measure-types';\nimport {useRumMeasureStop} from '../../../../rum/RumUiContext';\nimport {isFinalLoadingStatus, showErrorPopup} from '../../../../utils/utils';\nimport PathActions from './PathActions';\nimport {Tooltip} from '../../../../components/Tooltip/Tooltip';\nimport WarningIcon from '../../../../components/WarningIcon/WarningIcon';\nimport TTLInfo from '../../../../components/TTLInfo/TTLInfo';\nimport UIFactory from '../../../../UIFactory';\n\nimport './MapNodesTable.scss';\n\nconst block = cn('map-nodes-table');\nconst ElementsTable = withKeyboardNavigation(ElementsTableBase);\n\nexport function renderMapNodesTableIcon(item) {\n let icon = UIFactory.getNavigationMapNodeSettings()?.renderNodeIcon(item);\n if (icon) {\n // do nothing\n } else if (MapNodesTable.isTrashNode(item) || MapNodesTable.isLinkToTrashNode(item)) {\n icon = <Icon awesome=\"trash-alt\" />;\n } else {\n icon = <Icon awesome={getIconNameForType(item.iconType, item.targetPathBroken)} />;\n }\n\n return (\n <span className={'icon-wrapper'} title={item.type}>\n {icon}\n </span>\n );\n}\n\nclass MapNodesTable extends Component {\n static propTypes = {\n columns: PropTypes.objectOf(\n PropTypes.shape({\n sort: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n caption: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n align: PropTypes.string,\n get: PropTypes.func,\n }),\n ),\n contentMode: PropTypes.string.isRequired,\n selected: PropTypes.object.isRequired,\n loadState: PropTypes.string.isRequired,\n nodes: PropTypes.array.isRequired,\n selectedIndex: PropTypes.number.isRequired,\n transaction: PropTypes.string,\n\n setSelectedItem: PropTypes.func.isRequired,\n navigateParent: PropTypes.func.isRequired,\n updatePath: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n };\n\n static TRASH_PATH = '//tmp/trash';\n\n static isTrashNode(item) {\n return item.path === MapNodesTable.TRASH_PATH;\n }\n\n static isLinkToTrashNode(item) {\n return item.targetPath === MapNodesTable.TRASH_PATH;\n }\n\n static renderTrash(linkState) {\n return <FormattedLink text=\"trash\" state={linkState} theme=\"primary\" />;\n }\n\n static renderName(item) {\n return (\n <div className={block('name-cell')}>\n <div className={block('name-cell-text')}>{MapNodesTable.renderNameImpl(item)}</div>\n <div className={block('name-cell-tags')}>{MapNodesTable.renderTags(item)}</div>\n </div>\n );\n }\n\n static renderTags(item) {\n return (\n <TTLInfo\n attributes={item.$attributes}\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n return true;\n }}\n />\n );\n }\n\n static renderNameImpl(item) {\n if (MapNodesTable.isTrashNode(item)) {\n return MapNodesTable.renderTrash(item.pathState);\n } else if (MapNodesTable.isLinkToTrashNode(item)) {\n return MapNodesTable.renderTrash(item.targetPathState);\n }\n\n const type = item.type;\n\n const textOrLink = (\n <FormattedTextOrLink\n text={item.caption}\n state={item.pathState}\n asLink={itemNavigationAllowed(item)}\n asHTML\n title={item.title}\n theme=\"primary\"\n className={block('name', 'unipika-wrapper')}\n />\n );\n\n const name = !item.parsedPathError ? (\n textOrLink\n ) : (\n <Tooltip content={<span>{item.parsedPathError.message} </span>}>\n <WarningIcon /> {textOrLink}\n </Tooltip>\n );\n\n if (type === 'scheduler_pool') {\n const poolTreeIndex = findIndex_(\n item.parsedPath.fragments,\n (fragment) => fragment.name === 'pool_trees',\n );\n\n const pool = item.parsedPath.fragments[poolTreeIndex + 2] ? item.name : ROOT_POOL_NAME;\n const poolTree = item.parsedPath.fragments[poolTreeIndex + 1].name;\n\n const url = `${Page.SCHEDULING}/${SchedulingTab.OVERVIEW}?pool=${pool}&tree=${poolTree}`;\n const arrow = <span>&#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 <div className={block()}>\n <ElementsTable\n {...settings}\n isLoading={loadState === LOADING_STATUS.LOADING}\n selectedIndex={selectedIndex}\n hotkeys={this.hotkeys}\n key={selectedIndex}\n rowClassName={this.rowClassName}\n />\n </div>\n )\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n loadState: getLoadState(state),\n columns: getPreparedTableColumns(state),\n transaction: getTransaction(state),\n contentMode: getContentMode(state),\n nodes: getSortedNodes(state),\n selected: getSelected(state),\n selectedIndex: getSelectedIndex(state),\n };\n}\n\nconst mapDispatchToProps = {\n setSelectedItem,\n navigateParent,\n updateView,\n updatePath,\n setMode,\n showTableEraseModal,\n showTableSortModal,\n showTableMergeModal,\n};\n\nconst MapNodesTableConnected = connect(mapStateToProps, mapDispatchToProps)(MapNodesTable);\n\nexport default function MapNodesTableWithRum() {\n const loadState = useSelector(getLoadState);\n const nodes = useSelector(getSortedNodes);\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_CONTENT_MAP_NODE,\n stopDeps: [nodes, loadState],\n allowStop: ([nodes, loadState]) => {\n return Boolean(nodes) && isFinalLoadingStatus(loadState);\n },\n });\n\n return <MapNodesTableConnected />;\n}\n","import React, {Component} from 'react';\nimport {ResolveThunks, connect} from 'react-redux';\n// @ts-expect-error\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport {compose} from 'redux';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {renderMapNodesTableIcon} from '../../../../../pages/navigation/content/MapNode/MapNodesTable';\nimport ErrorBoundary from '../../../../../components/ErrorBoundary/ErrorBoundary';\nimport MetaTable from '../../../../../components/MetaTable/MetaTable';\nimport HelpLink from '../../../../../components/HelpLink/HelpLink';\nimport {Checkbox, Loader} from '@gravity-ui/uikit';\nimport Error from '../../../../../components/Error/Error';\nimport Modal from '../../../../../components/Modal/Modal';\nimport Label from '../../../../../components/Label/Label';\n\nimport {\n closeDeleteModal,\n deleteObject,\n deleteObjects,\n getRealPath,\n getRealPaths,\n togglePermanentlyDelete,\n} from '../../../../../store/actions/navigation/modals/delete-object';\nimport withScope from '../../../../../hocs/components/Modal/withScope';\nimport {checkIsTrash} from '../../../../../store/selectors/navigation';\nimport hammer from '../../../../../common/hammer';\n\nimport './DeleteObjectModal.scss';\nimport UIFactory from '../../../../../UIFactory';\nimport type {RootState} from '../../../../../store/reducers';\nimport {DeleteObjectItem} from '../../../../../store/reducers/navigation/modals/delete-object';\n\nconst block = cn('navigation-delete-object-modal');\n\ntype OwnProps = {};\n\ntype StateProps = ReturnType<typeof mapStateToProps>;\n\ntype DispatchProps = ResolveThunks<typeof mapDispatchToProps>;\n\ntype DeleteObjectModalProps = OwnProps & StateProps & DispatchProps;\n\nexport class DeleteObjectModal extends Component<DeleteObjectModalProps> {\n componentDidUpdate(prevProps: DeleteObjectModalProps) {\n const {visible, item, getRealPath, getRealPaths, multipleMode} = this.props;\n\n if (!prevProps.visible && visible) {\n if (multipleMode) {\n getRealPaths(item as DeleteObjectItem[]);\n } else {\n getRealPath(item as DeleteObjectItem);\n }\n }\n }\n\n get content() {\n const {loadingRealPath, errorRealPath, error, multipleMode} = this.props;\n\n if (loadingRealPath) {\n return this.renderLoader();\n } else if (errorRealPath || error) {\n return this.renderError();\n }\n\n return multipleMode ? this.renderMultipleModeContent() : this.renderContent();\n }\n\n handleDeleteClick = () => {\n const {multipleMode, deleteObject, deleteObjects} = this.props;\n\n if (multipleMode) {\n deleteObjects();\n } else {\n deleteObject();\n }\n };\n\n renderLoader() {\n return (\n <div className={block({loading: true})}>\n <Loader />\n </div>\n );\n }\n\n renderError() {\n const {error, errorData, errorDataRealPath} = this.props;\n const errorContent = error ? errorData : errorDataRealPath;\n\n return (\n <div className={block({error: true})}>\n <Error error={errorContent} />\n </div>\n );\n }\n\n renderPermanentlyCheckbox() {\n const {permanently, togglePermanentlyDelete, inTrash} = this.props;\n\n return (\n <p className={block('delete', {permanently})}>\n <Checkbox\n size=\"l\"\n disabled={inTrash}\n checked={permanently}\n content=\"Delete permanently\"\n onChange={togglePermanentlyDelete}\n />\n\n <Label theme=\"danger\" text=\"This action CANNOT be undone\" />\n </p>\n );\n }\n\n renderMultipleModeContent() {\n const {item, multipleInfo} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block({multiple: true})}>\n <div className={block('table')}>\n <div className={block('table-header')}>\n <div className={block('preview-icon')} />\n <div className={block('preview-name')}>Name</div>\n <div className={block('preview-disk-space')}>Disk space</div>\n <div className={block('preview-node-count')}>Node count</div>\n <div className={block('preview-node-count')}>Row count</div>\n </div>\n\n {map_(multipleInfo, ({path, resourceUsage}, index) => {\n const {type, titleUnquoted, rows, unmergedRows} = (\n item as DeleteObjectItem[]\n )[index];\n const diskSpace = ypath.get(resourceUsage, '/disk_space');\n const nodeCount = ypath.get(resourceUsage, '/node_count');\n\n return (\n <React.Fragment key={path}>\n {renderMapNodesTableIcon((item as DeleteObjectItem[])[index])}\n <span title={path} className=\"elements-ellipsis\">\n {titleUnquoted}\n </span>\n <span>{hammer.format['Bytes'](diskSpace)}</span>\n <span>\n {type === 'table'\n ? hammer.format.NO_VALUE\n : hammer.format['Number'](nodeCount)}\n </span>\n <span>\n {unmergedRows\n ? `≈ ${hammer.format['Number'](unmergedRows)}`\n : hammer.format['Number'](rows)}\n </span>\n </React.Fragment>\n );\n })}\n </div>\n {this.renderPermanentlyCheckbox()}\n </div>\n </ErrorBoundary>\n );\n }\n\n renderContent() {\n const {item, resourceUsage} = this.props;\n const {type, rows, unmergedRows} = item as DeleteObjectItem;\n const diskSpace = ypath.get(resourceUsage, '/disk_space');\n const nodeCount = ypath.get(resourceUsage, '/node_count');\n\n const buildItems = () => {\n const items = [\n {\n key: 'Disk space',\n value: hammer.format['Bytes'](diskSpace),\n },\n ];\n\n switch (type) {\n case 'table':\n items.push({\n key: 'Rows',\n value: unmergedRows\n ? `≈ ${hammer.format['Number'](unmergedRows)}`\n : hammer.format['Number'](rows),\n });\n\n return items;\n\n case 'access_control_object':\n return [];\n\n default:\n items.push({\n key: 'Node count',\n value: hammer.format['Number'](nodeCount),\n });\n\n return items;\n }\n };\n\n return (\n <ErrorBoundary>\n <div className={block()}>\n <div className={block()}>\n <p className={block('object')}>\n {renderMapNodesTableIcon(item)}\n <span className={block('path')}>{(item as DeleteObjectItem).path}</span>\n </p>\n\n <MetaTable className={block('meta')} items={buildItems()} />\n\n {this.renderPermanentlyCheckbox()}\n </div>\n </div>\n </ErrorBoundary>\n );\n }\n\n render() {\n const {visible, closeDeleteModal, permanently, loading} = this.props;\n const theme = permanently ? 'outlined-danger' : 'action';\n const helpLinkUrl = UIFactory.docsUrls['common:regular_system_processes'];\n const helpLink =\n helpLinkUrl !== '' ? <HelpLink text=\"Documentation\" url={helpLinkUrl} /> : null;\n const title = permanently ? 'Delete' : 'Move to trash';\n const confirmText = permanently ? 'Delete' : 'Move to trash';\n\n return (\n <Modal\n title={title}\n visible={visible}\n loading={loading}\n confirmTheme={theme}\n confirmText={confirmText}\n content={this.content}\n footerContent={helpLink}\n contentClassName={block('content')}\n onCancel={closeDeleteModal}\n onConfirm={this.handleDeleteClick}\n />\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n const {\n error,\n errorData,\n loading,\n visible,\n permanently,\n item,\n loadingRealPath,\n errorRealPath,\n errorDataRealPath,\n realPath,\n resourceUsage,\n multipleInfo,\n multipleMode,\n } = state.navigation.modals.deleteObject;\n const inTrash = checkIsTrash(state);\n\n return {\n error,\n errorData,\n visible,\n permanently,\n item,\n loading,\n loadingRealPath,\n errorRealPath,\n errorDataRealPath,\n realPath,\n multipleInfo,\n resourceUsage,\n multipleMode,\n inTrash,\n };\n};\n\nconst mapDispatchToProps = {\n getRealPath,\n deleteObject,\n deleteObjects,\n getRealPaths,\n closeDeleteModal,\n togglePermanentlyDelete,\n};\n\nexport default compose(\n connect(mapStateToProps, mapDispatchToProps),\n withScope('delete-object-modal'),\n)(DeleteObjectModal);\n","import {ValueOf} from '../../@types/types';\n\nexport type AnnotationVisibilityType = ValueOf<typeof AnnotationVisibility>;\n\nexport const AnnotationVisibility = {\n HIDDEN: 'hidden',\n VISIBLE: 'visible',\n PARTIAL: 'partial',\n} as const;\n\nexport function normalizeAnnotationVisibility(\n value?: AnnotationVisibilityType,\n): AnnotationVisibilityType {\n return value || AnnotationVisibility.PARTIAL;\n}\n","import React, {FC} from 'react';\nimport {Markdown} from '../../../components/Markdown/Markdown';\nimport {ClickableText} from '../../../components/ClickableText/ClickableText';\n\ntype Props = {\n annotation?: string;\n expanded: boolean;\n onToggle: () => void;\n};\n\nexport const AnnotationWithPartial: FC<Props> = ({annotation, expanded, onToggle}) => {\n const value = annotation || '';\n\n const {isFullText, text} = React.useMemo(() => {\n const rows = value.split(/\\n+/);\n return {\n text: rows.slice(0, 3).join('\\n\\n'),\n isFullText: rows.length <= 3,\n };\n }, [value]);\n\n return (\n <>\n <Markdown text={expanded ? value : text} />\n {isFullText ? null : (\n <ClickableText color={'secondary'} onClick={onToggle}>\n {expanded ? 'Hide more' : 'Show more'}\n </ClickableText>\n )}\n </>\n );\n};\n","import React, {FC} from 'react';\nimport {Button, Flex} from '@gravity-ui/uikit';\nimport Icon from '../../../components/Icon/Icon';\n\ntype Props = {\n isSaving: boolean;\n editMode: boolean;\n onEditClick: () => void;\n onCancelClick: () => void;\n onSaveClick: () => void;\n};\n\nexport const ActionButtons: FC<Props> = ({\n isSaving,\n editMode,\n onEditClick,\n onSaveClick,\n onCancelClick,\n}) => {\n if (editMode)\n return (\n <Flex gap={1}>\n <Button view=\"action\" onClick={onSaveClick} loading={isSaving}>\n Save\n </Button>\n <Button view=\"flat\" onClick={onCancelClick}>\n Cancel\n </Button>\n </Flex>\n );\n\n return (\n <Button view=\"outlined\" onClick={onEditClick}>\n <Icon awesome={'pencil'} />\n </Button>\n );\n};\n","import React, {FC, useCallback, useRef} from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\nimport ErrorBlock from '../../../components/Error/Error';\nimport CollapsibleSection from '../../../components/CollapsibleSection/CollapsibleSection';\nimport {\n getNavigationAnnotation,\n getNavigationAnnotationEditing,\n getNavigationAnnotationError,\n getNavigationAnnotationPath,\n getNavigationAnnotationSaving,\n} from '../../../store/selectors/navigation/tabs/annotation';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {getSettingAnnotationVisibility} from '../../../store/selectors/settings';\nimport {setSettingAnnotationVisibility} from '../../../store/actions/settings/settings';\nimport {AnnotationVisibility} from '../../../../shared/constants/settings-ts';\nimport './NavigationDescription.scss';\nimport {AnnotationWithPartial} from './AnnotationWithPartial';\nimport {ActionButtons} from './ActionButtons';\nimport {EditAnnotationWithPreview} from '../../../components/EditAnnotationWithPreview/EditAnnotationWithPreview';\nimport {saveAnnotation} from '../../../store/actions/navigation/tabs/annotation';\nimport {\n SET_ANNOTATION,\n SET_ANNOTATION_EDITING,\n} from '../../../constants/navigation/tabs/annotation';\nimport {UI_COLLAPSIBLE_SIZE} from '../../../constants/global';\n\nconst block = cn('navigation-description');\n\ntype Props = {\n className: string;\n};\n\nconst NavigationDescription: FC<Props> = ({className}) => {\n const dispatch = useDispatch();\n const annotation = useSelector(getNavigationAnnotation) || '';\n const visibility = useSelector(getSettingAnnotationVisibility);\n const path = useSelector(getPath);\n const isSaving = useSelector(getNavigationAnnotationSaving);\n const isEditing = useSelector(getNavigationAnnotationEditing);\n const annotationPath = useSelector(getNavigationAnnotationPath);\n const error = useSelector(getNavigationAnnotationError);\n const oldValue = useRef<string>(annotation);\n\n const expanded = visibility === AnnotationVisibility.VISIBLE;\n const handleToggleAnnotationCollapse = useCallback(() => {\n dispatch(\n setSettingAnnotationVisibility(\n expanded ? AnnotationVisibility.PARTIAL : AnnotationVisibility.VISIBLE,\n ),\n );\n }, [dispatch, expanded]);\n\n const handleEditClick = useCallback(() => {\n oldValue.current = annotation;\n dispatch({type: SET_ANNOTATION_EDITING, data: true});\n }, [annotation, dispatch]);\n\n const handleCancelClick = useCallback(() => {\n dispatch({type: SET_ANNOTATION, data: oldValue.current});\n dispatch({type: SET_ANNOTATION_EDITING, data: false});\n }, [dispatch]);\n\n const handleChangeDescription = useCallback(\n ({value}: {value: string | undefined}) => {\n dispatch({type: SET_ANNOTATION, data: value || ''});\n },\n [dispatch],\n );\n\n const handleSaveClick = useCallback(() => {\n dispatch(saveAnnotation(path));\n }, [dispatch, path]);\n\n if (!(path === annotationPath && (error || annotation))) return null;\n\n return (\n <div className={block(null, className)}>\n <CollapsibleSection\n className={block('collapsible')}\n name={'Description'}\n collapsed={false}\n size={UI_COLLAPSIBLE_SIZE}\n overview={\n <ActionButtons\n isSaving={isSaving}\n editMode={isEditing}\n onEditClick={handleEditClick}\n onSaveClick={handleSaveClick}\n onCancelClick={handleCancelClick}\n />\n }\n >\n <div className={block('content')}>\n {isEditing ? (\n <EditAnnotationWithPreview\n valuePath={path}\n value={{value: annotation}}\n initialValue={{value: annotation}}\n onChange={handleChangeDescription}\n className={block('edit-block')}\n hideReset\n />\n ) : (\n <AnnotationWithPartial\n annotation={annotation}\n expanded={expanded}\n onToggle={handleToggleAnnotationCollapse}\n />\n )}\n {error && <ErrorBlock error={error} />}\n </div>\n </CollapsibleSection>\n </div>\n );\n};\n\nexport default NavigationDescription;\n","import React, {FC} from 'react';\nimport cn from 'bem-cn-lite';\nimport ErrorBoundary from '../../../../components/ErrorBoundary/ErrorBoundary';\nimport {Tab} from '../../../../constants/navigation';\nimport NavigationDescription from '../../NavigationDiscription/NavigationDescription';\nimport {getComponentByContentType, getComponentByMode} from './helpers';\n\nconst block = cn('navigation');\n\ntype Props = {\n type: string;\n mode: string;\n};\n\nconst ContentViewer: FC<Props> = ({type, mode}) => {\n const isContentTab = mode === Tab.CONTENT;\n const Component = isContentTab ? getComponentByContentType(type) : getComponentByMode(mode);\n\n if (!Component) return undefined;\n\n return (\n <ErrorBoundary>\n <div className={block('viewer', {mode})}>\n {isContentTab && <NavigationDescription className={block('description')} />}\n <Component />\n </div>\n </ErrorBoundary>\n );\n};\n\nexport default ContentViewer;\n","import React from 'react';\nimport {Icon} from '@gravity-ui/uikit';\nimport {SVGIconData} from '@gravity-ui/uikit/build/esm/components/Icon/types';\n\nimport ErrorImage901 from '../../../../assets/img/svg/901.svg';\nimport ErrorImage500 from '../../../../assets/img/svg/500.svg';\nimport {ErrorCode} from './helpers';\n\ntype Props = {\n type: ErrorCode;\n};\n\ntype ImageMap = {\n [key in ErrorCode]: SVGIconData;\n};\n\nconst ErrorImages: ImageMap = {\n 500: ErrorImage500,\n 901: ErrorImage901,\n};\n\nexport function NavigationErrorImage(props: Props) {\n const {type} = props;\n\n const ErrorImage = ErrorImages[type];\n\n return <Icon data={ErrorImage} size={150} />;\n}\n","const Svg500 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 152 150\" {...props}><path fill=\"none\" d=\"M.5 0h150v150H.5z\" /><path fill=\"#ECF2F9\" d=\"M76.456 18.436a6.03 6.03 0 0 0-6.032-6.032H6.532A6.03 6.03 0 0 0 .5 18.436v96.772a6.03 6.03 0 0 0 6.032 6.032h123.62a6.03 6.03 0 0 0 6.032-6.032V30.501a6.03 6.03 0 0 0-6.032-6.033H82.446c-3.271 0-5.99-2.676-5.99-6.032\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M138.35 20.348a7.987 7.987 0 1 0 0-15.974 7.987 7.987 0 0 0 0 15.974\" clipRule=\"evenodd\" /><path fill=\"#2EE5C0\" d=\"M145.029 17.408a1.334 1.334 0 1 0-1.887 1.887zm4.527 8.301a1.335 1.335 0 0 0 1.888-1.887zM33.143 43.925a1.334 1.334 0 0 0-2.669 0zm-2.669 3.696a1.334 1.334 0 0 0 2.669 0zm2.669 8.326a1.334 1.334 0 0 0-2.669 0zm-2.669 4.63a1.334 1.334 0 0 0 2.669 0zm9.66-6.992a1.334 1.334 0 0 0 0-2.668zm-3.738-2.668a1.334 1.334 0 0 0 0 2.668zm-9.218 2.668a1.334 1.334 0 0 0 0-2.668zm-3.696-2.668a1.334 1.334 0 0 0 0 2.668zm119.66-31.622 6.414 6.414 1.888-1.887-6.415-6.414zM30.474 43.925v3.696h2.669v-3.696zm0 12.022v4.63h2.669v-4.63zm9.66-5.03h-3.738v2.668h3.739zm-12.956 0h-3.696v2.668h3.696z\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M105.385 145.624H23.227c-4.248 0-7.731-3.484-7.731-7.732v-53.27c0-4.249 3.483-7.732 7.731-7.732h82.158c4.248 0 7.732 3.483 7.732 7.731v53.271c0 4.248-3.484 7.732-7.732 7.732\" clipRule=\"evenodd\" /><path fill=\"#2EE5C0\" d=\"M23.44 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M30.619 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M37.798 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M15.58 92.523h97.239\" /><path fill=\"#027BF3\" d=\"M57.977 45.242v67.417c0 16.992 7.731 18.309 11.215 18.309s68.437-1.784 68.437-1.784-10.068-6.67-10.068-22.26V34.069L70.466 32.2z\" /><path fill=\"#fff\" d=\"m103.446 63.79-7.743 8.375-7.865-8.415-7.338 7.814 7.946 8.416-7.946 8.616 7.338 7.654 7.865-8.616 7.743 8.215 7.054-7.814-7.662-8.215 7.662-8.376z\" /><path fill=\"#00236B\" fillRule=\"evenodd\" d=\"m69.404 45.497-11.427-.255 12.616-13v12.023c0 .68-.552 1.231-1.19 1.231m10.195 75.36s.34 8.454-10.408 10.111c5.564 0 21.85-.498 37.221-.967 13.734-.42 26.737-.817 30.706-.817 8.411 0 10.068-10.238 10.068-10.238z\" clipRule=\"evenodd\" /></svg>;\nexport default Svg500;","const Svg901 = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 150 150\" {...props}><path fill=\"none\" d=\"M0 0h150v150H0z\" /><path fill=\"#ECF2F9\" d=\"M75.956 18.436a6.03 6.03 0 0 0-6.032-6.032H6.032A6.03 6.03 0 0 0 0 18.436v96.772a6.03 6.03 0 0 0 6.032 6.032h123.62a6.03 6.03 0 0 0 6.032-6.032V30.501a6.03 6.03 0 0 0-6.032-6.032H81.946c-3.271 0-5.99-2.677-5.99-6.033\" /><path fill=\"#2EE5C0\" d=\"M32.643 43.925a1.334 1.334 0 0 0-2.669 0zm-2.669 3.696a1.334 1.334 0 1 0 2.669 0zm2.669 8.326a1.334 1.334 0 1 0-2.669 0zm-2.669 4.63a1.334 1.334 0 0 0 2.669 0zm9.66-6.991a1.334 1.334 0 0 0 0-2.67zm-3.738-2.67a1.334 1.334 0 1 0 0 2.67zm-9.218 2.67a1.334 1.334 0 0 0 0-2.67zm-3.696-2.67a1.334 1.334 0 0 0 0 2.67zm6.992-6.991v3.696h2.669v-3.696zm0 12.022v4.63h2.669v-4.63zm9.66-5.03h-3.738v2.669h3.739zm-12.956 0h-3.696v2.669h3.696zM134.661 3.528a1.335 1.335 0 0 0-2.669 0zm-2.669 3.24a1.334 1.334 0 1 0 2.669 0zm2.669 7.298a1.335 1.335 0 0 0-2.669 0zm-2.669 4.06a1.334 1.334 0 1 0 2.669 0zm8.633-5.965a1.334 1.334 0 0 0 0-2.669zm-3.277-2.669a1.334 1.334 0 0 0 0 2.669zm-8.081 2.669a1.335 1.335 0 1 0 0-2.669zm-3.24-2.669a1.335 1.335 0 0 0 0 2.669zm5.965-5.964v3.24h2.669v-3.24zm0 10.538v4.06h2.669v-4.06zm8.633-4.574h-3.277v2.669h3.277zm-11.358 0h-3.24v2.669h3.24z\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M104.885 145.624H22.727c-4.248 0-7.731-3.483-7.731-7.732v-53.27c0-4.249 3.483-7.732 7.731-7.732h82.158c4.248 0 7.732 3.483 7.732 7.731v53.271c0 4.249-3.484 7.732-7.732 7.732\" clipRule=\"evenodd\" /><path fill=\"#2EE5C0\" d=\"M22.94 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M30.119 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418M37.298 86.873a2.209 2.209 0 1 0 0-4.418 2.209 2.209 0 0 0 0 4.418\" /><path stroke=\"#2EE5C0\" strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2.669} d=\"M15.08 92.523h97.239\" /><path fill=\"#00236B\" fillRule=\"evenodd\" d=\"m88.303 36.461 27.477 15.804c3.231 1.85 4.345 5.959 2.451 8.809l-15.335 26.463c-1.894 3.553-5.978 4.663-9.209 2.813l-3.342-1.925-1.782 3.035c-.223.333-.631.444-.928.26l-1.931-1.111-2.748 4.737c-.111.222-.334.37-.557.444l-6.572 1.962c-.483.148-.78.703-.669 1.185l1.448 5.773a.99.99 0 0 1-.668 1.148l-5.83 1.776c-.482.185-.78.703-.668 1.185l1.485 5.736c.149.482-.185 1-.668 1.148l-5.867 1.813c-.483.185-.78.704-.668 1.185l1.56 5.959c.148.481-.186.999-.67 1.147 0 0-4.195 1.295-7.463 2.369-3.267 1.073-4.901-.556-5.495-2.48-.594-1.962-2.265-8.143-2.265-8.143-.037-.222 0-.481.111-.703l20.46-35.309-2.042-1.184c-.335-.185-.446-.63-.26-.963l1.782-3.035-3.193-1.813c-3.194-1.888-4.308-5.959-2.451-9.179l15.298-26.463c1.894-3.183 5.979-4.294 9.209-2.443m3.193 15.434c-1.485 2.554-.594 5.81 1.968 7.291 2.562 1.48 5.83.592 7.315-1.962s.594-5.81-1.968-7.29-5.83-.593-7.315 1.96\" clipRule=\"evenodd\" /><path fill=\"#007CE9\" fillRule=\"evenodd\" d=\"m83.253 40.977 30.299 2.405c3.379.185 6.127 3.183 6.09 6.773V78.1c0 3.516-2.748 6.33-6.164 6.33h-3.602v3.367c0 .37-.26.666-.594.666h-2.079v5.663c0 .26-.112.481-.26.666l-4.419 4.849a.96.96 0 0 0 0 1.295l3.899 4.072c.334.333.334.925 0 1.295l-3.899 4.404c-.334.37-.334.963 0 1.296l3.899 3.96c.334.333.334.925 0 1.295l-3.899 4.516c-.334.37-.334.962 0 1.295l4.085 4.071c.334.334.334.926 0 1.296 0 0-2.785 3.294-4.976 5.848s-4.307 2.146-5.718.851-5.83-5.515-5.83-5.515c-.148-.185-.26-.407-.26-.666V88.795h-2.302c-.371 0-.668-.333-.668-.703v-3.479h-3.602c-3.713 0-6.721-3.035-6.721-6.736V47.306a6.29 6.29 0 0 1 6.72-6.33M93.5 53.079c0 2.887 2.34 5.293 5.161 5.404 2.823.111 5.088-2.147 5.088-4.997s-2.265-5.255-5.088-5.403c-2.859-.111-5.16 2.11-5.16 4.996\" clipRule=\"evenodd\" /><path fill=\"#00236B\" d=\"M94.875 7.777c-13.219 0-23.95 10.696-23.95 23.873 0 5.366 1.745 10.474 5.013 14.62l1.597-2.703A20.8 20.8 0 0 1 73.82 31.65c0-11.585 9.432-20.986 21.054-20.986s21.054 9.4 21.054 20.986c0 11.584-9.469 20.948-21.054 20.948-.445 0-.965-.037-1.337-.037-.037.333-.111.74-.037 1.555a5 5 0 0 0 .334 1.332c.52.037.483.037 1.003.037 13.219 0 23.95-10.696 23.95-23.872S108.057 7.777 94.875 7.777\" /><path fill=\"#00236B\" d=\"M101.67 134.246c2.191-2.554 4.976-5.848 4.976-5.848.334-.37.334-.963 0-1.296l-4.085-4.071c-.334-.333-.334-.925 0-1.295l3.899-4.516c.334-.37.334-.962 0-1.295l-3.899-3.96c-.334-.334-.334-.926 0-1.296l3.899-4.404c.334-.37.334-.962 0-1.296l-3.899-4.071a.96.96 0 0 1 0-1.295l4.419-4.849c.148-.185.26-.407.26-.666V89.61c0-.667-.52-1.185-1.188-1.185l-3.862.37a3.52 3.52 0 0 0-3.528 3.516v42.046c0 .962 1.114 1.554 1.894.962.371-.259.743-.629 1.114-1.073\" opacity={0.2} /></svg>;\nexport default Svg901;","import {connect} from 'react-redux';\n\nimport RequestPermissions from '../../../../../containers/ACL/RequestPermissions/RequestPermissions';\nimport {\n getDenyColumnsItems,\n getIdmPermissionsRequestError,\n} from '../../../../../store/selectors/acl';\nimport {cancelRequestPermissions, requestPermissions} from '../../../../../store/actions/acl';\nimport {IdmObjectType} from '../../../../../constants/acl';\n\nconst idmKind = IdmObjectType.PATH;\n\nconst mapStateToProps = (state) => {\n const denyColumns = getDenyColumnsItems(state, idmKind);\n\n return {\n idmKind,\n denyColumns,\n error: getIdmPermissionsRequestError(state, idmKind),\n };\n};\n\nexport default connect(mapStateToProps, {requestPermissions, cancelRequestPermissions})(\n RequestPermissions,\n);\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport hammer from '../../../../../common/hammer';\nimport {Info} from '../../../../../components/Info/Info';\n\nimport './RequestPermission.scss';\n\nconst block = cn('request-permission-is-not-allowed');\n\ntype Props = {\n objectType: any;\n};\n\nexport function RequestPermissionIsNotAllowed(props: Props) {\n const {objectType} = props;\n\n return (\n <Info className={block()}>\n It is not possible to request access to the{' '}\n {hammer.format['Readable'](objectType, {caps: 'none'})}. Please request access to the\n parent directory.\n </Info>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {ClipboardButton, Flex} from '@gravity-ui/uikit';\n\nimport ypath from '../../../../../common/thor/ypath';\nimport {getParentPath} from '../../../../../utils/navigation';\nimport RequestPermissions from '../../../tabs/ACL/RequestPermissions/RequestPermissions';\nimport {RequestPermissionIsNotAllowed} from './RequestPermissionIsNotAllowed';\nimport {YTError} from '../../../../../../@types/types';\n\nimport './RequestPermission.scss';\n\nconst block = cn('request-permission');\n\ntype Props = {\n error: YTError;\n cluster: string;\n errorInfo: string;\n path?: string;\n};\n\nexport function RequestPermission(props: Props) {\n const {path: currentPath, error, cluster, errorInfo} = props;\n const objectType = ypath.getValue(error?.attributes, '/object_type');\n const errorPath = ypath.getValue(error?.attributes, '/path');\n const isRequestPermissionsForPathAllowed = objectType === 'map_node';\n\n const path = errorPath ?? currentPath;\n\n const pathForRequest = isRequestPermissionsForPathAllowed ? path : getParentPath(path);\n\n return (\n <div>\n {!isRequestPermissionsForPathAllowed && (\n <RequestPermissionIsNotAllowed objectType={objectType} />\n )}\n <Flex direction=\"row\" gap={3}>\n <RequestPermissions\n buttonClassName={block('request-permissions-button')}\n path={pathForRequest}\n cluster={cluster}\n buttonProps={{size: 'l', width: 'max'}}\n />\n <ClipboardButton className={block('copy')} view=\"outlined\" text={errorInfo}>\n Copy error details\n </ClipboardButton>\n </Flex>\n </div>\n );\n}\n","import {getYtErrorCode} from '../../../../../utils/errors';\nimport {YTError} from '../../../../../../@types/types';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * should be: (typeof YTErrors)[keyof typeof YTErrors]\n * after migrating javascript-wrapper on TS\n */\nexport type ErrorCode = 500 | 901;\n\ntype NoAccessTitlePayload = {\n username: string;\n permissions: Array<UnipikaValue>;\n path: string;\n};\n\ntype NoPathTitlePayload = {\n path: string;\n};\n\ntype TitlePayload = NoAccessTitlePayload & NoPathTitlePayload;\n\ntype ErrorInfo = {\n [key in ErrorCode]: {\n getTitle: (payload: TitlePayload) => string;\n };\n};\n\nexport const ErrorsInfo: ErrorInfo = {\n 901: {\n getTitle: (payload: NoAccessTitlePayload) => {\n const {username, permissions, path} = payload;\n const permission = permissions.map((perm: UnipikaValue) => perm.$value).join(' | ');\n return `User ${username} does not have \"${permission}\" access to node \"${path}\"`;\n },\n },\n 500: {\n getTitle: (payload: NoPathTitlePayload) => {\n const {path} = payload;\n return `Path \"${path}\" does not exist`;\n },\n },\n};\n\nexport function getErrorTitle(error: YTError, path?: string): string {\n const {attributes} = error;\n\n const code = getLeadingErrorCode(error);\n\n if (!code) return 'An unexpected error occurred';\n\n const title = ErrorsInfo[code].getTitle({\n path: path || '',\n username: attributes?.user.$value || '',\n permissions: attributes?.permission || '',\n });\n\n return title;\n}\n\n/**\n * returns first non-undefined error code,\n * from root error to inner errors\n */\nexport function getLeadingErrorCode(error: YTError): ErrorCode | undefined {\n const errorCode = getYtErrorCode(error);\n if (!isNaN(errorCode)) {\n return errorCode;\n }\n\n if (!error.inner_errors) return;\n\n const errors = error.inner_errors;\n\n for (const inner_error of errors) {\n const innerErrorCode = getYtErrorCode(inner_error);\n if (!isNaN(innerErrorCode)) {\n return innerErrorCode;\n }\n\n if (inner_error.inner_errors) {\n errors.concat(inner_error.inner_errors);\n }\n }\n\n return;\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport {ClipboardButton, Flex, Text} from '@gravity-ui/uikit';\n\nimport Error from '../../../../components/Error/Error';\nimport {NavigationErrorImage} from './NavigationErrorImage';\nimport ErrorDetails from '../../../../components/ErrorDetails/ErrorDetails';\nimport {RequestPermission} from './RequestPermission';\nimport {getPermissionDeniedError} from '../../../../utils/errors';\nimport {YTError} from '../../../../../@types/types';\nimport {getErrorTitle, getLeadingErrorCode} from './helpers';\n\nimport './NavigationError.scss';\n\nconst block = cn('navigation-error');\n\ntype Props = {\n path?: string;\n details: YTError;\n cluster: string;\n message: string;\n};\n\nfunction PrettyError(props: Props) {\n const {details, path, cluster} = props;\n\n const code = getLeadingErrorCode(details);\n const error = code == 901 ? getPermissionDeniedError(details)! : details;\n const title = getErrorTitle(error, path);\n const errorInfo = JSON.stringify(details, null, 4);\n\n return (\n <Flex className={block()} justifyContent=\"center\" alignItems=\"center\" gap={7}>\n <Flex>\n <NavigationErrorImage type={code || 500} />\n </Flex>\n <Flex direction=\"column\" className={block('info')} gap={4}>\n <Text className={block('title')}>{title}</Text>\n <ErrorDetails error={details} />\n <Flex direction=\"row\" gap={3}>\n {code === 901 ? (\n <RequestPermission\n cluster={cluster}\n path={path}\n error={error}\n errorInfo={errorInfo}\n />\n ) : (\n <ClipboardButton className={block('copy')} view=\"outlined\" text={errorInfo}>\n Copy error details\n </ClipboardButton>\n )}\n </Flex>\n </Flex>\n </Flex>\n );\n}\n\nfunction UnexpectedError(props: Props) {\n const {details, message} = props;\n\n return <Error className={block('unexpected-error')} error={details} message={message} />;\n}\n\nexport function NavigationError(props: Props) {\n const {details} = props;\n\n const code = getLeadingErrorCode(details);\n\n return (\n <>\n {code !== undefined && [500, 901].includes(code) ? (\n <PrettyError {...props} />\n ) : (\n <UnexpectedError {...props} />\n )}\n </>\n );\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {\n getNavigationCheckPermissionsError,\n getNavigationIsAccountUsable,\n getNavigationIsWritable,\n getNavigationPathAccount,\n} from '../../../store/selectors/navigation/navigation';\nimport {useSelector} from 'react-redux';\nimport Error from '../../../components/Error/Error';\nimport Block from '../../../components/Block/Block';\nimport {getPath} from '../../../store/selectors/navigation';\nimport {genAccountsAclLink} from '../../../utils/accounts/accounts';\nimport {getCluster} from '../../../store/selectors/global';\nimport Link from '../../../components/Link/Link';\n\nimport './NavigationPermissionsNotice.scss';\nconst block = cn('navigation-permissions-notice');\n\nexport function NavigationPermissionsNotice() {\n const path = useSelector(getPath);\n const isWriteable = useSelector(getNavigationIsWritable);\n const isAccountUsable = useSelector(getNavigationIsAccountUsable);\n const checkPermissionsError = useSelector(getNavigationCheckPermissionsError);\n const account = useSelector(getNavigationPathAccount);\n const cluster = useSelector(getCluster);\n\n if (checkPermissionsError) {\n return <Error error={checkPermissionsError} message={'Check permissions error'} />;\n }\n\n const accountAclLink = genAccountsAclLink(cluster, account);\n\n return isWriteable && !isAccountUsable ? (\n <Block\n type={'alert'}\n message={\n <div className={block()}>\n You cannot modify <span className={block('path')}> {path} </span> since you have\n no permission <span className={block('use')}> use </span> to the corresponding\n account\n <Link routed url={accountAclLink}>\n {' '}\n {account}\n </Link>\n .\n </div>\n }\n />\n ) : null;\n}\n","import {Page} from '../../constants';\nimport {AccountsTab} from '../../constants/accounts/accounts';\n\nexport function genAccountsAclLink(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.ACL}?account=${account}`;\n}\n","import React from 'react';\n\nimport isEmpty_ from 'lodash/isEmpty';\nimport isEqual_ from 'lodash/isEqual';\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\nimport reduce_ from 'lodash/reduce';\n\nimport cn from 'bem-cn-lite';\n\nimport ypath from '../../../common/thor/ypath';\n\n// @ts-ignore\nimport {\n DialogError,\n DialogField,\n DialogTabField,\n FormApi,\n YTDFDialog,\n} from '../../../components/Dialog';\nimport {\n getNavigationAttributesEditorAttributes,\n getNavigationAttributesEditorDynamicTables,\n getNavigationAttributesEditorError,\n getNavigationAttributesEditorMapNodes,\n getNavigationAttributesEditorPath,\n getNavigationAttributesEditorStaticTables,\n getNavigationAttributesEditorVisible,\n} from '../../../store/selectors/navigation/modals/attributes-editor';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n hideNavigationAttributesEditor,\n navigationSetNodeAttributes,\n} from '../../../store/actions/navigation/modals/attributes-editor';\nimport {getMediumListNoCache} from '../../../store/selectors/thor';\nimport {\n InMemoryMode,\n InMemoryModeType,\n StorageOptions,\n compressionCodecValueFromString,\n compressionCodecValueToString,\n erasureCodecFromStorageOption,\n normalizeErasureCodec,\n storageOptionFromErasureCodec,\n} from '../../../utils/cypress-attributes';\nimport {makeLink} from './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 './CreateTableModal/CreateTableModal';\nimport {YTError} from '../../../types';\nimport {RemoteCopyParams} from '../../../../@types/types';\nimport {AxiosError} from 'axios';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ntype Values = Omit<RemoteCopyParams, 'input_table_paths'> & {\n input_table_paths: Array<{title: string}>;\n};\n\nfunction RemoteCopyModal() {\n const dispatch = useDispatch();\n const visible = useSelector(getRemoteCopyModalVisible);\n const paths = useSelector(getRemoteCopyModalPaths);\n const cluster = useSelector(getCluster);\n\n const [error, setError] = React.useState<YTError | unknown>();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<Values>) => {\n try {\n setError(undefined);\n const {values} = form.getState();\n const {input_table_paths, pool, ...rest} = values;\n await dispatch(\n remoteCopy({\n ...rest,\n input_table_paths: map_(input_table_paths, 'title'),\n pool: pool,\n }),\n );\n } catch (e: unknown) {\n setError((e as AxiosError<YTError>)?.response?.data || e);\n throw e;\n }\n },\n [setError],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideRemoteCopyModal());\n }, []);\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n const calculateValueOnPoolsLoaded = React.useCallback(\n ({loadedPoolNames}: {loadedPoolNames: Array<string>}) => {\n const transferPool = find_(loadedPoolNames, (name) => name === `transfer_${cluster}`);\n return transferPool || '';\n },\n [cluster],\n );\n\n return !visible ? null : (\n <YTDFDialog<Values>\n visible={true}\n onAdd={handleAdd}\n onClose={handleClose}\n headerProps={{\n title: 'Remote copy',\n }}\n initialValues={{\n cluster_name: cluster,\n input_table_paths: pathsValues,\n schema_inference_mode: 'auto',\n output_table_path: pathsValues[0]?.title,\n override: false,\n }}\n fields={[\n {\n name: 'cluster_name',\n type: 'cluster',\n caption: 'Source cluster',\n extras: {\n disabled: true,\n width: 'max',\n },\n },\n {\n name: 'input_table_paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Input paths' : 'Input path',\n extras: {\n frozen: true,\n },\n },\n {\n name: 'dstCluster',\n type: 'cluster',\n caption: 'Destination cluster',\n required: true,\n extras: {\n excludeClusters: [cluster],\n width: 'max',\n },\n },\n {\n name: 'output_table_path',\n type: 'text',\n caption: 'Output path',\n required: true,\n },\n {\n name: 'override',\n type: 'tumbler',\n caption: 'Override output',\n },\n {\n name: 'copy_attributes',\n type: 'tumbler',\n caption: 'Copy user attributes',\n },\n {\n name: 'schema_inference_mode',\n type: 'yt-select-single',\n caption: 'Schema inference',\n extras: {\n items: [\n {\n value: 'auto',\n text: 'Auto',\n },\n {\n value: 'from_input',\n text: 'From input',\n },\n {\n value: 'from_output',\n text: 'From output',\n },\n ],\n width: 'max',\n },\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n warning: (\n <>\n pool must have specified{' '}\n {docsUrl(\n makeLink(\n UIFactory.docsUrls['operations:remote_copy'],\n 'limits',\n true,\n ),\n )}\n </>\n ),\n visibilityCondition: {\n when: 'dstCluster',\n isActive: (value) => Boolean(value),\n },\n required: true,\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({dstCluster}: Values) => {\n return {\n cluster: dstCluster,\n placeholder: `(cluster: ${dstCluster}) pool name`,\n calculateValueOnPoolsLoaded,\n allowEphemeral: true,\n };\n },\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nexport default React.memo(RemoteCopyModal);\n","import {RootState} from '../../../../store/reducers';\n\nexport const getNavigationTableEraseModalVisible = (state: RootState) =>\n state.navigation.modals.tableEraseModal.visible;\nexport const getNavigationTableEraseModalPath = (state: RootState) =>\n state.navigation.modals.tableEraseModal.path;\n","import React from 'react';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {makeLink} from './CreateTableModal/CreateTableModal';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n hideTableEraseModal,\n runTableErase,\n} from '../../../store/actions/navigation/modals/table-erase-modal';\nimport {\n getNavigationTableEraseModalPath,\n getNavigationTableEraseModalVisible,\n} from '../../../store/selectors/navigation/modals/table-erase-modal';\nimport {docsUrl} from '../../../config';\nimport UIFactory from '../../../UIFactory';\n\ninterface FormValues {\n path: string;\n range: string;\n combine_chunks: boolean;\n}\n\nexport default function TableEraseModal() {\n const visible = useSelector(getNavigationTableEraseModalVisible);\n const path = useSelector(getNavigationTableEraseModalPath);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n try {\n const {range, combine_chunks} = form.getState().values;\n\n const [from, to] = range?.split(':') || [];\n await dispatch(\n runTableErase({\n path: path ?? '',\n from: from ? Number(from) : undefined,\n to: to ? Number(to) : undefined,\n combine_chunks,\n }),\n );\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [path, setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableEraseModal());\n }, [dispatch]);\n\n return (\n <YTDFDialog<FormValues>\n visible={visible}\n headerProps={{\n title: 'Erase table rows',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n pristineSubmittable={true}\n initialValues={{\n path,\n }}\n fields={[\n {\n name: 'path',\n type: 'plain',\n caption: 'Path',\n },\n {\n name: 'range',\n type: 'text',\n caption: 'Range',\n tooltip: (\n <span>\n {docsUrl(makeLink(UIFactory.docsUrls['operations:erase']))}\n Leave empty to erase all rows. Or use two numbers separated by colon.\n Each number might be skipped.\n <br />\n Examples: &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 '../CreateTableModal/CreateTableModal';\nimport './TableSortModal.scss';\nimport {ColumnSortByInfo} from './TableSortByControl';\nimport {docsUrl} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {WaitForDefaultPoolTree} from '../../../../hooks/global-pool-trees';\n\nconst block = cn('table-sort-modal');\n\nexport default function TableSortModal() {\n const login = useSelector(getCurrentUserName);\n const visible = useSelector(getNavigationTableSortVisible);\n const paths = useSelector(getNavigationTableSortPaths);\n const suggestError = useSelector(getNavigationTableSortError);\n const suggestColumns = useSelector(getNavigationTableSortSuggestColumns);\n const attributeValues = useSelector(getNavigationTableAttributesValues);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: any) => {\n try {\n const {values} = form.getState();\n const {paths, outputPath, columns, pool, poolTree} = values;\n\n const spec = Object.assign(\n {\n input_table_paths: paths,\n output_table_path: {\n $value: outputPath,\n $attributes: attributeValues,\n },\n sort_by: map_(columns, (item: ColumnSortByInfo) => {\n return {\n name: item.name,\n sort_order: item.descending\n ? ('descending' as const)\n : ('ascending' as const),\n };\n }),\n },\n pool ? {pool} : {},\n poolTree.length ? {pool_trees: poolTree} : {},\n );\n\n await dispatch(runTableSort(spec));\n return;\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [attributeValues, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableSortModal());\n }, [dispatch]);\n\n const handlePathsChange = React.useCallback(\n (paths: Array<string>) => {\n dispatch(tableSortModalLoadColumns(paths));\n },\n [dispatch],\n );\n\n const title = paths?.length > 1 ? 'Sort tables' : 'Sort table';\n const outputPath = paths?.length === 1 ? paths[0] : undefined;\n\n const errorFields: Array<DialogField<FormValues>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n if (suggestError) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={suggestError} />,\n },\n });\n }\n\n return !visible ? null : (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n className={block()}\n visible={visible}\n headerProps={{\n title,\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n paths,\n outputPath,\n columns: [],\n poolTree: [defaultPoolTree],\n }}\n fields={[\n {\n name: 'paths',\n type: 'editable-path-list',\n caption: 'Input paths',\n required: true,\n onChange: handlePathsChange,\n extras: {\n placeholder: 'Enter a path to add',\n },\n },\n {\n name: 'outputPath',\n type: 'output-path',\n caption: 'Output path',\n required: true,\n validator: isPathStaticTable,\n extras: {\n placeholder: 'Enter path for output',\n },\n tooltip: (\n <span>\n If the path is not exists then started operation will be failed\n </span>\n ),\n },\n {\n name: 'columns',\n type: 'table-sort-by',\n caption: 'Sort by columns',\n required: true,\n extras: {\n suggestColumns,\n allowDescending: true,\n },\n },\n {\n name: 'poolTree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: (values: FormValues) => {\n const {poolTree} = values;\n return {\n placeholder: login,\n poolTrees: poolTree,\n allowEphemeral: true,\n };\n },\n },\n ...errorFields,\n ]}\n />\n )}\n </WaitForDefaultPoolTree>\n );\n}\n\ninterface FormValues {\n paths: Array<string>;\n outputPath: string;\n columns: Array<string>;\n poolTree: string[];\n pool: string;\n}\n","import React from 'react';\n\nimport map_ from 'lodash/map';\nimport pickBy_ from 'lodash/pickBy';\n\nimport {DialogError, FormApi, YTDFDialog} from '../../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n getNavigationTableAttributesValues,\n getNavigationTableMergeVisible,\n getNavigationTableSortError,\n getNavigationTableSortPaths,\n getNavigationTableSortSuggestColumns,\n} from '../../../../store/selectors/navigation/modals/table-merge-sort-modal';\nimport {\n hideTableMergeModal,\n isPathStaticTable,\n runTableMerge,\n tableSortModalLoadColumns,\n} from '../../../../store/actions/navigation/modals/table-merge-sort-modal';\nimport {getCurrentUserName} from '../../../../store/selectors/global';\nimport {makeLink} from '../CreateTableModal/CreateTableModal';\nimport {parseBytes} from '../../../../utils';\nimport {docsUrl} from '../../../../config';\nimport UIFactory from '../../../../UIFactory';\nimport {WaitForDefaultPoolTree} from '../../../../hooks/global-pool-trees';\n\nexport default function TableMergeModal() {\n const login = useSelector(getCurrentUserName);\n const visible = useSelector(getNavigationTableMergeVisible);\n const paths = useSelector(getNavigationTableSortPaths);\n const suggestError = useSelector(getNavigationTableSortError);\n const suggestColumns = useSelector(getNavigationTableSortSuggestColumns);\n const attributeValues = useSelector(getNavigationTableAttributesValues);\n\n const [error, setError] = React.useState<any>();\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<FormValues>) => {\n try {\n const {values} = form.getState();\n const {\n mode,\n paths,\n outputPath,\n columns,\n pool,\n poolTree,\n chunkSize,\n force_transform,\n combine_chunks,\n } = values;\n const chunkSizeBytes = parseBytes(chunkSize);\n const data_size_per_job = isNaN(chunkSizeBytes) ? undefined : chunkSizeBytes;\n const pool_trees = poolTree.length ? poolTree : undefined;\n await dispatch(\n runTableMerge(\n pickBy_(\n {\n mode,\n input_table_paths: paths,\n output_table_path: {\n $value: outputPath,\n $attributes: attributeValues,\n },\n merge_by: map_(columns, 'name'),\n pool,\n pool_trees,\n data_size_per_job,\n force_transform,\n combine_chunks,\n },\n Boolean,\n ) as any,\n ),\n );\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [attributeValues, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideTableMergeModal());\n }, [dispatch]);\n\n const handlePathsChange = React.useCallback(\n (paths: Array<string>) => {\n dispatch(tableSortModalLoadColumns(paths));\n },\n [dispatch],\n );\n\n const outputPath = paths?.length === 1 ? paths[0] : undefined;\n\n return (\n <WaitForDefaultPoolTree>\n {({defaultPoolTree}) => (\n <YTDFDialog<FormValues>\n visible={visible}\n headerProps={{\n title: 'Merge',\n }}\n pristineSubmittable={true}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n paths,\n mode: 'unordered',\n outputPath,\n columns: [],\n force_transform: true,\n poolTree: [defaultPoolTree],\n combine_chunks: true,\n }}\n fields={[\n {\n name: 'mode',\n type: 'radio',\n caption: 'Mode',\n tooltip: docsUrl(makeLink(UIFactory.docsUrls['operations:merge'])),\n extras: {\n options: [\n {value: 'unordered', label: 'Unordered'},\n {value: 'sorted', label: 'Sorted'},\n {value: 'ordered', label: 'Ordered'},\n ],\n },\n },\n {\n name: 'paths',\n type: 'editable-path-list',\n caption: 'Input paths',\n required: true,\n onChange: handlePathsChange,\n extras: {\n placeholder: 'Enter a path to add',\n },\n },\n {\n name: 'outputPath',\n type: 'output-path',\n caption: 'Output path',\n required: true,\n validator: isPathStaticTable,\n touched: true,\n extras: {\n placeholder: 'Enter path for output',\n },\n tooltip: (\n <span>\n If the path is not an exist then started operation will be\n failed\n </span>\n ),\n },\n {\n name: 'columns',\n type: 'table-sort-by',\n caption: 'Merge by columns',\n extras: {\n suggestColumns,\n },\n },\n {\n name: 'chunkSize',\n type: 'table-chunk-size',\n caption: 'Chunk size',\n },\n {\n name: 'combine_chunks',\n type: 'tumbler',\n caption: 'Combine chunks',\n },\n {\n name: 'poolTree',\n type: 'pool-tree',\n caption: 'Pool tree',\n },\n {\n name: 'pool',\n type: 'pool',\n caption: 'Pool',\n tooltip: docsUrl(\n makeLink(\n UIFactory.docsUrls[\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij'\n ],\n ),\n ),\n extras: ({poolTree}: FormValues) => {\n return {\n poolTrees: poolTree,\n placeholder: login,\n allowEphemeral: true,\n };\n },\n },\n {\n name: 'force_transform',\n type: 'tumbler',\n caption: 'Force transform',\n },\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ...(!suggestError\n ? []\n : [\n {\n name: 'suggestError',\n type: 'block' as const,\n extras: {\n children: <DialogError error={suggestError} />,\n },\n },\n ]),\n ]}\n />\n )}\n </WaitForDefaultPoolTree>\n );\n}\n\ninterface FormValues {\n mode: string;\n pool: string;\n poolTree: string[];\n\n paths: Array<string>;\n outputPath: string;\n columns: Array<unknown>;\n chunkSize: string;\n force_transform: boolean;\n combine_chunks: boolean;\n}\n","import {RootState} from '../../../reducers';\n\nexport const getDynTablesStateModalVisible = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.showModal;\nexport const getDynTablesStateModalPaths = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.paths;\nexport const getDynTablesStateModalAction = (state: RootState) =>\n state.navigation.modals.dynTablesStateModal.action;\n","import React from 'react';\n\nimport capitalize_ from 'lodash/capitalize';\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {\n dynTablesChangeState,\n hideDynTablesStateModal,\n} from '../../../store/actions/navigation/modals/dyn-tables-state-modal';\nimport {\n getDynTablesStateModalAction,\n getDynTablesStateModalPaths,\n getDynTablesStateModalVisible,\n} from '../../../store/selectors/navigation/modals/dyn-tables-state-modal';\nimport {DynTablesStateModalState} from '../../../store/reducers/navigation/modals/dyn-tables-state-modal';\nimport {Warning} from '../../../components/Text/Text';\nimport {YTError} from '../../../types';\n\nimport './DynTablesStateModal.scss';\n\nconst block = cn('dyn-tables-state-modal');\n\nexport default function DynTablesStateModal() {\n const dispatch = useDispatch();\n\n const action = useSelector(getDynTablesStateModalAction);\n const paths = useSelector(getDynTablesStateModalPaths);\n const visible = useSelector(getDynTablesStateModalVisible);\n\n const [error, setError] = React.useState<YTError>();\n\n const onClose = React.useCallback(() => {\n dispatch(hideDynTablesStateModal());\n setError(undefined);\n }, [dispatch, setError]);\n\n const onAdd = React.useCallback(async () => {\n try {\n if (!action) {\n throw new Error('Action should be defined');\n }\n await dispatch(dynTablesChangeState(paths, action));\n } catch (e) {\n setError(e as any);\n throw e;\n }\n }, [dispatch, paths, action, setError]);\n\n const pathsValues = React.useMemo(\n () =>\n map_(paths, (item) => {\n return {\n title: item,\n };\n }),\n [paths],\n );\n\n if (!visible) {\n return null;\n }\n\n const warning = renderWarning(action);\n\n return (\n <YTDFDialog\n visible\n onAdd={onAdd}\n onClose={onClose}\n pristineSubmittable={true}\n headerProps={{\n title: capitalize_(action),\n }}\n initialValues={{\n paths: pathsValues,\n }}\n fields={[\n {\n name: 'paths',\n type: 'editable-list',\n caption: paths.length > 1 ? 'Paths' : 'Path',\n extras: {\n frozen: true,\n className: block('path-list'),\n },\n },\n ...(!warning\n ? []\n : [\n {\n name: 'warning',\n type: 'block' as const,\n extras: {\n children: warning,\n },\n },\n ]),\n ...(!error\n ? []\n : [\n {\n name: 'error',\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n },\n ]),\n ]}\n />\n );\n}\n\nconst WARN_TEXT: {[action: string]: string} = {\n unmount:\n 'Unmounted table will become inaccessible for reads and writes. Operation may take a while (usually up to 30 seconds). Do you want to proceed?',\n freeze: 'Frozen table will become read-only. Operation may take a while (usually up to 30 seconds). Do you want to proceed?',\n};\n\nfunction renderWarning(action: DynTablesStateModalState['action']) {\n const text = WARN_TEXT[action || ''];\n return !text ? null : <Warning>{text}</Warning>;\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getLinkToModalState = (state: RootState) => state.navigation.modals.linkToModal;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, DialogField, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getLinkToModalState} from '../../../store/selectors/navigation/modals/link-to-modal';\nimport {createLink, hideLinkToModal} from '../../../store/actions/navigation/modals/link-to-modal';\nimport {LinkToState} from '../../../store/reducers/navigation/modals/link-to-modal';\nimport {ytApiV3} from '../../../rum/rum-wrap-api';\n\nconst block = cn('table-sort-modal');\n\ntype LinkToModalState = Pick<LinkToState, 'path' | 'target'>;\n\nexport default function LinkToModal() {\n const [error, setError] = React.useState<any>();\n const {visible, path, target} = useSelector(getLinkToModalState);\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<LinkToModalState>) => {\n try {\n await dispatch(createLink(form.getState().values));\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(hideLinkToModal());\n }, [dispatch]);\n\n const errorFields: Array<DialogField<LinkToModalState>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n return !visible ? null : (\n <YTDFDialog<LinkToModalState>\n className={block()}\n visible={true}\n headerProps={{\n title: 'Create link',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n path,\n target,\n }}\n fields={[\n {\n name: 'path',\n type: 'path',\n caption: 'Link path',\n required: true,\n validator: async (path: string) => {\n try {\n const res = await ytApiV3.exists({path});\n if (res) {\n return 'Link path already exists';\n }\n return undefined;\n } catch (err) {\n const e = err as Error;\n return e?.message || 'Unexpected type of error: ' + typeof e;\n }\n },\n },\n {\n name: 'target',\n type: 'path',\n caption: 'Target path',\n required: true,\n validator: async (path: string) => {\n try {\n const res = await ytApiV3.exists({path});\n if (!res) {\n return 'Target path should exist';\n }\n return undefined;\n } catch (err) {\n const e = err as Error;\n return e?.message || 'Unexpected type of error: ' + typeof e;\n }\n },\n },\n ...errorFields,\n ]}\n />\n );\n}\n","import {RootState} from '../../../../store/reducers';\n\nexport const getCreateACOModalState = (state: RootState) => state.navigation.modals.createACOModal;\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport {DialogError, DialogField, FormApi, YTDFDialog} from '../../../components/Dialog';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getCreateACOModalState} from '../../../store/selectors/navigation/modals/create-aco-modal';\nimport {closeCreateACOModal, createACO} from '../../../store/actions/navigation/modals/create-aco';\n\nconst block = cn('table-sort-modal');\n\ntype CreateACOFormState = {\n namespace: string;\n name: string;\n path: string;\n};\n\nexport default function CreateACOModal() {\n const [error, setError] = React.useState<any>();\n const {visible, path, namespace} = useSelector(getCreateACOModalState);\n\n const dispatch = useDispatch();\n\n const handleAdd = React.useCallback(\n async (form: FormApi<CreateACOFormState>) => {\n try {\n await dispatch(createACO(form.getState().values));\n } catch (e) {\n setError(e);\n throw e;\n }\n },\n [setError, dispatch],\n );\n\n const handleClose = React.useCallback(() => {\n dispatch(closeCreateACOModal());\n }, [dispatch]);\n\n const errorFields: Array<DialogField<CreateACOFormState>> = [];\n if (error) {\n errorFields.push({\n name: 'error',\n type: 'block',\n extras: {\n children: <DialogError error={error} />,\n },\n });\n }\n\n if (visible) {\n return (\n <YTDFDialog<CreateACOFormState>\n className={block()}\n visible={true}\n headerProps={{\n title: 'Create ACO',\n }}\n onAdd={handleAdd}\n onClose={handleClose}\n initialValues={{\n path,\n namespace,\n }}\n fields={[\n {\n name: 'name',\n type: 'text',\n caption: 'ACO name',\n required: true,\n },\n ...errorFields,\n ]}\n />\n );\n }\n\n return null;\n}\n","import React, {Component, Fragment} from 'react';\nimport {StickyContainer} from 'react-sticky';\nimport {connect, useSelector} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport hammer from '../../../common/hammer';\nimport cn from 'bem-cn-lite';\n\nimport map_ from 'lodash/map';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {updateTitle} from '../../../store/actions/global';\n\nimport {\n CopyObjectModal,\n CreateDirectoryModal,\n DeleteObjectModal,\n MoveObjectModal,\n RestoreObjectModal,\n} from './PathEditorModal';\nimport ErrorBoundary from '../../../components/ErrorBoundary/ErrorBoundary';\nimport ContentViewer from './ContentViewer/ContentViewer';\nimport {checkContentIsSupported} from './ContentViewer/helpers';\nimport Tabs from '../../../components/Tabs/Tabs';\nimport {NavigationError} from './NavigationError';\n\nimport {Tab} from '../../../constants/navigation';\nimport {LOADING_STATUS} from '../../../constants/index';\n\nimport {onTransactionChange, setMode, updateView} from '../../../store/actions/navigation';\n\nimport {\n getError,\n getIdmSupport,\n getLoadState,\n getParsedPath,\n getPath,\n getTransaction,\n getType,\n isNavigationFinalLoadState,\n} from '../../../store/selectors/navigation';\nimport {getEffectiveMode, getTabs} from '../../../store/selectors/navigation/navigation';\nimport {NavigationPermissionsNotice} from './NavigationPermissionsNotice';\nimport {useRumMeasureStop} from '../../../rum/RumUiContext';\nimport {useAppRumMeasureStart} from '../../../rum/rum-app-measures';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport AttributesEditor from '../modals/AttributesEditor';\nimport RemoteCopyModal from '../modals/RemoteCopyModal';\nimport TableEraseModal from '../modals/TableEraseModal';\nimport TableSortModal from '../modals/TableMergeSortModal/TableSortModal';\nimport TableMergeModal from '../modals/TableMergeSortModal/TableMergeModal';\nimport DynTablesStateModal from '../modals/DynTablesStateModal';\nimport LinkToModal from '../modals/LinkToModal';\nimport CreateACOModal from '../modals/CreateACOModal';\nimport Button from '../../../components/Button/Button';\nimport Icon from '../../../components/Icon/Icon';\nimport {showNavigationAttributesEditor} from '../../../store/actions/navigation/modals/attributes-editor';\nimport {UI_TAB_SIZE} from '../../../constants/global';\nimport {CellPreviewModal} from '../../../containers/CellPreviewModal/CellPreviewModal';\n\nimport './Navigation.scss';\n\nconst block = cn('navigation');\n\nfunction renderModals() {\n return (\n <Fragment>\n <RestoreObjectModal />\n <CreateDirectoryModal />\n <MoveObjectModal />\n <CopyObjectModal />\n <DeleteObjectModal />\n <AttributesEditor />\n <TableEraseModal />\n <TableSortModal />\n <TableMergeModal />\n <DynTablesStateModal />\n <LinkToModal />\n <CreateACOModal />\n <RemoteCopyModal />\n <CellPreviewModal />\n </Fragment>\n );\n}\n\nclass Navigation extends Component {\n static propTypes = {\n // from connect\n cluster: PropTypes.string.isRequired,\n path: PropTypes.string.isRequired,\n mode: PropTypes.string.isRequired,\n isIdmSupported: PropTypes.bool.isRequired,\n transaction: PropTypes.string,\n parsedPath: PropTypes.object,\n type: PropTypes.string,\n\n hasError: PropTypes.bool,\n error: PropTypes.shape({\n message: PropTypes.string,\n inner_errors: PropTypes.arrayOf(\n PropTypes.shape({\n message: PropTypes.string,\n details: PropTypes.shape({\n code: PropTypes.number,\n object_type: PropTypes.string,\n }),\n }),\n ),\n }),\n loaded: PropTypes.bool,\n loading: PropTypes.bool,\n\n setMode: PropTypes.func.isRequired,\n updateView: PropTypes.func.isRequired,\n onTransactionChange: PropTypes.func.isRequired,\n };\n\n componentDidMount() {\n this.props.updateView({trackVisit: true});\n this.updateTitleWithPath();\n }\n\n componentDidUpdate(prevProps) {\n const {transaction, path, updateView, onTransactionChange} = this.props;\n const {transaction: prevTransaction, path: prevPath} = prevProps;\n\n if (transaction !== prevTransaction) {\n onTransactionChange();\n } else if (path !== prevPath) {\n updateView({trackVisit: true});\n }\n\n if (this.props.parsedPath !== prevProps.parsedPath) {\n this.updateTitleWithPath();\n }\n }\n\n componentWillUnmount() {\n this.props.updateTitle({path: ''});\n }\n\n updateTitleWithPath() {\n const {parsedPath, updateTitle} = this.props;\n updateTitle({path: parsedPath ? parsedPath.getKey() : ''});\n }\n\n get items() {\n const {tabs, setMode} = this.props;\n\n return tabs.map((tab) => {\n if (tab.hotkey) {\n return {\n ...tab,\n hotkey: tab.hotkey.map(({keys, tab, scope}) => {\n return {\n keys,\n scope,\n handler: () => setMode(tab),\n };\n }),\n };\n }\n\n return tab;\n });\n }\n\n onTabChange = (value) => {\n const {setMode} = this.props;\n setMode(value);\n };\n\n renderTabs() {\n const {mode, tabSize} = this.props;\n const items = map_(this.items, (item) => ({\n ...item,\n text: item.text || hammer.format['ReadableField'](item.value),\n show: true,\n }));\n\n return (\n <Tabs\n onTabChange={this.onTabChange}\n active={mode}\n items={items}\n underline\n size={tabSize}\n />\n );\n }\n\n renderEditButton() {\n return (\n <div className={block('edit-metadata')}>\n <Button\n size=\"m\"\n className={block('edit-metadata-btn')}\n title={'Edit metadata'}\n onClick={this.onEditButtonClick}\n >\n <Icon awesome={'pencil'} />\n Edit metadata\n </Button>\n </div>\n );\n }\n\n onEditButtonClick = () => {\n const {path, showNavigationAttributesEditor} = this.props;\n showNavigationAttributesEditor([path]);\n };\n\n renderPlaceholder() {\n const {type = 'unknown', mode, loading} = this.props;\n\n if (type === 'unknown' && loading) {\n return null;\n }\n\n return (\n <div className=\"navigation__warning elements-message elements-message_theme_warning\">\n {mode === Tab.CONTENT ? (\n <p className=\"elements-message__paragraph\">\n Viewing node of type <strong>{type}</strong> is not supported in navigator.\n </p>\n ) : (\n <p className=\"elements-message__paragraph\">\n Viewing node attribute <strong>{mode}</strong> is not supported in\n navigator.\n </p>\n )}\n </div>\n );\n }\n\n renderView() {\n const {type, mode} = this.props;\n if (checkContentIsSupported(type, mode)) {\n return <ContentViewer type={type} mode={mode} />;\n }\n\n return this.renderPlaceholder();\n }\n\n renderError() {\n const {\n error: {message, details},\n cluster,\n path,\n } = this.props;\n\n return (\n <NavigationError cluster={cluster} path={path} details={details} message={message} />\n );\n }\n\n render() {\n const {loaded, hasError} = this.props;\n\n return (\n <ErrorBoundary>\n <div className={block({error: hasError}, 'elements-main-section')}>\n <StickyContainer>\n <div className={block('header')}>\n <NavigationPermissionsNotice />\n\n <div className={block('tabs')}>\n {this.renderEditButton()}\n {this.renderTabs()}\n </div>\n </div>\n\n <div className={block('main')}>{loaded && this.renderView()}</div>\n </StickyContainer>\n {hasError && this.renderError()}\n\n {renderModals()}\n </div>\n </ErrorBoundary>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n const isFinalState = isNavigationFinalLoadState(state);\n const loadState = getLoadState(state);\n const hasError = loadState === LOADING_STATUS.ERROR;\n const loaded = loadState === LOADING_STATUS.LOADED;\n return {\n path: getPath(state),\n mode: getEffectiveMode(state),\n type: getType(state),\n isIdmSupported: getIdmSupport(state),\n error: getError(state),\n hasError,\n loaded,\n loading: !isFinalState,\n parsedPath: getParsedPath(state),\n transaction: getTransaction(state),\n cluster: getCluster(state),\n tabSize: UI_TAB_SIZE,\n tabs: getTabs(state),\n };\n}\n\nconst mapDispatchToProps = {\n setMode,\n updateView,\n updateTitle,\n onTransactionChange,\n showNavigationAttributesEditor,\n};\n\nconst NavigationConnected = connect(mapStateToProps, mapDispatchToProps)(Navigation);\n\nconst NavigationWithRumMemo = React.memo(NavigationWithMesure);\n\nfunction NavigationWithMesure() {\n const path = useSelector(getPath);\n const transaction = useSelector(getTransaction);\n const isFinalState = useSelector(isNavigationFinalLoadState);\n\n useAppRumMeasureStart({\n type: RumMeasureTypes.NAVIGATION_PRELOAD,\n startDeps: [isFinalState, path, transaction],\n allowStart: ([isFinal]) => {\n return !isFinal;\n },\n });\n\n useRumMeasureStop({\n type: RumMeasureTypes.NAVIGATION_PRELOAD,\n stopDeps: [isFinalState],\n allowStop: ([isFinal]) => {\n return isFinal;\n },\n });\n\n return <NavigationConnected />;\n}\n\nexport default function NavigationWithRum() {\n return <NavigationWithRumMemo />;\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {TextInput} from '@gravity-ui/uikit';\nimport key from 'hotkeys-js';\n\nimport Hotkey from '../../components/Hotkey/Hotkey';\n\nconst supportedSizes = ['xs', 's', 'm'];\n\nconst propTypes = {\n size: PropTypes.oneOf(supportedSizes),\n value: PropTypes.string,\n placeholder: PropTypes.string,\n onApply: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n scope: PropTypes.string.isRequired,\n cancelOnBlur: PropTypes.bool,\n};\n\nconst defaultProps = {\n size: 'm',\n};\n\nexport default class Editor extends React.Component {\n constructor(props) {\n super(props);\n\n this.onApply = this.onApply.bind(this);\n this.onCancel = this.onCancel.bind(this);\n this.onChange = this.onChange.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n\n this.state = {\n value: props.value,\n };\n }\n willReceiveProps({value}) {\n this.setState({value});\n }\n onApply() {\n if (typeof this.props.onApply === 'function') {\n this.props.onApply(this.state.value);\n }\n }\n onCancel() {\n if (typeof this.props.onCancel === 'function') {\n this.props.onCancel();\n }\n }\n onChange(value) {\n this.setState({value});\n }\n onFocus() {\n key.setScope(this.props.scope);\n }\n onBlur() {\n key.setScope('all');\n const {cancelOnBlur} = this.props;\n if (cancelOnBlur) {\n this.onCancel();\n }\n }\n render() {\n // console.log('<props>', this.props, '</props>');\n\n const {size, scope, placeholder} = this.props;\n\n return (\n <div className={block('elements-editor')()}>\n <TextInput\n size={size}\n placeholder={placeholder}\n value={this.state.value}\n autoFocus\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n onUpdate={this.onChange}\n />\n <Hotkey\n settings={[\n {keys: 'enter', scope: scope, handler: this.onApply},\n {keys: 'esc', scope: scope, handler: this.onCancel},\n ]}\n />\n </div>\n );\n }\n}\n\nEditor.propTypes = propTypes;\nEditor.defaultProps = defaultProps;\n","import React, {FocusEvent} from 'react';\nimport cn from 'bem-cn-lite';\nimport {RowWithName} from '../../../containers/AppNavigation/TopRowContent/SectionName';\nimport Favourites from '../../../components/Favourites/Favourites';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {getFavouritePaths, isCurrentPathInFavourites} from '../../../store/selectors/favourites';\nimport {getActualPath, getPath, getTransaction} from '../../../store/selectors/navigation';\nimport {navigationToggleFavourite} from '../../../store/actions/favourites';\nimport {\n clearTransaction,\n setTransaction,\n updatePath,\n updateView,\n} from '../../../store/actions/navigation';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\n// @ts-ignore\nimport metrics from '../../../common/utils/metrics';\n\nimport {Breadcrumbs, BreadcrumbsItem} from '../../../components/Breadcrumbs';\nimport {\n getMode,\n getNavigationBreadcrumbs,\n getNavigationRestorePath,\n} from '../../../store/selectors/navigation/navigation';\n\nimport {getCluster} from '../../../store/selectors/global';\nimport {makeRoutedURL} from '../../../store/location';\nimport Link from '../../../components/Link/Link';\nimport Editor from '../../../components/Editor/Editor';\nimport Button from '../../../components/Button/Button';\nimport Icon from '../../../components/Icon/Icon';\n\nimport {Page} from '../../../constants';\nimport {restoreObject} from '../../../store/actions/navigation/modals/restore-object';\nimport {inTrash} from '../../../utils/navigation/restore-object';\nimport {EditButton} from '../../../components/EditableAsText/EditableAsText';\nimport PathEditor from '../../../containers/PathEditor/PathEditor';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {Tab} from '../../../constants/navigation';\n\nimport './NavigationTopRowContent.scss';\nimport {Escaped} from '../../../components/Text/Text';\nimport {useHistory} from 'react-router';\n\nconst block = cn('navigation-top-row-content');\n\nfunction NavigationTopRowContent() {\n const defaultPath = useSelector(getNavigationDefaultPath);\n return (\n <RowWithName page={Page.NAVIGATION} className={block()} urlParams={{path: defaultPath}}>\n <NavigationFavourites />\n <EditableNavigationBreadcrumbs />\n <NavigationTools />\n </RowWithName>\n );\n}\n\nfunction NavigationFavourites() {\n const dispatch = useDispatch();\n\n const favourites = useSelector(getFavouritePaths);\n\n const isInFavourites = useSelector(isCurrentPathInFavourites);\n const path = useSelector(getPath);\n\n const handleToggle = React.useCallback(() => {\n dispatch(navigationToggleFavourite(path));\n }, [dispatch, path]);\n\n const handleItemClick = React.useCallback(\n ({path}: {path: string}) => {\n dispatch(updatePath(path));\n },\n [dispatch],\n );\n\n return (\n <Favourites\n theme={'clear'}\n isActive={isInFavourites}\n items={favourites || []}\n onItemClick={handleItemClick}\n onToggle={handleToggle}\n />\n );\n}\n\nfunction NavigationPathToClipboard() {\n const path = useSelector(getPath);\n return (\n <span className={block('to-clipboard')}>\n <ClipboardButton\n text={path}\n title=\"Copy to clipboard [Shift+P]\"\n className={'navigation__instruments-control'}\n hotkey=\"shift+p\"\n onCopy={onCopyToClipboard}\n />\n </span>\n );\n}\n\nfunction onCopyToClipboard() {\n metrics.countEvent({'navigation_copy-path': 'clicked'});\n}\n\nfunction EditableNavigationBreadcrumbs() {\n const [editMode, setEditMode] = React.useState(false);\n\n const toggleEditMode = React.useCallback(() => {\n setEditMode(!editMode);\n }, [setEditMode, editMode]);\n\n return (\n <div className={block('editable-breadcrumbs')}>\n {editMode ? (\n <NavigationPathEditor hideEditor={toggleEditMode} />\n ) : (\n <React.Fragment>\n <NavigationBreadcrumbs onEdit={toggleEditMode} />\n <EditButton onClick={toggleEditMode} />\n <NavigationPathToClipboard />\n </React.Fragment>\n )}\n </div>\n );\n}\n\nfunction NavigationPathEditor({hideEditor}: {hideEditor: () => void}) {\n const dispatch = useDispatch();\n const actualPath = useSelector(getActualPath);\n\n const handleApply = React.useCallback(\n (path: string) => {\n if (path !== actualPath) {\n dispatch(updatePath(path.endsWith('/') ? path.slice(0, -1) : path));\n }\n hideEditor();\n },\n [hideEditor],\n );\n\n const handleFocus = React.useCallback((event: FocusEvent<HTMLInputElement>) => {\n event.target?.select();\n }, []);\n\n return (\n <PathEditor\n className={block('path-editor')}\n autoFocus\n defaultPath={actualPath}\n onApply={handleApply}\n onCancel={hideEditor}\n onBlur={hideEditor}\n onFocus={handleFocus}\n />\n );\n}\n\nfunction NavigationBreadcrumbs({onEdit}: {onEdit: () => void}) {\n const bcItems = useSelector(getNavigationBreadcrumbs);\n const mode = useSelector(getMode);\n const history = useHistory();\n\n const items = React.useMemo(() => {\n return bcItems.map(({text, state}, index) => {\n const isLastItem = index === bcItems.length - 1;\n const url = makeRoutedURL(window.location.pathname, {\n path: state.path,\n navmode: mode === Tab.ACL ? mode : Tab.CONTENT,\n filter: '',\n });\n\n return (\n <BreadcrumbsItem key={text} href={url}>\n {index ? (\n <Escaped text={text} onClick={isLastItem ? onEdit : undefined} />\n ) : (\n <Icon awesome={'folder-tree'} face={'solid'} />\n )}\n </BreadcrumbsItem>\n );\n });\n }, [bcItems, mode, onEdit]);\n\n return (\n <Breadcrumbs navigate={history.push} showRoot className={block('breadcrumbs')}>\n {items}\n </Breadcrumbs>\n );\n}\n\nfunction NavigationTools() {\n return (\n <div className={block('tools')}>\n <Transaction />\n <RefreshButton />\n <RestoreButton />\n </div>\n );\n}\n\nfunction Transaction() {\n const dispatch = useDispatch();\n\n const cluster = useSelector(getCluster);\n const transaction = useSelector(getTransaction);\n const [editMode, setEditMode] = React.useState(false);\n\n const handleClearTransaction = React.useCallback(() => {\n dispatch(clearTransaction());\n }, [dispatch]);\n\n const handleEdit = React.useCallback(\n (value: string) => {\n dispatch(setTransaction(value));\n setEditMode(false);\n },\n [dispatch, setEditMode],\n );\n\n const toggleEditMode = React.useCallback(() => {\n setEditMode(!editMode);\n }, [setEditMode, editMode]);\n\n if (transaction) {\n return (\n <div className={block('transaction')}>\n <span className=\"elements-ellipsis\">\n <Link\n routed\n url={`/${cluster}/${Page.NAVIGATION}?path=//sys/transactions/${transaction}`}\n >\n {transaction}\n </Link>\n </span>\n <Button\n size=\"m\"\n view=\"flat-secondary\"\n title=\"Clear transaction\"\n onClick={handleClearTransaction}\n >\n <Icon awesome=\"times\" />\n </Button>\n </div>\n );\n } else {\n return editMode ? (\n <Editor\n size=\"s\"\n scope=\"transaction-editor\"\n visible={true}\n value={transaction}\n placeholder=\"Enter id...\"\n onApply={handleEdit}\n onCancel={toggleEditMode}\n cancelOnBlur\n />\n ) : (\n <Button view=\"flat-secondary\" size=\"m\" title=\"Set transaction\" onClick={toggleEditMode}>\n <Icon awesome=\"code-branch\" />\n </Button>\n );\n }\n}\n\nfunction RefreshButton() {\n const dispatch = useDispatch();\n\n const handleClick = React.useCallback(() => {\n metrics.countEvent({\n navigation_refresh: 'clicked',\n });\n dispatch(updateView());\n }, [dispatch]);\n\n return (\n <Button\n size=\"s\"\n view=\"flat-secondary\"\n title={'Refresh page [Shift+R]'}\n hotkey={[{keys: 'shift+r', handler: handleClick, scope: 'all'}]}\n onClick={handleClick}\n >\n <Icon awesome={'sync-alt'} />\n </Button>\n );\n}\n\nfunction RestoreButton() {\n const dispatch = useDispatch();\n const path = useSelector(getPath);\n const restorePath = useSelector(getNavigationRestorePath);\n\n const handleRestore = React.useCallback(() => {\n dispatch(restoreObject(path, restorePath));\n }, [dispatch, restorePath, path]);\n\n return !restorePath || !inTrash(path) ? null : (\n <span className={block('restore')}>\n <Button view=\"action\" size=\"s\" onClick={handleRestore}>\n <Icon awesome=\"undo\" />\n &nbsp;Restore\n </Button>\n </span>\n );\n}\n\nexport default React.memo(NavigationTopRowContent);\n","import React from 'react';\n\nimport withLazyLoading from '../../../hocs/withLazyLoading';\nimport Loader from '../../../components/Loader/Loader';\nimport {useSidePanel} from '../../../hooks/use-side-panel';\n\nexport const QueryWidgetLazy = withLazyLoading(\n React.lazy(() => import(/* webpackChunkName: \"query-widget\" */ './index')),\n <Loader visible centered size=\"l\" />,\n);\n\nexport function useQueryWidgetSidePanel() {\n return useSidePanel('QueryWidget', {\n renderContent({onClose}) {\n return <QueryWidgetLazy onClose={onClose} />;\n },\n });\n}\n","import React from 'react';\nimport {getSchedulingOperationsLoadingStatus} from '../../../../../store/selectors/scheduling/expanded-pools';\nimport {useSelector} from 'react-redux';\nimport Loader from '../../../../../components/Loader/Loader';\n\nfunction SchedulingOperationsLoader() {\n const loading = useSelector(getSchedulingOperationsLoadingStatus);\n return <Loader visible={loading} />;\n}\n\nexport default React.memo(SchedulingOperationsLoader);\n","import {RumMeasureStartProps, useRumMeasureStart} from './RumUiContext';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../store/selectors/global';\n\nexport function useAppRumMeasureStart<T extends Array<any>>(params: RumMeasureStartProps<T>) {\n const cluster = useSelector(getCluster);\n\n useRumMeasureStart({\n ...params,\n subPage: params.subPage || `ui.${cluster}`,\n });\n}\n","import {ThunkAction} from 'redux-thunk';\n\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport {\n DELETE_PERMISSION,\n IdmObjectType,\n LOAD_DATA,\n REQUEST_PERMISSION,\n UPDATE_ACL,\n} from '../../constants/acl';\nimport {getTree} from '../../store/selectors/scheduling/scheduling';\nimport {\n YTPermissionTypeUI,\n checkUserPermissionsUI,\n getAcl,\n getResponsible,\n} from '../../utils/acl/acl-api';\nimport {convertFromUIPermissions, prepareAclSubject} from '../../utils/acl';\nimport UIFactory from '../../UIFactory';\nimport {AclAction, HasIdmKind} from '../../store/reducers/acl/acl';\nimport {isCancelled} from '../../utils/cancel-helper';\nimport {RootState} from '../../store/reducers';\nimport {\n IdmKindType,\n PreparedAclSubject,\n ResponsibleType,\n Role,\n UpdateAclParams,\n} from '../../utils/acl/acl-types';\nimport {CheckPermissionResult} from '../../../shared/utils/check-permission';\nimport {YTApiId, ytApiV3Id} from '../../rum/rum-wrap-api';\n\ntype ThunkAclAction<T = unknown> = ThunkAction<T, RootState, unknown, AclAction>;\n\nconst prepareUserPermissions = (\n userPermissions: Array<CheckPermissionResult>,\n idmKind: IdmKindType,\n) => {\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind];\n return map_(userPermissions, (item, index) => {\n return {\n type: permissionTypes[index],\n action: item.action,\n };\n });\n};\n\ntype HasNormPoolTree = {normalizedPoolTree?: string};\n\nasync function getPathToCheckPermissions(\n idmKind: IdmKindType,\n entityName: string,\n poolTree?: string,\n) {\n switch (idmKind) {\n case IdmObjectType.ACCESS_CONTROL_OBJECT:\n case IdmObjectType.UI_EFFECTIVE_ACL:\n case IdmObjectType.PATH:\n return entityName;\n case IdmObjectType.ACCOUNT:\n return `//sys/accounts/${entityName}`;\n case IdmObjectType.POOL: {\n const fullPath: string = await ytApiV3Id.get(YTApiId.schedulingPoolFullPath, {\n path: `//sys/scheduler/orchid/scheduler/pool_trees/${poolTree}/pools/${entityName}/full_path`,\n });\n return `//sys/pool_trees/${poolTree}${fullPath}`;\n }\n case IdmObjectType.TABLET_CELL_BUNDLE: {\n return `//sys/tablet_cell_bundles/${entityName}`;\n }\n }\n throw new Error('Unexpected value of parameter idmKind');\n}\n\nexport function loadAclData(\n {path, idmKind}: {path: string} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n options: {userPermissionsPath?: string} = {userPermissionsPath: undefined},\n): ThunkAclAction {\n return async (dispatch, getState) => {\n const state = getState();\n const {login, cluster = ''} = state.global;\n\n dispatch({type: LOAD_DATA.REQUEST, idmKind});\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind];\n\n const {userPermissionsPath} = options;\n\n try {\n const pathToCheckPermissions = await getPathToCheckPermissions(idmKind, path, poolTree);\n const pathToCheckUserPermissions = userPermissionsPath\n ? await getPathToCheckPermissions(idmKind, userPermissionsPath, poolTree)\n : pathToCheckPermissions;\n\n return await Promise.all([\n getAcl({\n cluster,\n path,\n kind: idmKind,\n poolTree,\n sysPath: pathToCheckPermissions,\n }),\n checkUserPermissionsUI(pathToCheckUserPermissions, login, permissionTypes),\n getResponsible({\n cluster,\n path,\n kind: idmKind,\n poolTree,\n sysPath: pathToCheckPermissions,\n }),\n ]).then(([acl, userPermissions, responsible]) => {\n dispatch({\n type: LOAD_DATA.SUCCESS,\n data: {\n path,\n version: responsible.version,\n auditors: responsible.auditors,\n objectPermissions: acl.permissions,\n columnGroups: acl.column_groups,\n responsible: responsible.responsible,\n userPermissions: prepareUserPermissions(userPermissions, idmKind),\n readApprovers: responsible.readApprovers,\n disableAclInheritance: responsible.disableAclInheritance,\n bossApproval: responsible.bossApproval,\n disableInheritanceResponsible: responsible.disableInheritanceResponsible,\n },\n idmKind,\n });\n });\n } catch (error: any) {\n dispatch({\n type: LOAD_DATA.FAILURE,\n data: {\n error,\n },\n idmKind,\n });\n }\n };\n}\n\nexport function deletePermissions(\n {\n roleKey,\n idmKind,\n path,\n itemToDelete,\n }: HasIdmKind & {path: string; roleKey: string; itemToDelete: PreparedAclSubject},\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction<Promise<void>> {\n return async (dispatch, getState) => {\n const {cluster = ''} = getState().global;\n const state = getState();\n\n dispatch({\n type: DELETE_PERMISSION.REQUEST,\n data: roleKey,\n idmKind,\n });\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n\n try {\n const deletePermissionsPath = await getPathToCheckPermissions(idmKind, path, poolTree);\n\n return await UIFactory.getAclApi()\n .deleteRole({\n idmKind,\n cluster,\n roleKey,\n path,\n sysPath: deletePermissionsPath,\n itemToDelete,\n })\n .then(() => {\n dispatch({\n type: DELETE_PERMISSION.SUCCESS,\n data: roleKey,\n idmKind,\n });\n });\n } catch (error: any) {\n if (isCancelled(error)) {\n dispatch({type: DELETE_PERMISSION.CANCELLED, idmKind});\n return undefined;\n } else {\n dispatch({\n type: DELETE_PERMISSION.FAILURE,\n data: error,\n idmKind,\n });\n return Promise.reject(error);\n }\n }\n };\n}\n\nfunction dateToDaysAfterNow(date?: Date) {\n if (!date) {\n return undefined;\n }\n\n return Math.round((date.getTime() - Date.now()) / 3600 / 24 / 1000);\n}\n\nexport type PermissionToRequest = {\n path: string;\n cluster: string;\n permissions: {[x: string]: Array<YTPermissionTypeUI>} | null;\n subjects: Array<ResponsibleType>;\n inheritance_mode?: string;\n duration?: Date;\n comment?: string;\n permissionFlags?: Record<string, boolean>;\n readColumnGroup?: string;\n readColumns?: Array<string>;\n};\n\nexport function requestPermissions(\n {values, idmKind}: {values: PermissionToRequest} & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction {\n return async (dispatch, getState) => {\n const state = getState();\n const {\n global: {cluster = ''},\n } = state;\n\n dispatch({\n type: REQUEST_PERMISSION.REQUEST,\n idmKind,\n });\n\n const {requestPermissionsFlags = {}} = UIFactory.getAclApi();\n\n const daysAfter = dateToDaysAfterNow(values.duration);\n const roles: Array<Role> = [];\n const rolesGroupedBySubject = [];\n const {inheritance_mode, permissionFlags, readColumnGroup, readColumns} = values;\n for (const item of values.subjects) {\n const subject = prepareAclSubject(item);\n const commonPart = {\n subject,\n deprive_after_days: daysAfter,\n ...(inheritance_mode ? {inheritance_mode} : {}),\n };\n Object.entries(requestPermissionsFlags).forEach(([key, flagInfo]) => {\n flagInfo?.applyToRequestedRole(commonPart, permissionFlags?.[key]);\n });\n const flattenPermissions = flatten_(map_(values.permissions));\n if (flattenPermissions.length) {\n rolesGroupedBySubject.push({\n permissions: flattenPermissions,\n ...commonPart,\n });\n }\n if (readColumns?.length) {\n rolesGroupedBySubject.push({\n ...rolesGroupedBySubject[rolesGroupedBySubject.length - 1],\n ...commonPart,\n columns: readColumns,\n permissions: ['read' as const],\n });\n }\n forEach_(values.permissions, (permissions) => {\n roles.push({\n ...convertFromUIPermissions({permissions}),\n ...commonPart,\n });\n });\n if (readColumnGroup) {\n roles.push({\n role_type: 'column_read',\n column_group_id: readColumnGroup,\n ...commonPart,\n });\n }\n }\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n\n const requestPermissionsPath = await getPathToCheckPermissions(\n idmKind,\n values.path,\n poolTree,\n );\n\n //cluster, path, roles, comment, columns\n return UIFactory.getAclApi()\n .requestPermissions({\n cluster,\n path: values.path,\n sysPath: requestPermissionsPath,\n roles,\n roles_grouped: rolesGroupedBySubject.map(convertFromUIPermissions),\n comment: values.comment ?? '',\n kind: idmKind,\n poolTree,\n })\n .then(() => {\n dispatch({\n type: REQUEST_PERMISSION.SUCCESS,\n idmKind,\n });\n })\n .catch((error: any) => {\n if (isCancelled(error)) {\n dispatch({type: REQUEST_PERMISSION.CANCELLED, idmKind});\n return undefined;\n } else {\n dispatch({\n type: REQUEST_PERMISSION.FAILURE,\n data: error,\n idmKind,\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function cancelRequestPermissions({idmKind}: HasIdmKind) {\n return {type: REQUEST_PERMISSION.CANCELLED, idmKind};\n}\n\nexport interface UpdateAclValues {\n responsible: Array<ResponsibleType>;\n auditors: Array<ResponsibleType>;\n readApprovers: Array<ResponsibleType>;\n disableInheritance: boolean;\n bossApproval: boolean;\n inheritAcl: boolean;\n comment: string;\n}\n\nexport function updateAcl(\n {\n path,\n values,\n version,\n idmKind,\n mode,\n }: {\n path: string;\n values: Partial<UpdateAclValues>;\n version?: string;\n mode?: UpdateAclParams['mode'];\n } & HasIdmKind,\n {normalizedPoolTree}: HasNormPoolTree = {},\n): ThunkAclAction {\n return (dispatch, getState) => {\n const state = getState();\n const {\n global: {cluster = ''},\n } = getState();\n\n dispatch({\n type: UPDATE_ACL.REQUEST,\n idmKind,\n });\n\n const poolTree =\n idmKind === IdmObjectType.POOL ? normalizedPoolTree || getTree(state) : undefined;\n return UIFactory.getAclApi()\n .updateAcl(cluster, path, {\n ...values,\n version,\n idmKind,\n poolTree,\n mode,\n })\n .then(() => {\n dispatch({\n type: UPDATE_ACL.SUCCESS,\n idmKind,\n });\n })\n .catch((error) => {\n if (isCancelled(error)) {\n return dispatch({type: UPDATE_ACL.CANCELLED, idmKind});\n } else {\n const data = error?.response?.data || error?.response || error;\n dispatch({\n type: UPDATE_ACL.FAILURE,\n data,\n idmKind,\n });\n return Promise.reject(error);\n }\n });\n };\n}\n\nexport function cancelUpdateAcl({idmKind}: HasIdmKind): AclAction {\n return {type: UPDATE_ACL.CANCELLED, idmKind};\n}\n","import {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {\n getParsedError,\n parseErrorFromResponse,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\n\ntype LoadDynamicTableRequest = (props: {\n setup: unknown;\n parameters: unknown;\n cancellation?: unknown;\n reverseRows?: boolean;\n}) => Promise<{\n columns: string[];\n rows: UnipikaValue[];\n yqlTypes: TypeArray[] | null;\n}>;\n\nexport const readDynamicTable: LoadDynamicTableRequest = async ({\n setup,\n parameters,\n cancellation,\n reverseRows,\n}) => {\n const {data} = await ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters,\n cancellation,\n });\n\n const error = parseErrorFromResponse(data);\n if (error) return Promise.reject(getParsedError(error));\n\n const {columns, rows, yqlTypes} = prepareRows(data, reverseRows);\n return {columns, rows, yqlTypes};\n};\n","import {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport {\n getParsedError,\n parseErrorFromResponse,\n prepareHeaders,\n prepareRows,\n} from '../../../../../utils/navigation/content/table/table';\nimport {UnipikaValue} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\nimport {TypeArray} from '../../../../../components/SchemaDataType/dataTypes';\n\ntype LoadStaticTableRows = (props: {\n setup: unknown;\n parameters: unknown;\n cancellation?: unknown;\n reverseRows?: boolean;\n}) => Promise<{\n columns: string[];\n rows: UnipikaValue[];\n omittedColumns: string[];\n yqlTypes: TypeArray[] | null;\n}>;\n\nexport const readStaticTable: LoadStaticTableRows = async ({\n setup,\n parameters,\n cancellation,\n reverseRows,\n}) => {\n const {data, headers} = await ytApiV3Id.readTable(YTApiId.tableRead, {\n setup,\n parameters,\n cancellation,\n });\n\n const error = parseErrorFromResponse(data);\n if (error) return Promise.reject(getParsedError(error));\n\n const {columns, rows, yqlTypes} = prepareRows(data, reverseRows);\n const omittedColumns = prepareHeaders(headers);\n\n return {columns, omittedColumns, rows, yqlTypes};\n};\n","import {isMediaTag} from '../../../../../utils/yql-types';\n\nconst getDefaultFormat = () => {\n return '--format json';\n};\n\nconst getImageResultFormat = (columnName: string, tag: string) => {\n const [_, extension] = tag.split('/');\n return `--format \"<columns=[${columnName}];enable_escaping=%false>schemaful_dsv\" >${columnName}.${extension}`;\n};\n\nexport const getCliCommandResultFormat = ({\n tag,\n columnName,\n}: {\n tag?: string;\n columnName: string;\n}) => {\n if (tag && isMediaTag(tag)) {\n return getImageResultFormat(columnName, tag as string);\n }\n\n return getDefaultFormat();\n};\n","import type {CellPreviewActionType} from '../../../modals/cell-preview';\nimport {\n getCurrentRowKey,\n getKeyColumns,\n getYqlTypes,\n} from '../../../../selectors/navigation/content/table-ts';\nimport Query from '../../../../../utils/navigation/content/table/query';\nimport {YTApiId, ytApiV3Id} from '../../../../../rum/rum-wrap-api';\nimport type {CancelTokenSource} from 'axios';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getDynamicTableCellPath = ({\n index,\n path,\n columnName,\n}: {\n path: string;\n columnName: string;\n index: number;\n}): CellPreviewActionType => {\n return (_, getState) => {\n const yqlTypes = getYqlTypes(getState());\n const key = getCurrentRowKey(getState(), index);\n const keyColumns = getKeyColumns(getState());\n\n const offset = Query.prepareKey(key, yqlTypes);\n\n return Query.prepareQuery({\n path,\n offset,\n offsetColumns: keyColumns,\n columns: [columnName],\n limit: 1,\n });\n };\n};\n\nexport const getDynamicTableCliCommand = ({\n cellPath,\n tag,\n columnName,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt select-rows 'select ${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n\nexport const loadDynamicTableCellPreview = ({\n cellPath,\n output_format,\n cancellation,\n}: {\n cellPath: string;\n output_format: any;\n cancellation: (token: CancelTokenSource) => void;\n}) => {\n return async () => {\n const setup = {};\n\n return await ytApiV3Id.selectRows(YTApiId.dynTableSelectRowsPreload, {\n setup,\n parameters: {\n output_format,\n query: cellPath,\n },\n cancellation,\n });\n };\n};\n","import {type CellPreviewActionType} from '../../../modals/cell-preview';\nimport {getOffsetValue} from '../../../../selectors/navigation/content/table';\nimport type {CancelTokenSource} from 'axios';\nimport {ytApiV4} from '../../../../../rum/rum-wrap-api';\nimport {getCliCommandResultFormat} from './format';\n\nexport const getStaticTableCellPath = ({\n path,\n columnName,\n index,\n}: {\n path: string;\n columnName: string;\n index: number;\n}): CellPreviewActionType => {\n return (_, getState) => {\n const offset = getOffsetValue(getState());\n\n const rowIndex = typeof offset === 'number' ? index + offset : index;\n\n return `${path}{${columnName}}[#${rowIndex}:#${rowIndex + 1}]`;\n };\n};\n\nexport const getStaticTableCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): string => {\n return `yt read-table '${cellPath}' ${getCliCommandResultFormat({columnName, tag})}`;\n};\n\nexport const loadStaticTableCellPreview = ({\n cellPath,\n output_format,\n cancellation,\n}: {\n cellPath: string;\n output_format: any;\n cancellation: (token: CancelTokenSource) => void;\n}): CellPreviewActionType => {\n return async () => {\n return await ytApiV4.readTable({\n parameters: {\n path: cellPath,\n output_format,\n },\n cancellation,\n });\n };\n};\n","import {getPath} from '../../../../selectors/navigation';\nimport {batch} from 'react-redux';\nimport {getDefaultRequestOutputFormat} from '../../../../../utils/navigation/content/table/table';\nimport {CELL_PREVIEW, PREVIEW_LIMIT} from '../../../../../constants/modals/cell-preview';\nimport {isCancelled} from '../../../../../utils/cancel-helper';\nimport {\n CellPreviewActionType,\n cellPreviewCancelHelper,\n openCellPreview,\n} from '../../../modals/cell-preview';\nimport unipika from '../../../../../common/thor/unipika';\nimport {getIsDynamic} from '../../../../selectors/navigation/content/table-ts';\nimport {\n getDynamicTableCellPath,\n getDynamicTableCliCommand,\n loadDynamicTableCellPreview,\n} from './dynamic-table';\nimport {\n getStaticTableCellPath,\n getStaticTableCliCommand,\n loadStaticTableCellPreview,\n} from './static-table';\nimport {isYqlTypesEnabled} from '../../../../selectors/navigation/content/table';\n\nconst getCellPath = ({\n columnName,\n index,\n}: {\n columnName: string;\n index: number;\n}): CellPreviewActionType => {\n return (dispatch, getState) => {\n const path: string = getPath(getState());\n const isDynamic = getIsDynamic(getState());\n\n const action = isDynamic ? getDynamicTableCellPath : getStaticTableCellPath;\n\n return dispatch(action({path, columnName, index}));\n };\n};\n\nconst getCliCommand = ({\n cellPath,\n columnName,\n tag,\n}: {\n cellPath: string;\n columnName: string;\n tag?: string;\n}): CellPreviewActionType => {\n return (_dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const fn = isDynamic ? getDynamicTableCliCommand : getStaticTableCliCommand;\n\n return fn({cellPath, columnName, tag});\n };\n};\n\nconst loadCellPreview = ({\n cellPath,\n useYqlTypes,\n}: {\n cellPath: string;\n useYqlTypes: boolean;\n}): CellPreviewActionType => {\n return (dispatch, getState) => {\n const isDynamic = getIsDynamic(getState());\n\n const output_format: any = getDefaultRequestOutputFormat({\n stringLimit: PREVIEW_LIMIT,\n });\n\n if (useYqlTypes) {\n output_format.$attributes.value_format = 'yql';\n }\n\n const action = isDynamic ? loadDynamicTableCellPreview : loadStaticTableCellPreview;\n\n return dispatch(\n action({\n cellPath,\n output_format,\n cancellation: cellPreviewCancelHelper.removeAllAndSave,\n }),\n );\n };\n};\n\nexport const showCellPreviewModal = (\n columnName: string,\n index: number,\n tag?: string,\n): CellPreviewActionType => {\n return async (dispatch, getState) => {\n const useYqlTypes = isYqlTypesEnabled(getState());\n\n const cellPath = dispatch(getCellPath({columnName, index}));\n\n const ytCliDownloadCommand: string = dispatch(getCliCommand({cellPath, columnName, tag}));\n\n batch(() => {\n dispatch({type: CELL_PREVIEW.REQUEST, data: {ytCliDownloadCommand}});\n dispatch(openCellPreview());\n });\n\n const data: {\n $type?: string;\n $value?: any;\n $tag?: string;\n } = {};\n\n let isIncomplete = false;\n\n try {\n const json = await dispatch(loadCellPreview({cellPath, useYqlTypes}));\n\n const parsed = JSON.parse(json);\n\n const column = parsed.rows[0][columnName];\n\n if (useYqlTypes) {\n const value = column[0];\n const typeIndex = column[1];\n\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$type, $value, $tag} = unipika.converters.yql(\n [value, parsed.yql_type_registry[typeIndex]],\n {\n maxStringSize: undefined,\n maxListSize: undefined,\n treatValAsData: true,\n },\n flags,\n );\n\n isIncomplete = flags.incomplete;\n\n data.$type = $type;\n data.$value = $tag ? $value.$value : $value;\n data.$tag = $tag;\n } else {\n const hasType = column && column.$type;\n\n data.$type = column.$type;\n data.$value = hasType ? column.$value : column;\n\n isIncomplete = column.$incomplete;\n }\n\n const noticeText = isIncomplete\n ? 'Unable to load content more than 16MiB. Please use the command bellow to load it locally.'\n : 'You could use the command bellow to load it locally.';\n\n dispatch({\n type: CELL_PREVIEW.SUCCESS,\n data: {\n data,\n noticeText,\n },\n });\n } catch (error: any) {\n if (!isCancelled(error)) {\n dispatch({type: CELL_PREVIEW.FAILURE, data: {error}});\n }\n }\n };\n};\n","import {RootState} from '../reducers';\n\nexport function getExecuteBatchState(state: RootState) {\n return state.executeBatch;\n}\n\nexport const getApproversSubjectFilter = (state: RootState) => state.aclFilters.approversSubject;\nexport const getObjectSubjectFilter = (state: RootState) => state.aclFilters.objectSubject;\nexport const getObjectPermissionsFilter = (state: RootState) => state.aclFilters.objectPermissions;\nexport const getAclFilterColumns = (state: RootState) => state.aclFilters.columnsFilter;\nexport const getAclFilterColumnGroupName = (state: RootState) =>\n state.aclFilters.columnGroupNameFilter;\nexport const getAclFilterExpandedSubjects = (state: RootState) => state.aclFilters.expandedSubjects;\nexport const getAclCurrentTab = (state: RootState) => state.aclFilters.aclCurrentTab;\n","import {createSelector} from 'reselect';\n\nimport compact_ from 'lodash/compact';\nimport filter_ from 'lodash/filter';\nimport flatten_ from 'lodash/flatten';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport sortBy_ from 'lodash/sortBy';\nimport uniq_ from 'lodash/uniq';\nimport partition_ from 'lodash/partition';\nimport isEqual_ from 'lodash/isEqual';\nimport some_ from 'lodash/some';\n\nimport {calculateLoadingStatus} from '../../utils/utils';\nimport {concatByAnd} from '../../common/hammer/predicate';\nimport {\n getAclFilterColumnGroupName,\n getAclFilterColumns,\n getAclFilterExpandedSubjects,\n getApproversSubjectFilter,\n getObjectPermissionsFilter,\n getObjectSubjectFilter,\n} from './acl-filters';\nimport UIFactory from '../../UIFactory';\nimport {RootState} from '../../store/reducers';\nimport {IdmKindType, PreparedAclSubject} from '../../utils/acl/acl-types';\nimport {YTPermissionTypeUI} from '../../utils/acl/acl-api';\nimport {PreparedRole} from '../../utils/acl';\n\nexport type PreparedAclSubjectColumn = Omit<PreparedAclSubject, 'type'> & {type: 'columns'};\n\nfunction prepareColumnsNames(columnsPermissions: Array<{columns?: Array<string>}>) {\n const columns = map_(columnsPermissions, (permission) => permission.columns);\n\n return compact_(uniq_(flatten_(columns))).sort();\n}\n\nfunction prepareApprovers(\n approvers: Array<PreparedRole> | undefined,\n type: 'read_approver' | 'responsible' | 'auditor',\n) {\n return map_(approvers, (subject) => {\n const extra = {\n type,\n subjects: [subject.value],\n subjectType: subject.type === 'users' ? ('user' as const) : ('group' as const),\n groupInfo:\n subject.type === 'groups'\n ? {name: subject.group_name, url: subject.url, group: undefined}\n : undefined,\n action: undefined,\n };\n return {\n ...subject,\n ...extra,\n };\n });\n}\n\nexport type PreparedApprover = ReturnType<typeof prepareApprovers>[number];\n\nexport const getAllUserPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].userPermissions;\nconst getAllObjectPermissions = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].objectPermissions;\n\nconst getAllObjectPermissionsWithSplittedSubjects = createSelector(\n [getAllObjectPermissions],\n splitSubjects,\n);\n\nexport const getObjectPermissionsTypesList = (idmKind: IdmKindType) => {\n return createSelector(\n [\n getObjectPermissionsFilter,\n (state) => getAllObjectPermissionsWithSplittedSubjects(state, idmKind),\n ],\n (permissionsFilter, items) => {\n const uniquePermisions = new Set<YTPermissionTypeUI>();\n const {permissionTypes} = UIFactory.getAclPermissionsSettings()[idmKind] || {};\n [...permissionTypes, ...permissionsFilter].forEach((permission) =>\n uniquePermisions.add(permission),\n );\n items.forEach((item) => {\n const {permissions} = item;\n permissions?.forEach((permission) => uniquePermisions.add(permission));\n });\n return sortBy_([...uniquePermisions], (permission) => permission);\n },\n );\n};\n\ntype HasSplitted = {\n isSplitted?: boolean;\n subjectIndex?: number;\n};\n\nfunction splitSubjects<T extends {subjects: Array<unknown>}>(items: Array<T>) {\n const res: Array<T & HasSplitted> = [];\n forEach_(items, (item) => {\n const {subjects} = item;\n if (subjects && subjects.length > 1) {\n forEach_(subjects, (subject, index) => {\n res.push({...item, subjects: [subject], isSplitted: true, subjectIndex: index});\n });\n } else {\n res.push(item);\n }\n });\n return res;\n}\n\nfunction subjectFilterPredicate<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(item: T, filter: string) {\n const {subjectType, groupInfo} = item;\n if (subjectType === 'group') {\n return some_(Object.entries(groupInfo ?? {}), ([key, value]) => {\n let str: string | undefined = String(value);\n if (key === 'url') {\n if (str[str.length - 1] === '/') str = str.slice(0, -1);\n str = str.split('/').pop();\n }\n return -1 !== str?.toLowerCase().indexOf(filter);\n });\n }\n const value = String(item.subjects[0] ?? '');\n return -1 !== value.toLowerCase().indexOf(filter);\n}\n\nfunction FilterBySubject<\n T extends {subjectType?: unknown; groupInfo?: unknown; subjects: Array<unknown>},\n>(items: Array<T>, subjectFilter?: string) {\n if (!subjectFilter) return items;\n const lowerNameFilter = subjectFilter.toLowerCase();\n return filter_(items, (item) => subjectFilterPredicate(item, lowerNameFilter));\n}\n\nconst permissionsFilterPredicate = (item: PreparedAclSubject, filter: Set<YTPermissionTypeUI>) => {\n const {permissions} = item;\n let foundCount = 0;\n return permissions?.some((p) => {\n if (filter.has(p)) {\n foundCount++;\n }\n return foundCount >= filter.size;\n });\n};\n\ntype ObjectPermissionsRow = PreparedAclSubject & HasSplitted;\n\nexport const getAllObjectPermissionsFiltered = createSelector(\n [\n getAllObjectPermissionsWithSplittedSubjects,\n getObjectSubjectFilter,\n getObjectPermissionsFilter,\n getAclFilterColumns,\n ],\n (items, subjectFilter, permissionsFilter, columns) => {\n const [mainPermissions, columnPermissions] = partition_(\n items,\n (item) => !item.columns?.length,\n );\n\n const withColumns = columnPermissions.map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n\n const lowerNameFilter = subjectFilter?.toLocaleLowerCase();\n const filterBySubject = lowerNameFilter\n ? (item: ObjectPermissionsRow) => subjectFilterPredicate(item, lowerNameFilter)\n : undefined;\n\n const permissionsFilterSet = new Set<YTPermissionTypeUI>(permissionsFilter);\n const filterByPermissions = permissionsFilterSet.size\n ? (item: ObjectPermissionsRow) =>\n permissionsFilterPredicate(item, permissionsFilterSet) ?? false\n : undefined;\n\n const visibleColumns = new Set(columns);\n const filterByColumns = visibleColumns.size\n ? ({columns}: ObjectPermissionsRow) => {\n return columns?.some((colName) => visibleColumns.has(colName)) ?? false;\n }\n : undefined;\n\n const mainPredicates = compact_([filterBySubject, filterByPermissions]);\n const columnsPredicates = compact_([filterBySubject, filterByColumns]);\n return {\n mainPermissions: mainPredicates.length\n ? mainPermissions.filter(concatByAnd(...mainPredicates))\n : mainPermissions,\n columnsPermissions: columnsPredicates.length\n ? withColumns.filter(concatByAnd(...columnsPredicates))\n : withColumns,\n };\n },\n);\n\nexport const getObjectPermissionsAggregated = createSelector(\n [getAllObjectPermissionsFiltered, getAclFilterExpandedSubjects],\n ({mainPermissions, columnsPermissions}, expandedSubjects) => {\n return {\n mainPermissions: {\n ...aggregateBySubject(mainPermissions, expandedSubjects),\n count: mainPermissions.length,\n },\n columnsPermissions: {\n ...aggregateBySubject(columnsPermissions, expandedSubjects),\n count: columnsPermissions.length,\n },\n };\n },\n);\n\nclass AggregateBySubject {\n aggrKey: string;\n subject: ObjectPermissionsRow['subjects'][number];\n inherited: boolean;\n\n allPermissions = new Set<YTPermissionTypeUI>();\n columns = new Set<string>();\n first: ObjectPermissionsRow;\n children = new Array<ObjectPermissionsRow & {expanded?: boolean; level?: number}>();\n\n constructor(first: AggregateBySubject['first']) {\n if (first.subjects.length > 1) {\n throw new Error(\n `Unexpected behavior: more than one subject occured: ${first.subjects.join(',')}`,\n );\n }\n\n this.aggrKey = aggregationKey(first);\n this.inherited = Boolean(first.inherited);\n this.subject = first.subjects[0];\n this.first = {...first};\n this.add(first);\n }\n\n add(item: ObjectPermissionsRow) {\n const aggrKey = aggregationKey(item);\n if (this.aggrKey !== aggrKey) {\n throw new Error(\n `Unexpected behavior: aggregation keys are not queal: ${this.aggrKey} !== ${aggrKey}`,\n );\n }\n\n if (item.subjects.length !== 1) {\n throw new Error(\n `Unexpected behavior: item.subjects.length !== 1: ${JSON.stringify(item)}`,\n );\n }\n\n const child = {...item, permissions: [...(item.permissions ?? [])]};\n this.children.push(child);\n\n child.permissions?.sort();\n child.permissions?.forEach((p) => {\n this.allPermissions.add(p);\n });\n item.columns?.forEach((column) => this.columns.add(column));\n\n this.first.isMissing ||= Boolean(item.isMissing);\n this.first.isUnrecognized ||= Boolean(item.isUnrecognized);\n this.first.isApproved ||= Boolean(item.isApproved);\n this.first.isRequested ||= Boolean(item.isRequested);\n }\n\n getItems(expanded: boolean): {\n items: AggregateBySubject['children'];\n hasExpandable?: boolean;\n hasDenyAction?: boolean;\n hasInherited?: boolean;\n } {\n const hasInherited = this.inherited;\n if (this.children.length === 1) {\n return {items: this.children, hasInherited};\n }\n\n const first: typeof this.first & {level?: number; expanded?: boolean} = {\n ...this.first,\n level: 0,\n expanded,\n };\n first.permissions = [...this.allPermissions].sort();\n first.columns = [...this.columns].sort();\n\n let hasDenyAction = false;\n const items = !expanded\n ? [first]\n : [\n first,\n ...sortBy_(this.children, ['inheritance_mode', 'permissions']).map((i) => {\n hasDenyAction ||= i.action === 'deny';\n return {...i, level: 1};\n }),\n ];\n\n this.children.forEach((i) => {\n if (i.inheritance_mode !== first.inheritance_mode) {\n first.inheritance_mode = undefined;\n }\n if (!isEqual_(this.first.inheritedFrom, i.inheritedFrom)) {\n first.inheritedFrom = undefined;\n }\n });\n\n return {items, hasExpandable: true, hasDenyAction, hasInherited};\n }\n}\n\nexport type ObjectPermissionRowWithExpand = AggregateBySubject['children'][number];\n\nfunction aggregationKey(item: ObjectPermissionsRow) {\n const {\n inherited,\n subjects: [subject],\n } = item;\n return `subject:${subject}_inherited:${Boolean(inherited)}`;\n}\n\nfunction aggregateBySubject(\n objPermissions: Array<ObjectPermissionsRow>,\n expandedSubjects: Set<string | number>,\n) {\n const aggregated: Record<string, AggregateBySubject> = {};\n\n objPermissions.forEach((item) => {\n const aggKey = aggregationKey(item);\n const dst = aggregated[aggKey];\n if (!dst) {\n aggregated[aggKey] = new AggregateBySubject(item);\n } else {\n dst.add(item);\n }\n });\n\n const res = Object.values(aggregated).reduce(\n (acc, item) => {\n const {items, hasExpandable, hasInherited} = item.getItems(\n expandedSubjects.has(item.subject),\n );\n acc.items = acc.items.concat(items);\n acc.hasExpandable ||= hasExpandable;\n acc.hasInherited ||= hasInherited;\n return acc;\n },\n {items: []} as ReturnType<AggregateBySubject['getItems']>,\n );\n\n const [inherited, other] = partition_(res.items, (item) => item.inherited);\n\n return {\n ...res,\n items: [...inherited, ...other],\n };\n}\n\nexport const getAllObjectPermissionsOrderedByStatus = createSelector(\n [getAllObjectPermissions],\n OrderByRoleStatus,\n);\nexport const getAllColumnGroups = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].columnGroups;\nexport const getAllColumnGroupsActual = createSelector(\n [getAllColumnGroups, getAclFilterColumns, getAclFilterColumnGroupName],\n (items, columnsFilter, nameFilter) => {\n const visibleColumns = new Set(columnsFilter);\n type ItemType = (typeof items)[number];\n const nameFilterLower = nameFilter?.toLowerCase();\n const predicates = compact_([\n (item: ItemType) => {\n return !item.removed;\n },\n visibleColumns.size > 0\n ? (item: ItemType) => {\n return item.columns?.some((name) => visibleColumns.has(name)) ?? false;\n }\n : undefined,\n nameFilterLower?.length\n ? (item: ItemType) =>\n -1 !== item.name?.toLowerCase().indexOf(nameFilterLower) ?? false\n : undefined,\n ]);\n const filtered = filter_(items, concatByAnd(...predicates)).map((item) => {\n return {...item, columns: sortBy_(item.columns)};\n });\n return sortBy_(filtered, ['name']);\n },\n);\n\nfunction OrderByRoleStatus<\n T extends {\n isDepriving?: boolean;\n isRequested?: boolean;\n isUnrecognized?: boolean;\n isApproved?: boolean;\n },\n>(items: Array<T>) {\n const unrecognized: typeof items = [];\n const requested: typeof items = [];\n const depriving: typeof items = [];\n const rest: typeof items = [];\n forEach_(items, (item) => {\n const {isDepriving, isRequested, isUnrecognized, isApproved} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n depriving.push(item);\n } else if (isRequested || isApproved) {\n requested.push(item);\n } else {\n rest.push(item);\n }\n });\n return [...requested, ...depriving, ...unrecognized, ...rest];\n}\n\nfunction OrderByInheritanceAndSubject<T extends {inherited?: boolean; subjects: Array<unknown>}>(\n items: Array<T>,\n) {\n const res = sortBy_(items, [\n (item) => !item.inherited,\n (item) => (item.subjects && item.subjects[0]) || true,\n ]);\n return res;\n}\n\nconst getReadApprovers = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].readApprovers;\nconst getResponsibles = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].responsible;\nconst getAuditors = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].auditors;\n\nexport const getNotInheritedReadApprovers = createSelector([getReadApprovers], (readApprovers) =>\n filter_(readApprovers, (readApprover) => !readApprover.inherited),\n);\nexport const getNotInheritedResponsibles = createSelector([getResponsibles], (responsibles) =>\n filter_(responsibles, (responsible) => !responsible.inherited),\n);\nexport const getNotInheritedAuditors = createSelector([getAuditors], (auditros) =>\n filter_(auditros, (auditro) => !auditro.inherited),\n);\n\nconst getAllApprovers = createSelector(\n [getReadApprovers, getResponsibles, getAuditors],\n (readApprovers, responsibles, auditros) => {\n return [\n ...prepareApprovers(readApprovers, 'read_approver'),\n ...prepareApprovers(responsibles, 'responsible'),\n ...prepareApprovers(auditros, 'auditor'),\n ];\n },\n);\n\nexport const getHasApprovers = createSelector([getAllApprovers], (items) => items.length > 0);\n\nexport const getApproversFiltered = createSelector(\n [getAllApprovers, getApproversSubjectFilter],\n FilterBySubject,\n);\n\nexport const getApproversFilteredAndOrdered = createSelector(\n [getApproversFiltered],\n OrderByInheritanceAndSubject,\n);\n\nexport const getApprovers = createSelector([getAllApprovers], OrderByRoleStatus);\n\nexport const getAllAccessColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'allow' && permission.columns?.length! > 0,\n );\n\n return map_(filteredPermissions, (item) => {\n const tmp: typeof item = {...item};\n tmp.type = 'columns';\n return tmp;\n });\n },\n);\n\nconst getAllDenyColumnsPermissions = createSelector(\n [getAllObjectPermissions],\n (objectPermissions) => {\n const filteredPermissions = filter_(\n objectPermissions,\n (permission) => permission.action === 'deny' && permission.columns?.length! > 0,\n );\n\n return map_(\n filteredPermissions,\n (permission) =>\n ({\n ...permission,\n type: 'columns',\n }) as PreparedAclSubjectColumn,\n );\n },\n);\n\nexport const getAllAccessColumnsNames = createSelector(\n [getAllAccessColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getAllDenyColumnsNames = createSelector(\n [getAllDenyColumnsPermissions],\n prepareColumnsNames,\n);\n\nexport const getDenyColumnsItems = createSelector([getAllDenyColumnsNames], (names) =>\n map_(names, (name) => ({key: name, value: name, title: name})),\n);\n\nexport const isPermissionDeleted = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].isPermissionDeleted;\nexport const permissionDeletionError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletionError;\nexport const getLastDeletedPermissionKey = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].deletedItemKey;\nexport const getIdmPermissionsRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmPermissionsRequestError;\nexport const getIdmManageAclRequestError = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].idmManageAclRequestError;\nexport const getIdmPathVersion = (state: RootState, idmKind: IdmKindType) =>\n state.acl[idmKind].version;\n\nconst getAclLoading = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loading;\nconst getAclLoaded = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].loaded;\nconst getAclError = (state: RootState, idmKind: IdmKindType) => state.acl[idmKind].error;\n\nexport const getAclLoadState = createSelector(\n [getAclLoading, getAclLoaded, getAclError],\n (loading, loaded, error) => {\n return calculateLoadingStatus(loading, loaded, error);\n },\n);\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport uniq_ from 'lodash/uniq';\n\nimport {createSelector} from 'reselect';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\nimport type {RootState} from '../../../store/reducers';\nimport type {ChaosBundle, ChaosCell} from '../../../store/reducers/chaos_cell_bundles';\nimport {getCluster} from '../../../store/selectors/global';\nimport {\n aggregateTotal,\n tabletActiveChaosBundleLink,\n tabletChaosBundleRootLink,\n} from '../../../utils/components/tablet-cells';\nimport {prepareHost} from '../../../utils';\nimport {sortArrayBySortState} from '../../../utils/sort-helpers';\nimport {sortTableBundles} from '../../../utils/tablet_cell_bundles';\n\nexport const getChaosIsLoaded = (state: RootState) => state.chaos_cell_bundles.loaded;\nexport const getChaosIsLoading = (state: RootState) => state.chaos_cell_bundles.loading;\nexport const getChaosError = (state: RootState) => state.chaos_cell_bundles.error;\n\nexport const getChaosBundlesSortState = (state: RootState) => state.chaos_cell_bundles.bundlesSort;\n\nexport const getChaosBundlesNameFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesNameFilter;\nexport const getChaosBundlesAccountFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesAccountFilter;\nexport const getChaosBundlesTagNodeFilter = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTagNodeFilter;\n\nexport const getChaosBundles = (state: RootState) => state.chaos_cell_bundles.bundles;\n\nexport const getChaosActiveBundle = (state: RootState) => state.chaos_cell_bundles.activeBundle;\n\nexport const getChaosBundlesTableMode = (state: RootState) =>\n state.chaos_cell_bundles.bundlesTableMode;\n\nexport const getChaosActiveBundleData = createSelector(\n [getChaosBundles, getChaosActiveBundle],\n (bundles, activeBundle) => {\n return find_(bundles, (item) => item.bundle === activeBundle);\n },\n);\n\nexport const getChaosBundlesTotal = createSelector(\n [getChaosBundles],\n (bundles): ChaosBundle => aggregateTotal(bundles),\n);\n\nconst COLUMNS_SORTABLE_AS_IS = new Set<keyof ChaosBundle>([\n 'bundle',\n 'health',\n 'tabletCells',\n 'tablets',\n 'uncompressed',\n 'compressed',\n 'enable_bundle_balancer',\n 'node_tag_filter',\n 'memory',\n 'tablet_count',\n 'tablet_count_limit',\n 'tablet_count_free',\n 'tablet_count_percentage',\n 'tablet_static_memory',\n 'tablet_static_memory_limit',\n 'tablet_static_memory_free',\n 'tablet_static_memory_percentage',\n]);\n\nexport const getChaosBundlesFiltered = createSelector(\n [\n getChaosBundles,\n getChaosBundlesNameFilter,\n getChaosBundlesAccountFilter,\n getChaosBundlesTagNodeFilter,\n ],\n (bundles, nameFilter, accountFilter, tagNodeFilter) => {\n const predicates: Array<(item: ChaosBundle) => boolean> = [];\n if (nameFilter) {\n const lowerNameFilter = nameFilter.toLowerCase();\n predicates.push((item) => {\n return -1 !== item.bundle.toLowerCase().indexOf(lowerNameFilter);\n });\n }\n\n if (accountFilter) {\n const lowerAccountFilter = accountFilter.toLowerCase();\n predicates.push((item) => {\n const {changelog_account, snapshot_account} = item;\n return (\n (Boolean(changelog_account) &&\n -1 !== changelog_account.toLowerCase().indexOf(lowerAccountFilter)) ||\n (Boolean(snapshot_account) &&\n -1 !== snapshot_account.toLowerCase().indexOf(lowerAccountFilter))\n );\n });\n }\n\n if (tagNodeFilter) {\n const lowerTagNodeFilter = tagNodeFilter.toLowerCase();\n predicates.push((item) => {\n const {node_tag_filter} = item;\n return (\n Boolean(node_tag_filter) &&\n -1 !== node_tag_filter.toLowerCase().indexOf(lowerTagNodeFilter)\n );\n });\n }\n\n return !predicates.length ? bundles : filter_(bundles, concatByAnd(...predicates));\n },\n);\n\nexport const getChaosBundlesSorted = createSelector(\n [getChaosBundlesFiltered, getChaosBundlesSortState],\n (bundles, {column, order}) => {\n if (!column || !order) {\n return bundles;\n }\n\n return sortTableBundles({bundles, column, order, columnsSortable: COLUMNS_SORTABLE_AS_IS});\n },\n);\n\nexport const getChaosCells = (state: RootState) => state.chaos_cell_bundles.cells;\nexport const getChaosCellsSortState = (state: RootState) => state.chaos_cell_bundles.cellsSort;\n\nexport const getChaosCellsIdFilter = (state: RootState) => state.chaos_cell_bundles.cellsIdFilter;\nexport const getChaosCellsBundleFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsBundleFilter;\nexport const getChaosCellsHostFilter = (state: RootState) =>\n state.chaos_cell_bundles.cellsHostFilter;\n\nexport const getChaosCellsOfActiveAccount = createSelector(\n [getChaosCells, getChaosActiveBundle],\n (cells, activeBundle) => {\n if (!activeBundle) {\n return cells;\n }\n\n return filter_(cells, (item) => {\n return Boolean(item.bundle) && activeBundle === item.bundle;\n });\n },\n);\n\nexport const getChaosCellsFiltered = createSelector(\n [\n getChaosCellsOfActiveAccount,\n getChaosCellsIdFilter,\n getChaosCellsBundleFilter,\n getChaosCellsHostFilter,\n getChaosActiveBundle,\n ],\n (cells, idFilter, bundleFilter, hostFilter) => {\n const predicates: Array<(item: ChaosCell) => boolean> = [];\n if (idFilter) {\n predicates.push((item) => {\n return -1 !== item.id.indexOf(idFilter);\n });\n }\n\n if (bundleFilter) {\n predicates.push((item) => {\n return Boolean(item.bundle) && -1 !== item.bundle.indexOf(bundleFilter);\n });\n }\n\n if (hostFilter) {\n predicates.push((item) => {\n return Boolean(item.peerAddress) && -1 !== item.peerAddress.indexOf(hostFilter);\n });\n }\n return !predicates.length ? cells : filter_(cells, concatByAnd(...predicates));\n },\n);\n\nexport function filterChaosCellsByBundle(bundle: string, cells: Array<ChaosCell>) {\n if (!bundle) {\n return [];\n }\n\n return filter_(cells, (item) => item.bundle === bundle);\n}\n\nexport const getChaosCellsSorted = createSelector(\n [getChaosCellsFiltered, getChaosCellsSortState],\n (cells, sortState) => {\n return sortArrayBySortState(cells, sortState);\n },\n);\n\nexport const getChaosCellsBundles = createSelector([getChaosCells], (cells) => {\n return uniq_(map_(cells, 'bundle')).sort();\n});\n\nexport const getChaosCellsHosts = createSelector([getChaosCellsOfActiveAccount], (cells) => {\n return uniq_(map_(cells, 'peerAddress')).sort();\n});\n\nexport const getChaosCellsHostsOfActiveBundle = createSelector(\n [getChaosActiveBundle, getChaosCellsFiltered],\n (activeBundle: string, cells: Array<ChaosCell>) => {\n if (!activeBundle) {\n return '';\n }\n return prepareHostsFromCells(cells);\n },\n);\n\nexport function prepareHostsFromCells(cells: Array<ChaosCell>) {\n return uniq_(map_(cells, ({peerAddress}) => prepareHost(peerAddress)).filter(Boolean))\n .sort()\n .join('|');\n}\n\nexport interface ChaosCellBundlesBreadcrumbsItem {\n text: string;\n href: string;\n title?: string;\n}\n\nexport const getChaosBreadcrumbItems = createSelector(\n [getCluster, getChaosActiveBundle],\n (cluster, activeBundle): Array<ChaosCellBundlesBreadcrumbsItem> => {\n const res: Array<ChaosCellBundlesBreadcrumbsItem> = [\n {\n text: '',\n href: tabletChaosBundleRootLink(cluster),\n title: '<bundles>',\n },\n ];\n\n if (activeBundle) {\n res.push({\n text: activeBundle,\n href: tabletActiveChaosBundleLink(cluster, activeBundle),\n });\n }\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\nimport uniq_ from 'lodash/uniq';\nimport compact_ from 'lodash/compact';\n\nimport {concatByAnd} from '../../../common/hammer/predicate';\n\nimport {RootState} from '../../../store/reducers';\nimport {ChytInfo} from '../../../store/reducers/chyt/list';\nimport {SortState} from '../../../types';\nimport {multiSortBySortStateArray} from '../../../utils/sort-helpers';\nimport {StrawberryListAttributes} from '../../../utils/strawberryControllerApi';\nimport {getSettingsData} from '../../../store/selectors/settings/settings-base';\n\nexport const getChytListData = (state: RootState) => state.chyt.list.data;\n\nexport const getChytListAvailableCreators = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.creator!)).sort();\n});\n\nexport const getChytListAvailableHealths = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return compact_(uniq_(items.map((item) => item.health)).sort());\n});\n\nexport const getChytListAvailableStates = createSelector([getChytListData], (data) => {\n const {items = []} = data;\n return uniq_(items.map((item) => item.state!)).sort();\n});\n\nexport const getChytCurrentAlias = (state: RootState) => state.chyt.clique.currentClique;\n\nexport const getChytListFilterAlias = (state: RootState) => state.chyt.listFilters.name;\nexport const getChytListFilterHealth = (state: RootState) => state.chyt.listFilters.health;\nexport const getChytListFilterCreator = (state: RootState) => state.chyt.listFilters.creator;\nexport const getChytListFilterState = (state: RootState) => state.chyt.listFilters.state;\n\ntype ChytListColumns = Exclude<StrawberryListAttributes, 'yt_operation_id'>;\nconst CHYT_LIST_SELECTABLE_COLUMNS: Record<Exclude<ChytListColumns, 'health_reason'>, true> = {\n instance_count: true,\n total_cpu: true,\n total_memory: true,\n creation_time: true,\n stage: true,\n yt_operation_start_time: true,\n yt_operation_finish_time: true,\n speclet_modification_time: true,\n strawberry_state_modification_time: true,\n pool: true,\n health: true,\n creator: true,\n state: true,\n};\n\nexport type ChytSelectableColumn = keyof typeof CHYT_LIST_SELECTABLE_COLUMNS;\n\ntype ChytColumnItem = {checked: boolean; column: ChytListColumns};\n\nexport const getChytListColumnsFromSettings = (state: RootState) => {\n return (\n getSettingsData(state)['global::chyt::list_columns'] ??\n ([\n 'health',\n 'state',\n 'instance_count',\n 'total_cpu',\n 'total_memory',\n 'creator',\n 'creation_time',\n ] as const)\n );\n};\n\nexport const getChytListVisibleColumns = createSelector(\n [getChytListColumnsFromSettings],\n (columns): Array<ChytSelectableColumn> => {\n const userColumns = new Set(columns);\n return compact_(\n columns.map((k) => {\n return CHYT_LIST_SELECTABLE_COLUMNS[\n k as keyof typeof CHYT_LIST_SELECTABLE_COLUMNS\n ] && userColumns.has(k)\n ? (k as ChytSelectableColumn)\n : null;\n }),\n );\n },\n);\n\nexport const getChytListColumns = createSelector(\n [getChytListVisibleColumns],\n (columns): Array<ChytColumnItem> => {\n const userColumns = new Set(columns);\n const res = columns.map((column) => {\n return {checked: true, column};\n });\n\n Object.keys(CHYT_LIST_SELECTABLE_COLUMNS).forEach((k) => {\n const column = k as ChytSelectableColumn;\n if (!userColumns.has(column)) {\n res.push({checked: false, column});\n }\n });\n\n return res;\n },\n);\n\nexport const getChytListTableSortState = (state: RootState) => state.chyt.listFilters.sortState;\n\nexport const getChytListTableSortStateByName = createSelector(\n [getChytListTableSortState],\n (sortState) => {\n return sortState.reduce(\n (acc, item, index) => {\n if (item.column) {\n acc[item.column] = {\n ...item,\n multisortIndex: sortState.length > 1 ? index + 1 : undefined,\n };\n }\n return acc;\n },\n {} as Record<keyof ChytInfo, SortState<keyof ChytInfo> & {multisortIndex?: number}>,\n );\n },\n);\n\nconst getChytFilterPredicate = createSelector(\n [\n getChytListFilterAlias,\n getChytListFilterCreator,\n getChytListFilterState,\n getChytListFilterHealth,\n ],\n (alias, creator, state, health) => {\n const predicates = compact_([\n alias ? (item: ChytInfo) => -1 !== item.alias.indexOf(alias) : undefined,\n creator !== undefined ? (item: ChytInfo) => creator === item.creator : undefined,\n state ? (item: ChytInfo) => state === item.state : undefined,\n health ? (item: ChytInfo) => health === item.health : undefined,\n ]);\n\n return predicates.length ? concatByAnd(...predicates) : undefined;\n },\n);\n\nexport const getChytListTableItems = createSelector(\n [getChytListData, getChytListTableSortState, getChytFilterPredicate],\n (data, sortState, predicate) => {\n const {items = []} = data;\n\n const filteredItems = !predicate ? items : items.filter(predicate);\n\n const sortedItems = multiSortBySortStateArray(filteredItems, sortState);\n\n return sortedItems;\n },\n);\n","import find_ from 'lodash/find';\nimport sortBy_ from 'lodash/sortBy';\n\nimport {createSelector} from 'reselect';\n\nimport {\n getAccountsNS,\n getBundlesNS,\n getChaosBundlesNS,\n getChytNS,\n getClusterNS,\n getSchedulingNS,\n makeGetSetting,\n} from '../../store/selectors/settings';\nimport {SettingName} from '../../../shared/constants/settings';\nimport {getActiveAccount} from '../../store/selectors/accounts/accounts';\nimport {getPath} from '../../store/selectors/navigation';\nimport {getPool, getTree} from '../../store/selectors/scheduling/scheduling';\nimport {getTabletsActiveBundle} from './tablet_cell_bundles';\nimport {getChaosActiveBundle} from './chaos_cell_bundles';\nimport {getChytCurrentAlias} from './chyt';\n\n//************* Selectors for Accounts *****************\n\nexport const getFavouriteAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareFavourites,\n);\n\nexport const getLastVisitedAccounts = createSelector(\n [makeGetSetting, getAccountsNS],\n prepareLastVisited,\n);\n\nexport const getPopularAccounts = createSelector([getLastVisitedAccounts], preparePopulars);\n\nexport const isActiveAcountInFavourites = createSelector(\n [getActiveAccount, getFavouriteAccounts],\n prepareIsInFavourites,\n);\n\nexport const getFavouriteChyt = createSelector([makeGetSetting, getChytNS], prepareFavourites);\n\nexport const getLastVisitedChyt = createSelector([makeGetSetting, getChytNS], prepareLastVisited);\n\nexport const getPopularChyt = createSelector([getLastVisitedChyt], preparePopulars);\n\nexport const isActiveCliqueInFavourites = createSelector(\n [getChytCurrentAlias, getFavouriteChyt],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Navigation *****************\n\nexport const getFavouritePaths = createSelector([makeGetSetting, getClusterNS], prepareFavourites);\n\nexport const getLastVisitedPaths = createSelector(\n [makeGetSetting, getClusterNS],\n prepareLastVisited,\n);\n\nexport const getPopularPaths = createSelector([getLastVisitedPaths], preparePopulars);\n\nexport const isCurrentPathInFavourites = createSelector(\n [getPath, getFavouritePaths],\n prepareIsInFavourites,\n);\n\n//************* Selectors for Scheduling *****************\n\nexport const getFavouritePools = createSelector(\n [makeGetSetting, getSchedulingNS],\n prepareFavourites,\n);\n\nexport const isActivePoolInFavourites = createSelector(\n [getPool, getTree, getFavouritePools],\n prepareIsPoolInFavourites,\n);\n\n//************* Selectors for Bundles *****************\n\nexport const getFavouriteBundles = createSelector(\n [makeGetSetting, getBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveBundleInFavourites = createSelector(\n [getTabletsActiveBundle, getFavouriteBundles],\n prepareIsInFavourites,\n);\n\n// ************ Selectors for Chaos bundles ***********\n\nexport const getFavouriteChaosBundles = createSelector(\n [makeGetSetting, getChaosBundlesNS],\n prepareFavourites,\n);\n\nexport const isActiveChaosBundleInFavourites = createSelector(\n [getChaosActiveBundle, getFavouriteChaosBundles],\n prepareIsInFavourites,\n);\n\n//********************** Helpers *************************\n\nfunction prepareFavourites(getSetting, parentNS) {\n const items = getSetting(SettingName.LOCAL.FAVOURITES, parentNS);\n return sortBy_(items, 'path');\n}\n\nfunction prepareLastVisited(settingGetter, parentNS) {\n return settingGetter(SettingName.LOCAL.LAST_VISITED, parentNS) || [];\n}\n\nfunction preparePopulars(lastVisited) {\n return sortBy_(lastVisited, (entry) => -entry.count);\n}\n\nfunction prepareIsInFavourites(value, favourites) {\n return Boolean(find_(favourites, ({path}) => path === value));\n}\n\nfunction prepareIsPoolInFavourites(pool, tree, favourites) {\n return Boolean(find_(favourites, ({path}) => path === `${pool}[${tree}]`));\n}\n","import {createSelector} from 'reselect';\nimport ypath from '@ytsaurus/interface-helpers/lib/ypath';\n\nimport {NAVIGATION_MAP_NODE_TABLE_ID} from '../../../constants/navigation/index';\nimport {getNavigationDefaultPath} from '../../../store/selectors/settings';\nimport {isFinalLoadingStatus} from '../../../utils/utils';\n\nexport const getTransaction = (state) => state.navigation.navigation.transaction;\nexport const getAttributes = (state) => state.navigation.navigation.attributes;\nexport const getAttributesWithTypes = (state) => state.navigation.navigation.attributesWithTypes;\nexport const getLoadState = (state) => state.navigation.navigation.loadState;\nexport const getError = (state) => state.navigation.navigation.error;\nexport const getRawPath = (state) => state.navigation.navigation.path;\nexport const getIdmSupport = (state) => state.navigation.navigation.isIdmSupported;\nexport const getSortState = (state) => state.tables[NAVIGATION_MAP_NODE_TABLE_ID];\n\nexport const getType = createSelector(getAttributes, (attributes) => attributes?.type);\n\nexport const getPath = createSelector(\n [getRawPath, getNavigationDefaultPath],\n (rawPath, defaultPath) => rawPath || defaultPath,\n);\n\nexport const getAttributesPath = createSelector(\n [getAttributes, getPath],\n (attributes, navigationPath) => attributes?.path || navigationPath,\n);\n\nexport const isNavigationFinalLoadState = createSelector([getLoadState], (state) => {\n return isFinalLoadingStatus(state);\n});\n\nexport const getParsedPath = createSelector(getPath, (path) => {\n try {\n return ypath.YPath.create(path, 'absolute');\n } catch (ex) {\n console.error(ex);\n }\n});\nexport const getActualPath = createSelector([getPath, getType], (path, type) => {\n return type === 'map_node' ? path + '/' : path;\n});\n\nexport const checkIsTrash = createSelector(\n [getPath],\n (path) => path.startsWith('//tmp/trash') || path.startsWith('//trash'),\n);\n","import {createSelector} from 'reselect';\nimport reduce_ from 'lodash/reduce';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../reducers';\nimport {getSchedulingPoolsMapByName} from './scheduling-pools';\n\nexport const getSchedulingAbcFilter = (state: RootState) =>\n state.scheduling.scheduling.abcServiceFilter;\n\nexport const getSchedulingAttributesToFilter = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilter;\nexport const getSchedulingAttributesToFilterParams = (state: RootState) =>\n state.scheduling.scheduling.attributesToFilterParams;\n\nexport const schedulingOverviewHasFilter = (state: RootState) => {\n const abcFilter = getSchedulingAbcFilter(state);\n\n return abcFilter?.id !== undefined;\n};\n\nexport const getSchedulingFilteredPoolNames = createSelector(\n [getSchedulingAttributesToFilter, getSchedulingPoolsMapByName, getSchedulingAbcFilter],\n (attrsToFilter, loadedPools, abcFilter) => {\n if (!attrsToFilter) {\n return undefined;\n }\n\n if (abcFilter?.id === undefined) {\n return undefined;\n }\n\n const res = reduce_(\n attrsToFilter,\n (acc, attrs, key) => {\n if (attrs.abc?.id !== abcFilter?.id) {\n return acc;\n }\n\n acc.add(key);\n return acc;\n },\n new Set<string>(),\n );\n\n forEach_([...res], (poolName) => {\n let name = poolName;\n let item = attrsToFilter[name];\n while (item?.parent && !loadedPools[name]) {\n res.add(item.parent);\n\n name = item.parent;\n item = attrsToFilter[item.parent];\n }\n });\n\n return res;\n },\n);\n","import {createSelector} from 'reselect';\n\nimport {RootState} from '../../reducers';\n\nexport const getExpandedPoolCypressData = (state: RootState) =>\n state.scheduling.expandedPools.flattenCypressData;\n\nexport const getSchedulingOperations = (state: RootState) =>\n state.scheduling.expandedPools.rawOperations;\nexport const getExpandedPoolsTree = (state: RootState) =>\n state.scheduling.expandedPools.expandedPoolsTree;\nexport const getSchedulingOperationsError = (state: RootState) =>\n state.scheduling.expandedPools.error;\nexport const getSchedulingOperationsLoading = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsLoaded = (state: RootState) =>\n state.scheduling.expandedPools.loading;\nexport const getSchedulingOperationsExpandedPools = (state: RootState) =>\n state.scheduling.expandedPools.expandedPools;\nexport const getExpandedPoolsLoadAll = (state: RootState) => state.scheduling.expandedPools.loadAll;\n\nexport const getSchedulingOperationsLoadingStatus = createSelector(\n [getSchedulingOperationsLoading, getSchedulingOperationsLoaded],\n (loading, loaded) => {\n return loading && !loaded;\n },\n);\n","import map_ from 'lodash/map';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport {appendInnerErrors} from '../errors';\n\nconst RESOURCE_LIMIT_MAPPER = {\n user_memory: 'memory',\n};\n\nfunction preparePoolChildResource(data, type, treeResources, resource) {\n const attributes = data.attributes;\n\n if (data.name === ROOT_POOL_NAME) {\n data.resources[resource] = {\n guaranteed: ypath.getNumber(treeResources, '/resource_limits/' + resource),\n usage: ypath.getNumber(treeResources, '/resource_usage/' + resource),\n };\n } else {\n const min = ypath.getNumber(attributes, '/strong_guarantee_resources/' + resource);\n const usage = ypath.getNumber(attributes, '/resource_usage/' + resource);\n const demand = ypath.getNumber(attributes, '/resource_demand/' + resource);\n const guaranteed = ypath.getNumber(\n attributes,\n '/promised_fair_share_resources/' + resource,\n );\n\n const limitResource = RESOURCE_LIMIT_MAPPER[resource] || resource;\n const limit = ypath.getNumber(data.cypressAttributes, '/resource_limits/' + limitResource);\n\n const treeLimit = ypath.getNumber(treeResources, '/resource_limits/' + resource);\n const detailed =\n treeLimit * ypath.getNumber(attributes, '/detailed_fair_share/total/' + limitResource);\n\n data.resources[resource] = {\n min,\n guaranteed,\n usage,\n demand,\n limit,\n detailed,\n };\n }\n\n return data;\n}\n\nexport function updatePoolChild(data, cypressData, type, treeResources) {\n try {\n const attributes = data.attributes;\n const cypressAttributes = ypath.getAttributes(cypressData);\n\n data.cypressAttributes = cypressAttributes;\n data.type = type;\n\n if (data.type === 'pool') {\n if (typeof attributes === 'undefined' && data.parent) {\n console.error(\n 'Pool \"%s\" without attributes inited by \"%s\"',\n data.name,\n data._initedBy,\n );\n }\n\n data.mode = ypath.getValue(attributes, '/mode');\n\n data.leaves = map_(data.leaves, (leaf) => {\n return updatePoolChild(leaf, {}, 'operation', treeResources);\n });\n\n const child_pool_count = ypath.getNumber(attributes, '/child_pool_count');\n if (child_pool_count > 0 && !data.children.length) {\n for (let i = 0; i < child_pool_count; ++i) {\n data.children.push({\n parent: data.name,\n type: 'pool',\n name: `#key_${data.name}_${i}`,\n attributes: {},\n leaves: [],\n incomplete: true,\n });\n }\n }\n\n if (!data.leaves?.length) {\n data.pool_operation_count = ypath.getNumber(\n attributes,\n '/pool_operation_count',\n NaN,\n );\n if (data.pool_operation_count > 0) {\n const emptyOp = updatePoolChild(\n {attributes: {}},\n {},\n 'operation',\n treeResources,\n );\n data.leaves = [];\n for (let i = 0; i < data.pool_operation_count; ++i) {\n data.leaves.push({\n ...emptyOp,\n name: `##fake_operation_${data.name}_${i}`,\n });\n }\n }\n }\n\n // Operations\n data.operationCount = ypath.getNumber(attributes, '/operation_count');\n data.maxOperationCount = ypath.getNumber(attributes, '/max_operation_count');\n data.maxOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_operation_count',\n );\n data.runningOperationCount = ypath.getNumber(attributes, '/running_operation_count');\n data.maxRunningOperationCount = ypath.getNumber(\n attributes,\n '/max_running_operation_count',\n );\n data.maxRunningOperationCountEdited = ypath.getNumber(\n cypressAttributes,\n '/max_running_operation_count',\n );\n }\n\n data.id = data.name;\n data.starvation_status = ypath.getValue(attributes, '/starvation_status');\n\n // General\n data.weight = ypath.getNumber(attributes, '/weight');\n data.weightEdited = ypath.getNumber(cypressAttributes, '/weight');\n data.minShareRatio = ypath.getNumber(attributes, '/min_share_ratio');\n data.maxShareRatio = ypath.getNumber(attributes, '/max_share_ratio');\n data.fairShareRatio = ypath.getNumber(attributes, '/fair_share_ratio');\n data.fifoIndex = ypath.getNumber(attributes, '/fifo_index');\n data.usageRatio = ypath.getNumber(attributes, '/usage_ratio');\n data.demandRatio = ypath.getNumber(attributes, '/demand_ratio');\n data.isEphemeral = ypath.getBoolean(attributes, '/is_ephemeral');\n\n data.integralType = ypath.getValue(attributes, '/integral_guarantee_type');\n const userDefinedBurstCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/burst_guarantee_resources/cpu',\n NaN,\n );\n data.burstCPU = ypath.getNumber(\n attributes,\n '/specified_burst_guarantee_resources/cpu',\n userDefinedBurstCPU,\n );\n const userDefinedFlowCPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/cpu',\n NaN,\n );\n data.flowCPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/cpu',\n userDefinedFlowCPU,\n );\n const userDefinedFlowGPU = ypath.getNumber(\n cypressAttributes,\n '/integral_guarantees/resource_flow/gpu',\n NaN,\n );\n data.flowGPU = ypath.getNumber(\n attributes,\n '/specified_resource_flow/gpu',\n userDefinedFlowGPU,\n );\n\n data.accumulated = ypath.getValue(attributes, '/accumulated_resource_ratio_volume');\n data.accumulatedCpu = ypath.getValue(attributes, '/accumulated_resource_volume/cpu');\n data.burstDuration = ypath.getValue(attributes, '/estimated_burst_usage_duration_sec');\n\n const fifoSortParams = map_(\n ypath.getValue(attributes, '/fifo_sort_parameters') ||\n ypath.getValue(cypressAttributes, '/fifo_sort_parameters'),\n (param) => ypath.getValue(param),\n );\n data.fifoSortParams =\n fifoSortParams.length > 0\n ? fifoSortParams\n : ['start_time', 'weight', 'pending_job_count'];\n data.abc = ypath.getValue(attributes, '/abc') || {};\n data.forbidImmediateOperations =\n ypath.getBoolean(cypressAttributes, '/forbid_immediate_operations') || false;\n data.createEphemeralSubpools =\n ypath.getBoolean(cypressAttributes, '/create_ephemeral_subpools') || false;\n\n // Resources\n data.dominantResource = ypath.getValue(attributes, '/dominant_resource');\n\n data.resources = {};\n\n preparePoolChildResource(data, type, treeResources, 'cpu');\n preparePoolChildResource(data, type, treeResources, 'user_memory');\n preparePoolChildResource(data, type, treeResources, 'gpu');\n preparePoolChildResource(data, type, treeResources, 'user_slots');\n\n return data;\n } catch (e) {\n throw appendInnerErrors(e, {\n message: `An error occured while parsing pool \"${data.name}\" data.`,\n });\n }\n}\n","import isEmpty_ from 'lodash/isEmpty';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport {createSelector} from 'reselect';\n\nimport {RootState} from '../../../store/reducers';\nimport {ROOT_POOL_NAME} from '../../../constants/scheduling';\nimport {preparePools} from '../../../utils/scheduling/scheduling';\nimport ypath from '../../../common/thor/ypath';\nimport {updatePoolChild} from '../../../utils/scheduling/pool-child';\nimport {\n getExpandedPoolCypressData,\n getExpandedPoolsTree,\n getSchedulingOperations,\n} from './expanded-pools';\nimport {getCluster} from '../../../store/selectors/global';\nimport {RumWrapper} from '../../../rum/rum-wrap-api';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\nimport {EMPTY_OBJECT} from '../../../constants/empty';\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nconst getPoolsRaw = (state: RootState) => state.scheduling.expandedPools.rawPools;\nconst getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\n\nconst getSchedulingTreeOperations = createSelector(\n [getSchedulingOperations, getExpandedPoolsTree, getTree],\n (rawOperations, expandedPoolsTree, tree) => {\n if (tree !== expandedPoolsTree) {\n return EMPTY_OBJECT as typeof rawOperations;\n }\n\n return rawOperations;\n },\n);\n\nconst getOperationsFiltered = createSelector(\n [getPoolsRaw, getSchedulingTreeOperations],\n (rawPools, rawOperations) => {\n return reduce_(\n rawOperations,\n (acc, item, operationId) => {\n if (rawPools[item.pool]) {\n acc[operationId] = item;\n }\n return acc;\n },\n {} as typeof rawOperations,\n );\n },\n);\n\nconst getPoolsPrepared = createSelector(\n [getPoolsRaw, getOperationsFiltered, getExpandedPoolCypressData, getTreeResources, getCluster],\n (rawPools, rawOperations, attributes, treeResources, cluster) => {\n if (isEmpty_(rawPools)) {\n return [];\n }\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.SCHEDULING);\n\n return rumId.wrap('prepareData', () => {\n const preparedPools = preparePools(rawPools!, rawOperations);\n return map_(preparedPools, (pool) => {\n const cypressAttributes = ypath.getValue(attributes)[pool.name];\n return updatePoolChild(pool, cypressAttributes, 'pool', treeResources);\n });\n });\n },\n);\n\nexport const getSchedulingPoolsMapByName = createSelector(\n [getPoolsPrepared],\n (pools: Array<PoolInfo>) => {\n return reduce_(\n pools,\n (acc, item) => {\n acc[item.name] = item;\n return acc;\n },\n {} as Record<string, PoolInfo>,\n );\n },\n);\n\nexport const getSchedulingPoolsExtraInfo = createSelector(\n [getSchedulingPoolsMapByName],\n (poolsMap) => {\n const root = poolsMap[ROOT_POOL_NAME];\n if (!root) {\n return {};\n }\n\n const res: Record<string, PoolExtraInfo> = {};\n calcChildrenIntegrals(root, res);\n return res;\n },\n);\n\ntype PoolName = string;\n\nfunction calcChildrenIntegrals(pool: PoolInfo, dst: Record<PoolName, PoolExtraInfo>) {\n const {children, name} = pool;\n if (!children?.length) {\n const res = (dst[name] = {\n childrenBurstCPU: 0,\n childrenFlowCPU: 0,\n });\n return res;\n }\n\n const res: PoolExtraInfo = {\n childrenFlowCPU: 0,\n childrenBurstCPU: 0,\n };\n for (let i = 0; i < children.length; ++i) {\n const item = children[i];\n const itemExtraInfo = calcChildrenIntegrals(item, dst);\n\n dst[item.name] = itemExtraInfo;\n\n res.childrenFlowCPU += item.flowCPU || 0 + itemExtraInfo.childrenFlowCPU;\n res.childrenBurstCPU += item.burstCPU || 0 + itemExtraInfo.childrenBurstCPU;\n }\n\n dst[name] = res;\n return res;\n}\n\nexport interface PoolExtraInfo {\n childrenFlowCPU: number;\n childrenBurstCPU: number;\n}\n\nexport interface OperationInfo {\n name: string;\n type: 'operation';\n parent: string;\n attributes: object;\n cypressAttributes: object;\n flowCPU: number;\n burstCPU: number;\n flowGPU: number;\n integralType?: string;\n mode?: string;\n\n operationCount?: number;\n maxOperationCount?: number;\n maxRunningOperationCount?: number;\n\n pool: string;\n}\n\nexport interface PoolInfo extends Omit<OperationInfo, 'type' | 'pool'> {\n type: 'pool';\n incomplete?: boolean;\n children?: Array<PoolInfo>;\n leaves: Array<OperationInfo>;\n isEphemeral?: boolean;\n resources?: PoolResources;\n fifoIndex?: number;\n weight?: number;\n minShareRatio?: number;\n maxShareRatio?: number;\n fairShareRatio?: number;\n usageRatio?: number;\n demandRatio?: number;\n dominantResource?: number;\n runningOperationCount?: number;\n operationCount?: number;\n maxOperationCount?: number;\n childrenBurstCPU?: number;\n childrenFlowCPU?: number;\n accumulated?: number;\n accumulatedCpu?: number;\n burstDuration?: number;\n}\n\nexport type PoolResources = Partial<\n Record<'cpu' | 'gpu' | 'user_memory' | 'user_slots', PoolResourceDetails>\n>;\n\nexport type PoolResourceType = keyof PoolResources;\n\nexport type PoolResourceDetails = {\n min?: number;\n usage?: number;\n limit?: number;\n demand?: number;\n detailed?: number;\n guaranteed?: number;\n};\n\nexport const getPools = createSelector(\n [getPoolsPrepared, getSchedulingPoolsExtraInfo],\n (pools, extras) => {\n const res = map_(pools, (item) => {\n const itemExtra = extras[item.name] || {};\n return Object.assign(item, itemExtra);\n });\n return res;\n },\n);\n","import ypath from '@ytsaurus/interface-helpers/lib/ypath';\nimport hammer from '../../common/hammer';\n\nimport reduce_ from 'lodash/reduce';\n\nfunction getNetworkResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Percent']((resourceUsage / resourceLimit) * 100);\n}\n\nfunction getMemoryResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Bytes'](resourceUsage) + ' / ' + hammer.format['Bytes'](resourceLimit);\n}\n\nfunction getDefaultResourceText(resourceUsage, resourceLimit) {\n return hammer.format['Number'](resourceUsage) + ' / ' + hammer.format['Number'](resourceLimit);\n}\n\nfunction getResourcesText(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n switch (data.type) {\n case 'network':\n return getNetworkResourceText(resourceUsage, resourceLimit);\n case 'user_memory':\n return getMemoryResourceText(resourceUsage, resourceLimit);\n default:\n return getDefaultResourceText(resourceUsage, resourceLimit);\n }\n}\n\nfunction getResourceProgressValue(data) {\n const resourceUsage = data.usage;\n const resourceLimit = data.limit;\n\n return (resourceUsage / resourceLimit) * 100;\n}\n\nfunction getResourceProgress(data) {\n return {\n text: getResourcesText(data),\n value: getResourceProgressValue(data),\n theme: 'info',\n };\n}\n\nexport function prepareResources(data) {\n const resourceUsage = ypath.getValue(data, '/resource_usage');\n const resourceLimits = ypath.getValue(data, '/resource_limits');\n const resourceTypes = ['cpu', 'user_memory', 'user_slots', 'network', 'gpu'];\n\n return reduce_(\n resourceTypes,\n (res, type) => {\n if (resourceUsage && resourceLimits) {\n const data = {\n type,\n usage: Number(ypath.getValue(resourceUsage[type], '')),\n limit: Number(ypath.getValue(resourceLimits[type], '')),\n };\n const progress = getResourceProgress(data);\n\n res.push({...data, progress});\n }\n return res;\n },\n [],\n );\n}\n","import filter_ from 'lodash/filter';\nimport find_ from 'lodash/find';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport hammer from '../../../common/hammer';\nimport {createSelector} from 'reselect';\nimport {getCluster} from '../../../store/selectors/global';\n\nimport {prepareResources} from '../../../utils/scheduling/overview';\nimport {childTableItems} from '../../../utils/scheduling/detailsTable';\nimport {poolsTableItems} from '../../../utils/scheduling/overviewTable';\nimport {\n ROOT_POOL_NAME,\n SCHEDULING_POOL_CHILDREN_TABLE_ID,\n SCHEDULING_POOL_TREE_TABLE_ID,\n} from '../../../constants/scheduling';\n\nimport {\n OperationInfo,\n PoolInfo,\n getPools as getPoolsImpl,\n getSchedulingPoolsMapByName,\n} from './scheduling-pools';\nimport {RootState} from '../../../store/reducers';\nimport {isAbcPoolName, isTopLevelPool} from '../../../utils/scheduling/pool';\nimport {visitTreeItems} from '../../../utils/utils';\nimport {getExpandedPoolsLoadAll, getSchedulingOperationsExpandedPools} from './expanded-pools';\nimport {\n getSchedulingAttributesToFilter,\n getSchedulingFilteredPoolNames,\n} from './attributes-to-filter';\nexport const getPools = getPoolsImpl;\n\nconst getExpandedPoolsIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.expandedPools;\n return !loaded && loading;\n};\n\nexport const getSchedulingIsInitialLoading = (state: RootState) => {\n const {loaded, loading} = state.scheduling.scheduling;\n return (!loaded && loading) || getExpandedPoolsIsInitialLoading(state);\n};\n\nexport const getTreeResources = (state: RootState) => state.scheduling.scheduling.treeResources;\nexport const getPoolChildrenFilter = (state: RootState) =>\n state.scheduling.scheduling.poolChildrenFilter;\nexport const getSchedulingTreeState = (state: RootState) => state.scheduling.scheduling.treeState;\nconst getContentModeRaw = (state: RootState) => state.scheduling.scheduling.contentMode;\n\nexport const getTree = (state: RootState) => state.scheduling.scheduling.tree;\nexport const getTrees = (state: RootState) => state.scheduling.scheduling.trees;\n\nexport const getPool = (state: RootState) => state.scheduling.scheduling.pool;\n\nexport const getSchedulingEditItem = (state: RootState) => state.scheduling.scheduling.editItem;\n\nexport const getSortState = (state: RootState) => state.tables[SCHEDULING_POOL_TREE_TABLE_ID];\nexport const getPoolChildrenSortState = (state: RootState) =>\n state.tables[SCHEDULING_POOL_CHILDREN_TABLE_ID];\n\nexport const getPoolsNames = createSelector(\n getSchedulingAttributesToFilter,\n (pools): Array<string> => map_(pools, (_v, name) => name).sort(),\n);\n\nconst DETAILS_CONTENT_MODES = {\n cpu: 'cpu',\n memory: 'memory',\n gpu: 'gpu',\n user_slots: 'user_slots',\n operations: 'operations',\n integral: 'integral',\n};\n\nexport const getContentMode = createSelector([getContentModeRaw], (mode) => {\n return DETAILS_CONTENT_MODES[mode] || DETAILS_CONTENT_MODES.cpu;\n});\n\nexport const getIsRoot = createSelector(getPool, (pool) => pool === ROOT_POOL_NAME);\n\nexport const getTreesSelectItems = createSelector(getTrees, (trees) =>\n map_(trees, (tree) => ({\n value: tree,\n text: hammer.format['Readable'](tree) as string,\n })),\n);\n\nexport const getPoolsSelectItems = createSelector(getPoolsNames, (pools) => {\n const items = map_(pools, (pool) => ({\n value: pool,\n text: pool,\n }));\n\n return items;\n});\n\nexport const getCurrentPool = createSelector([getPool, getPools], (pool, pools) =>\n find_(pools, (item) => item.name === pool),\n);\n\nexport const getPoolIsEphemeral = createSelector([getCurrentPool], (currentPool) => {\n if (currentPool && currentPool.isEphemeral !== undefined) return currentPool.isEphemeral;\n return undefined;\n});\n\nexport const getCurrentPoolChildren = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.children;\n }\n\n return undefined;\n});\n\nexport const getCurrentPoolOperations = createSelector(getCurrentPool, (currentPool) => {\n if (currentPool) {\n return currentPool.leaves;\n }\n\n return undefined;\n});\n\nexport const getResources = createSelector(\n [getCurrentPool, getTreeResources],\n (currentPool, resources) => {\n if (currentPool && currentPool.name !== '<Root>') {\n return prepareResources(currentPool.attributes);\n } else if (resources) {\n return prepareResources(resources);\n }\n\n return [];\n },\n);\n\nconst getFilteredTree = createSelector(\n [getCurrentPool, getSchedulingFilteredPoolNames],\n (treeRoot, visiblePools) => {\n if (treeRoot) {\n return hammer.treeList.filterTree(\n treeRoot,\n (pool: {name: string}) => {\n return visiblePools === undefined || visiblePools.has(pool.name);\n },\n true,\n );\n }\n return undefined;\n },\n);\n\nexport const getTableItems = createSelector(\n [getFilteredTree, getSortState],\n (filteredTree, sortState) => {\n if (filteredTree) {\n const isRoot = filteredTree && filteredTree.name === ROOT_POOL_NAME;\n const tree = isRoot ? filteredTree : {children: [filteredTree]};\n const sortedTree = hammer.treeList.sortTree(tree, sortState, poolsTableItems);\n\n return hammer.treeList.flattenTree(sortedTree);\n }\n\n return [];\n },\n);\n\nexport const getSchedulingOverviewMaxDepth = createSelector(\n [getTableItems, getExpandedPoolsLoadAll, getTree, getSchedulingOperationsExpandedPools],\n (items: Array<{level: number; name: string}>, allExpanded, tree, expandedPoolsMap) => {\n if (allExpanded) {\n return reduce_(\n items,\n (acc, item) => {\n const {level = 0} = item || {};\n return acc < level ? level : acc;\n },\n 0,\n );\n }\n\n const expandedPools = expandedPoolsMap[tree];\n if (!expandedPools?.size) {\n return 0;\n }\n\n return reduce_(\n items,\n (acc, item) => {\n if (expandedPools.has(item.name)) {\n return acc < item.level + 1 ? item.level + 1 : acc;\n }\n return acc;\n },\n 0,\n );\n },\n);\n\nconst getPoolChildrenData = createSelector(\n [getCurrentPool, getCurrentPoolChildren, getCurrentPoolOperations],\n (pool, pools, operations = []) => {\n if (pool && pools) {\n return [...pools, ...operations];\n }\n\n return undefined;\n },\n);\n\nconst getFilteredPoolChildren = createSelector(\n [getPoolChildrenData, getPoolChildrenFilter],\n (poolChildrenData, poolChildrenFilter) => {\n return hammer.filter.filter({\n data: poolChildrenData,\n input: poolChildrenFilter,\n factors: ['name'],\n });\n },\n);\n\nexport const getSortedPoolChildren = createSelector(\n [getFilteredPoolChildren, getPoolChildrenSortState, getCurrentPool],\n (filteredPoolChildren, poolChildrenSortState, currentPool) => {\n return hammer.utils.sort(filteredPoolChildren, poolChildrenSortState, childTableItems, {\n addGetParams: [currentPool],\n groupBy: {\n asc: true,\n get(item: PoolInfo | OperationInfo) {\n return item.type === 'operation' ? 0 : 1;\n },\n },\n });\n },\n);\n\nexport const getPollChildrenTableItems = createSelector(\n [getCurrentPool, getSortedPoolChildren],\n (currentPool, sortedPoolChildren) => {\n const extras = [];\n let isChildPool = false;\n if (currentPool && currentPool.name !== ROOT_POOL_NAME) {\n extras.push(currentPool);\n isChildPool = true;\n }\n\n return extras.concat(\n map_(sortedPoolChildren, (item) => {\n return Object.assign({}, item, {isChildPool});\n }),\n );\n },\n);\n\n// The same cluster is ready for bundle's ACL\nconst CLUSTERS_WITHOUT_POOL_ACL = ['locke'];\n\nexport const isPoolAclAllowed = createSelector([getCluster], (cluster) => {\n return CLUSTERS_WITHOUT_POOL_ACL.indexOf(cluster) === -1;\n});\n\nexport const getCurrentPoolPath = createSelector(\n [getPool, getPools, getTree],\n (pool, pools, tree) => {\n return calculatePoolPath(pool, pools, tree);\n },\n);\n\nexport function calculatePoolPath(pool: string, pools: Array<PoolInfo>, tree: string) {\n const prefix = `//sys/pool_trees/${tree}`;\n\n let current = pool;\n const path = [];\n while (current) {\n if (current !== ROOT_POOL_NAME) {\n path.push(current);\n }\n const tmp = current;\n const {parent} = find_(pools, ({name}) => name === tmp) || {};\n current = parent || '';\n }\n const pathStr = !path.length ? '' : '/' + path.reverse().join('/');\n return `${prefix}${pathStr}`;\n}\n\nexport const getSchedulingTopPoolOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingPoolsMapByName],\n (pool, mapOfPools) => {\n if (isAbcPoolName(pool?.name)) {\n return undefined;\n }\n\n if (isTopLevelPool(pool)) {\n return pool;\n }\n\n let item = pool;\n while (item) {\n const parent = mapOfPools[item.parent];\n if (isAbcPoolName(item.parent)) {\n return item;\n }\n\n if (isTopLevelPool(item)) {\n return item;\n }\n\n item = parent;\n }\n return undefined;\n },\n);\n\nexport const getSchedulingSourcesOfEditItem = createSelector(\n [getSchedulingEditItem, getSchedulingTopPoolOfEditItem, getSchedulingPoolsMapByName],\n (pool, topPool, mapOfPools): Array<string> => {\n if (!pool?.name || !mapOfPools) {\n return [];\n }\n\n const res: Array<string> = [];\n visitTreeItems(\n topPool,\n (item: PoolInfo) => {\n if (pool.name !== item.name) {\n res.push(item.name);\n }\n },\n {\n isNeedToSkipChildren: (item: PoolInfo) => {\n return item?.name === pool?.name;\n },\n },\n );\n\n return res;\n },\n);\n\nexport const getSchedulingSourcesOfEditItemSkipParent = createSelector(\n [getSchedulingEditItem, getSchedulingSourcesOfEditItem],\n (pool, sources) => {\n if (!pool?.parent) {\n return sources;\n }\n\n return filter_(sources, (item) => item !== pool.parent);\n },\n);\n","import {createSelector} from 'reselect';\nimport clone_ from 'lodash/clone';\n\nimport {\n getFormat,\n getShowDecoded,\n shouldCompact,\n shouldEscapeWhitespace,\n useBinaryAsHex,\n} from '../../../store/selectors/settings';\nimport {getUnipikaSettingsFromConfig} from '../../../common/thor/unipika-settings';\n\nexport interface YsonSettings {\n format: string;\n showDecoded: boolean;\n compact: boolean;\n escapeWhitespace: boolean;\n binaryAsHex: boolean;\n asHTML: boolean;\n}\n\n/**\n * !!! Do not use this selector directly, result should be copied by another selector !!!\n * unipika.format && unipika.foramtRaw mix different properties into settings-object.\n * So, to minimize side-effects each UI-component should use his-own copy of settings-object.\n */\nconst getYsonSettings = createSelector(\n [getFormat, getShowDecoded, shouldCompact, shouldEscapeWhitespace, useBinaryAsHex],\n (\n format: string,\n showDecoded: boolean,\n compact: boolean,\n escapeWhitespace: boolean,\n binaryAsHex: boolean,\n ): YsonSettings => {\n return {\n format,\n showDecoded,\n compact,\n escapeWhitespace,\n binaryAsHex,\n asHTML: true,\n ...getUnipikaSettingsFromConfig(),\n };\n },\n);\n\nexport const getJobGeneralYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getJobSpecificationYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getTableYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationAttributesYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getOperationExperimentsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNavigationMountConfigYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getEditJsonYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getNodeUnrecognizedOptionsYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getPreviewCellYsonSettings = createSelector([getYsonSettings], clone_);\n\nexport const getFlowSpecYsonSettings = createSelector([getYsonSettings], clone_);\n","import concat_ from 'lodash/concat';\nimport reduce_ from 'lodash/reduce';\n\nexport function injectColumnsFromSchema(\n columns: Array<string>,\n omittedColumns: Array<string>,\n schemaColumns: Array<string>,\n) {\n const toSkip = reduce_(\n concat_(columns, omittedColumns),\n (acc, column) => {\n acc[column] = true;\n return acc;\n },\n {} as {[column: string]: true},\n );\n const toAdd = reduce_(\n schemaColumns,\n (acc, col) => {\n if (!toSkip[col]) {\n acc.push(col);\n }\n return acc;\n },\n [] as Array<string>,\n );\n return concat_(columns, toAdd);\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport unipika from '../../common/thor/unipika';\n\nimport ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';\nimport Yson from '../../components/Yson/Yson';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\n/**\n * See unipika for more details\n */\nexport type UnipikaValueType = Array<string | UnipikaValueType>;\n\nexport type YqlValueProps = {\n value?: unknown;\n type: UnipikaValueType;\n settings: UnipikaSettings;\n inline?: boolean;\n};\n\nexport default class YqlValue extends React.Component<YqlValueProps> {\n static propTypes = {\n settings: PropTypes.object,\n value: PropTypes.any,\n type: PropTypes.array,\n inline: PropTypes.bool,\n };\n\n static defaultProps = {\n inline: false,\n folding: false,\n settings: Yson.defaultUnipikaSettings,\n };\n\n static getFormattedValue(value: unknown, type: UnipikaValueType, settings: UnipikaSettings) {\n const yqlValue = [value, type];\n\n return settings.format === 'raw-json'\n ? unipika.formatRaw(yqlValue, settings)\n : unipika.formatFromYQL(yqlValue, settings);\n }\n\n render() {\n const {value, type, inline, settings} = this.props;\n\n const formattedValue = YqlValue.getFormattedValue(value, type, settings);\n\n let title;\n\n if (inline) {\n const titleSettings = Object.assign({}, settings, {\n asHTML: false,\n });\n\n title =\n settings.format === 'raw-json'\n ? unipika.formatRaw(value, titleSettings)\n : unipika.formatFromYQL(value, titleSettings);\n }\n\n const classes = block('unipika-wrapper')({\n inline: inline && 'yes',\n });\n\n return (\n <ErrorBoundary>\n {settings.asHTML ? (\n <div className={classes} title={title} dir=\"auto\">\n <pre\n className=\"unipika\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n </div>\n ) : (\n <div\n className={classes}\n title={title}\n dir=\"auto\"\n dangerouslySetInnerHTML={{__html: formattedValue}}\n />\n )}\n </ErrorBoundary>\n );\n }\n}\n","import React, {useState} from 'react';\nimport cn from 'bem-cn-lite';\nimport copyToClipboard from 'copy-to-clipboard';\n\nimport {Button, Flex, Icon as UIKitIcon} from '@gravity-ui/uikit';\nimport {Eye} from '@gravity-ui/icons';\n\nimport unipika from '../../common/thor/unipika';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\nimport YqlValue from '../../components/YqlValue/YqlValue';\nimport Yson from '../../components/Yson/Yson';\nimport Label from '../../components/Label/Label';\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {UnipikaSettings} from '../../components/Yson/StructuredYson/StructuredYsonTypes';\n\nimport './ColumnCell.scss';\n\nconst block = cn('yt-column-cell');\n\nfunction unquote(v: string) {\n const match = /^\"(.*)\"$/.exec(v);\n return match ? match[1] : v;\n}\n\ntype CellValueType =\n | null\n | (CellValueData & {\n $incomplete?: boolean;\n [k: number]: {inc?: boolean};\n });\n\ntype CellValueData = {$type: string; $value: string} | {$type?: undefined; $value: unknown};\n\ntype ColumnCellProps = {\n className?: string;\n\n value?: CellValueType | null;\n yqlTypes: Array<TypeArray> | null;\n ysonSettings: UnipikaSettings;\n allowRawStrings?: boolean | null;\n rowIndex: number;\n columnName: string;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void;\n};\n\nexport function ColumnCell({\n value = null,\n yqlTypes,\n ysonSettings,\n allowRawStrings,\n className,\n rowIndex,\n columnName,\n onShowPreview,\n}: ColumnCellProps) {\n const [hovered, setHovered] = useState(false);\n const handleMouseEnter = () => setHovered(true);\n const handleMouseLeave = () => setHovered(false);\n\n const formatType = yqlTypes && value ? yqlTypes[Number(value[1])] : undefined;\n\n const escapedValue =\n formatType && value\n ? YqlValue.getFormattedValue(value[0], formatType, {\n ...ysonSettings,\n asHTML: false,\n })\n : unipika.prettyprint(value, {...ysonSettings, asHTML: false});\n const formattedValue =\n formatType && value ? (\n <YqlValue value={value[0]} type={formatType} settings={ysonSettings} />\n ) : (\n <Yson value={value} settings={ysonSettings} />\n );\n\n const {tag, isIncompleteTagged, isIncompleteValue} = React.useMemo(() => {\n let isIncompleteTagged = false;\n let isIncompleteValue = false;\n let tag: string | undefined;\n\n if (value && formatType) {\n const flags: {incomplete: boolean} = {incomplete: false};\n\n const {$tag} = unipika.converters.yql([value[0], formatType], ysonSettings, flags);\n\n isIncompleteValue = flags.incomplete;\n isIncompleteTagged = flags.incomplete && $tag;\n tag = $tag;\n } else if (value) {\n isIncompleteValue = Boolean(value.$incomplete);\n }\n\n return {tag, isIncompleteTagged, isIncompleteValue};\n }, [value, formatType, ysonSettings]);\n\n const allowRawCopy = value?.$type === 'string';\n const useRawString = allowRawCopy && allowRawStrings;\n let copyTooltip = 'Hold SHIFT-key to copy raw value';\n if (useRawString) {\n copyTooltip = 'Hold SHIFT-key to copy escaped value';\n }\n\n const visibleValue = !useRawString ? (\n formattedValue\n ) : (\n <div className={'unipika-wrapper'}>\n <pre className={'unipika'}>\n <span className={'string'}>{value?.$value}</span>\n </pre>\n </div>\n );\n\n return (\n <div\n className={block(null, className) /*dataTableBlock('value')*/}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {isIncompleteTagged ? (\n <Label theme=\"warning\" text={`Incomplete '${tag}' type`} />\n ) : (\n visibleValue\n )}\n {(hovered || isIncompleteTagged) && (\n <div className={block('control-button-wrapper')}>\n <Flex alignItems=\"center\">\n {value && !isIncompleteValue && (\n <Tooltip\n content={\n !allowRawCopy ? undefined : (\n <span className={block('copy-value-tooltip')}>\n {copyTooltip}\n </span>\n )\n }\n >\n <ClipboardButton\n view=\"flat-secondary\"\n size=\"m\"\n text={useRawString ? value.$value : unquote(escapedValue)}\n onCopy={(event: React.MouseEvent) => {\n if (event?.shiftKey && allowRawCopy) {\n copyToClipboard(\n useRawString ? unquote(escapedValue) : value.$value,\n );\n }\n }}\n />\n </Tooltip>\n )}\n {isIncompleteValue && (\n <Button\n view=\"flat-secondary\"\n size=\"m\"\n qa=\"truncated-preview-button\"\n onClick={() => onShowPreview(columnName, rowIndex, tag)}\n >\n <UIKitIcon data={Eye} size=\"12\" />\n </Button>\n )}\n </Flex>\n </div>\n )}\n </div>\n );\n}\n","import React from 'react';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport SchemaDataType from '../../components/SchemaDataType/SchemaDataType';\nimport Yson from '../../components/Yson/Yson';\nimport unipika from '../../common/thor/unipika';\nimport Icon from '../../components/Icon/Icon';\nimport {ColumnCell} from '../../components/ColumnCell/ColumnCell';\n\nimport map_ from 'lodash/map';\n\nimport {TypeArray} from '../../components/SchemaDataType/dataTypes';\nimport type {YsonSettings} from '../../store/selectors/thor/unipika';\n\nexport function prepareColumns({\n columns,\n keyColumns,\n yqlTypes,\n ysonSettings,\n useRawStrings,\n schemaByName,\n onShowPreview,\n}: {\n columns: {name: string; sortOrder?: string}[];\n keyColumns: string[];\n yqlTypes: TypeArray[] | null;\n ysonSettings: YsonSettings;\n useRawStrings: boolean | null | undefined;\n schemaByName: Record<string, any>;\n onShowPreview: (columnName: string, rowIndex: number, tag?: string) => void;\n}) {\n return map_(columns, (column) => {\n const render = ({value, index}: {value?: any; index: number; row: any}) => (\n <ColumnCell\n allowRawStrings={useRawStrings}\n value={value}\n yqlTypes={yqlTypes || []}\n ysonSettings={ysonSettings}\n rowIndex={index}\n columnName={column.name}\n onShowPreview={onShowPreview}\n />\n );\n const {sortOrder} = column;\n const isKeyColumn = keyColumns.indexOf(column.name) > -1;\n const {type_v3} = schemaByName[column.name] || {};\n const header = (\n <Tooltip content={Boolean(type_v3) && <SchemaDataType type_v3={type_v3} />}>\n <Yson value={unipika.unescapeKeyValue(column.name)} settings={ysonSettings} inline>\n {isKeyColumn && (\n <Icon\n awesome={\n sortOrder === 'descending'\n ? 'sort-amount-up'\n : 'sort-amount-down-alt'\n }\n />\n )}\n </Yson>\n </Tooltip>\n );\n return Object.assign({}, column, {render, header});\n });\n}\n","import React from 'react';\n\nimport format from '../../common/hammer/format';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\nimport type {PoolInfo, PoolResourceType} from '../../store/selectors/scheduling/scheduling-pools';\n\nfunction prepareDetailedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.detailed;\n },\n sort: true,\n caption: 'Abs fair share',\n align: 'right',\n };\n}\n\nfunction prepareLimitColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.limit;\n },\n sort: true,\n sortWithUndefined: true,\n caption: 'Limit',\n align: 'right',\n };\n}\n\nfunction prepareMinResourcesColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.min;\n },\n sort: true,\n caption: 'Strong guar.',\n title: 'Strong guarantee',\n align: 'right',\n };\n}\n\nfunction prepareAbsGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.guaranteed;\n },\n sort: true,\n caption: 'Estimated guar.',\n title: 'Estimated guarantee',\n align: 'right',\n };\n}\n\nfunction prepareRelGuaranteedColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsGuaranteedColumn(resource).get(item)! /\n prepareAbsGuaranteedColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel guaranteed',\n align: 'right',\n };\n}\n\nfunction prepareAbsDemandColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.demand;\n },\n sort: true,\n caption: 'Abs demand',\n align: 'right',\n };\n}\n\nfunction prepareAbsUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo) {\n return item.resources?.[resource]?.usage;\n },\n sort: true,\n caption: 'Abs usage',\n align: 'right',\n };\n}\n\nfunction prepareRelUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return (\n prepareAbsUsageColumn(resource).get(item)! /\n prepareAbsUsageColumn(resource).get(currentPool)!\n );\n },\n sort: true,\n caption: 'Rel usage',\n align: 'right',\n };\n}\n\nfunction prepareGuaranteedUsageColumn(resource: PoolResourceType) {\n return {\n get(item: PoolInfo, currentPool: PoolInfo) {\n return {\n guaranteed: prepareRelGuaranteedColumn(resource).get(item, currentPool),\n usage: prepareRelUsageColumn(resource).get(item, currentPool),\n };\n },\n caption: 'Usage / Guaranteed',\n align: 'center',\n };\n}\n\nexport const childTableItems = {\n name: {\n sort(item: PoolInfo) {\n return item.name;\n },\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n },\n mode: {\n sort(item: PoolInfo) {\n return item.mode;\n },\n align: 'center',\n },\n FI: {\n sort(item: PoolInfo) {\n return item.fifoIndex;\n },\n align: 'center',\n },\n weight: {\n sort(item: PoolInfo) {\n return item.weight;\n },\n align: 'right',\n },\n min_share: {\n sort(item: PoolInfo) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n max_share: {\n sort(item: PoolInfo) {\n return item.maxShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n get(item: PoolInfo) {\n return item.fairShareRatio;\n },\n sort: true,\n align: 'right',\n },\n usage: {\n get(item: PoolInfo) {\n return item.usageRatio;\n },\n sort: true,\n align: 'right',\n },\n demand: {\n get(item: PoolInfo) {\n return item.demandRatio;\n },\n sort: true,\n align: 'right',\n },\n fair_share_usage: {\n caption: 'Usage / Fair share',\n align: 'left',\n },\n dominant_resource: {\n sort(item: PoolInfo) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n\n resource_detailed_cpu: prepareDetailedColumn('cpu'),\n resource_detailed_memory: prepareDetailedColumn('user_memory'),\n resource_detailed_gpu: prepareDetailedColumn('gpu'),\n resource_detailed_user_slots: prepareDetailedColumn('user_slots'),\n\n resource_limit_cpu: prepareLimitColumn('cpu'),\n resource_limit_memory: prepareLimitColumn('user_memory'),\n resource_limit_gpu: prepareLimitColumn('gpu'),\n resource_limit_user_slots: prepareLimitColumn('user_slots'),\n\n min_resources_cpu: prepareMinResourcesColumn('cpu'),\n min_resources_memory: prepareMinResourcesColumn('user_memory'),\n min_resources_gpu: prepareMinResourcesColumn('gpu'),\n min_resources_user_slots: prepareMinResourcesColumn('user_slots'),\n\n abs_guaranteed_cpu: prepareAbsGuaranteedColumn('cpu'),\n abs_guaranteed_memory: prepareAbsGuaranteedColumn('user_memory'),\n abs_guaranteed_gpu: prepareAbsGuaranteedColumn('gpu'),\n abs_guaranteed_user_slots: prepareAbsGuaranteedColumn('user_slots'),\n\n rel_guaranteed_cpu: prepareRelGuaranteedColumn('cpu'),\n rel_guaranteed_memory: prepareRelGuaranteedColumn('user_memory'),\n rel_guaranteed_gpu: prepareRelGuaranteedColumn('gpu'),\n rel_guaranteed_user_slots: prepareRelGuaranteedColumn('user_slots'),\n\n abs_usage_cpu: prepareAbsUsageColumn('cpu'),\n abs_usage_memory: prepareAbsUsageColumn('user_memory'),\n abs_usage_gpu: prepareAbsUsageColumn('gpu'),\n abs_usage_user_slots: prepareAbsUsageColumn('user_slots'),\n\n abs_demand_cpu: prepareAbsDemandColumn('cpu'),\n abs_demand_memory: prepareAbsDemandColumn('user_memory'),\n abs_demand_gpu: prepareAbsDemandColumn('gpu'),\n abs_demand_user_slots: prepareAbsDemandColumn('user_slots'),\n\n rel_usage_cpu: prepareRelUsageColumn('cpu'),\n rel_usage_memory: prepareRelUsageColumn('user_memory'),\n rel_usage_gpu: prepareRelUsageColumn('gpu'),\n rel_usage_user_slots: prepareRelUsageColumn('user_slots'),\n\n guaranteed_usage_cpu: prepareGuaranteedUsageColumn('cpu'),\n guaranteed_usage_memory: prepareGuaranteedUsageColumn('user_memory'),\n guaranteed_usage_gpu: prepareGuaranteedUsageColumn('gpu'),\n guaranteed_usage_user_slots: prepareGuaranteedUsageColumn('user_slots'),\n\n operation_overview: {\n get(item: PoolInfo) {\n return [item.operationCount, item.runningOperationCount];\n },\n caption: 'Operations',\n sort: true,\n align: 'right',\n },\n operation_count: {\n get(item: PoolInfo) {\n return item.operationCount;\n },\n sort: true,\n align: 'right',\n },\n max_operation_count: {\n get(item: PoolInfo) {\n return item.maxOperationCount;\n },\n sort: true,\n align: 'right',\n },\n operation_progress: {\n get(item: PoolInfo) {\n return item.operationCount! / item.maxOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.operationCount)} / ${format.Number(\n item.maxOperationCount,\n )}`;\n },\n caption: 'Total operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n running_operation_count: {\n get(item: PoolInfo) {\n return item.runningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n max_running_operation_count: {\n get(item: PoolInfo) {\n return item.maxRunningOperationCount;\n },\n sort: true,\n align: 'right',\n },\n running_operation_progress: {\n get(item: PoolInfo) {\n return item.runningOperationCount! / item.maxRunningOperationCount!;\n },\n text(item: PoolInfo) {\n return `${format.Number(item.runningOperationCount)} / ${format.Number(\n item.maxRunningOperationCount,\n )}`;\n },\n caption: 'Running operations (usage/limit)',\n sort: true,\n align: 'center',\n },\n\n integral_type: {\n get(item: PoolInfo) {\n const res = item.integralType;\n return res === 'none' ? undefined : res;\n },\n caption: 'Guarantee type',\n sort: true,\n align: 'right',\n sortWithUndefined: true,\n },\n burst_cpu: {\n get(item: PoolInfo) {\n return item.burstCPU;\n },\n sort(item: PoolInfo) {\n const res = item.burstCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Burst CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n flow_cpu: {\n get(item: PoolInfo) {\n return item.flowCPU;\n },\n sort(item: PoolInfo) {\n const res = item.flowCPU;\n return isNaN(res) ? undefined : res;\n },\n caption: 'Flow CPU',\n sortWithUndefined: true,\n align: 'right',\n },\n children_burst_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenBurstCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's burst CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n children_flow_cpu: {\n get(item: PoolInfo) {\n const res = item.childrenFlowCPU;\n return !res ? undefined : res;\n },\n caption: \"Children's flow CPU\",\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n accumulated: {\n get(item: PoolInfo) {\n return item.accumulated;\n },\n caption: 'Acc ratio volume',\n sortWithUndefined: true,\n sort: true,\n align: 'right',\n },\n accumulated_cpu: {\n get(item: PoolInfo) {\n return item.accumulatedCpu;\n },\n caption: 'Acc CPU volume',\n sort: true,\n align: 'right',\n },\n burst_duration: {\n get(item: PoolInfo) {\n return item.burstDuration;\n },\n caption: 'Est burst usage duration ',\n sort: true,\n sortWithUndefined: true,\n align: 'right',\n },\n\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import React from 'react';\nimport SchedulingOperationsLoader from '../../pages/scheduling/Content/tabs/ScherdulingOperataionsLoader/SchedulingOperationsLoader';\n\nexport const poolsTableItems = {\n type: {\n caption: '',\n align: 'center',\n },\n name: {\n sort: true,\n caption: 'Pool / Operation',\n captionTail: <SchedulingOperationsLoader />,\n align: 'left',\n get(item) {\n return item.name;\n },\n },\n mode: {\n sort: true,\n align: 'center',\n get(item) {\n return item.mode;\n },\n },\n FI: {\n sort: true,\n align: 'right',\n title: 'FIFO Index',\n get(item) {\n return item.fifoIndex;\n },\n },\n weight: {\n sort: true,\n align: 'right',\n title: 'Effective weight',\n get(item) {\n return item.weight;\n },\n },\n operation_overview: {\n caption: 'Operations',\n sort: true,\n align: 'center',\n get(item) {\n return [item.operationCount, item.runningOperationCount];\n },\n },\n dominant_resource: {\n sort(item) {\n return item.dominantResource;\n },\n caption: 'Dom. res.',\n title: 'Dominant Resource',\n align: 'left',\n },\n min_share: {\n caption: 'Guarantee',\n title: 'Effective dominant strong guarantee share',\n sort(item) {\n return item.minShareRatio;\n },\n align: 'right',\n },\n fair_share: {\n sort: true,\n title: 'Dominant fair share',\n align: 'right',\n get(item) {\n return item.fairShareRatio;\n },\n },\n usage: {\n sort: true,\n title: 'Dominant usage share',\n align: 'right',\n get(item) {\n return item.usageRatio;\n },\n },\n demand: {\n sort: true,\n title: 'Dominant demand share',\n align: 'right',\n get(item) {\n return item.demandRatio;\n },\n },\n fair_share_usage: {\n sort: true,\n caption: 'Usage / Fair share',\n align: 'center',\n sortWithUndefined: true,\n get(item) {\n const {fairShareRatio, usageRatio} = item;\n const x = Number(usageRatio) / Number(fairShareRatio);\n if (isNaN(usageRatio) || isNaN(fairShareRatio) || isNaN(x)) {\n return undefined;\n }\n return x;\n },\n },\n actions: {\n caption: '',\n align: 'left',\n },\n};\n","import {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\n\nexport function isAbcPoolName(name?: string) {\n return name?.startsWith('abc:');\n}\n\nexport function isTopLevelPool(pool?: PoolInfo) {\n const {parent} = pool || {};\n\n return parent === ROOT_POOL_NAME;\n}\n","import find_ from 'lodash/find';\nimport indexOf_ from 'lodash/indexOf';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\n\nimport ypath from '../../common/thor/ypath';\nimport {ROOT_POOL_NAME} from '../../constants/scheduling';\nimport type {OperationInfo, PoolInfo} from '../../store/selectors/scheduling/scheduling-pools';\nimport {attachTreeLeaves, prepareTree} from '../../common/hammer/tree-list';\n\nfunction getPool(pools: Array<PoolInfo>, name: string) {\n return find_(pools, (pool) => pool.name === name);\n}\n\nexport function prepareTrees(trees: Array<unknown>) {\n return map_(trees, (tree) => ypath.getValue(tree, '')).sort();\n}\n\nexport function prepareCurrentTree(defaultTree: unknown, trees: Array<string>, tree: string) {\n return tree !== '' && trees.indexOf(tree) !== -1\n ? tree\n : ypath.getValue(defaultTree, '') || trees[0];\n}\n\nexport function preparePools(\n pools: Record<string, PoolInfo>,\n operations: Record<string, OperationInfo>,\n) {\n const treeNodesMap = prepareTree<PoolInfo, OperationInfo>(pools, (entry: PoolInfo) =>\n ypath.getValue(entry, '/parent'),\n );\n\n attachTreeLeaves(treeNodesMap, operations, (operation: OperationInfo) =>\n ypath.getValue(operation, '/pool'),\n );\n\n return map_(treeNodesMap);\n}\n\nexport function computePathItems(pools: Array<PoolInfo>, name: string) {\n let pool: PoolInfo | undefined =\n getPool(pools, name) || ({parent: ROOT_POOL_NAME, name} as PoolInfo);\n const pathItems = [];\n\n // Unknown pool or dynamically created pool\n while (pool) {\n pathItems.unshift(pool.name);\n\n pool = getPool(pools, pool.parent);\n }\n\n return pathItems;\n}\n\nexport function computePoolPath(pool: PoolInfo, pools: Array<PoolInfo>) {\n const partitions = [pool.name];\n let parent: string | undefined = pool.parent;\n\n while (parent && parent !== ROOT_POOL_NAME) {\n // eslint-disable-next-line @typescript-eslint/no-loop-func\n const parentPool = find_(pools, (item) => item.name === parent);\n partitions.unshift(parentPool?.name!);\n parent = parentPool?.parent;\n }\n\n return partitions.join('/');\n}\n\n/* eslint-disable prefer-const */\nexport function flattenAttributes(obj: any) {\n const toReturn: any = {};\n const object = ypath.getValue(obj);\n\n for (let i in object) {\n if (!Object.hasOwnProperty.call(object, i)) {\n continue;\n }\n\n const innerObject = ypath.getValue(object[i]);\n if (\n typeof innerObject === 'object' &&\n !Object.is(innerObject, null) &&\n Object.keys(innerObject).length > 0\n ) {\n toReturn[i] = object[i];\n\n const flatObject = flattenAttributes(object[i]);\n for (let x in flatObject) {\n if (!Object.hasOwnProperty.call(flatObject, x)) {\n continue;\n }\n\n toReturn[x] = flatObject[x];\n }\n } else {\n toReturn[i] = object[i];\n }\n }\n\n return toReturn;\n}\n\nfunction getResourceLimit(pool: PoolInfo | undefined, limitKey: string): number | '' {\n const value = Number(ypath.getValue(pool, `/cypressAttributes/resource_limits/${limitKey}`));\n return isNaN(value) ? '' : value;\n}\n\nfunction prepareValueDetails(pool: PoolInfo | undefined, path: string) {\n if (!pool) {\n return {};\n }\n\n const value = Number(ypath.getValue(pool, path));\n const childrenSum = prepareMinGuaranteed(pool, path);\n\n return {\n value: isNaN(value) ? undefined : value,\n childrenSum: isNaN(childrenSum!) ? undefined : childrenSum,\n };\n}\n\nfunction prepareMinGuaranteed(pool?: PoolInfo, path = '') {\n const res = reduce_(\n pool?.children,\n (sum, item) => {\n const tmp = Number(ypath.getValue(item, path) || 0);\n return isNaN(tmp) ? sum : tmp + firstValidNumber(sum, 0)!;\n },\n NaN,\n );\n return isNaN(res) ? undefined : res;\n}\n\nfunction firstValidNumber(...args: number[]) {\n for (let i = 0; i < args.length; ++i) {\n if (!isNaN(args[i])) {\n return args[i];\n }\n }\n return undefined;\n}\n\nexport const INTEGRAL_GUARANTEES_PREFIX = 'integral_guarantees/';\n\nexport const POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR = {\n guaranteeType: INTEGRAL_GUARANTEES_PREFIX + 'guarantee_type',\n burstCpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/cpu',\n burstRam: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/memory',\n burstGpu: INTEGRAL_GUARANTEES_PREFIX + 'burst_guarantee_resources/gpu',\n flowCpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/cpu',\n flowRam: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/memory',\n flowGpu: INTEGRAL_GUARANTEES_PREFIX + 'resource_flow/gpu',\n};\n\nexport const POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE = {\n cpuStrong: 'strong_guarantee_resources/cpu',\n gpuStrong: 'strong_guarantee_resources/gpu',\n memoryStrong: 'strong_guarantee_resources/memory',\n //userSlotsStrong: 'strong_guarantee_resources/user_slots',\n};\n\nexport const POOL_GENERAL_TYPE_TO_ATTRIBUTE = {\n maxOperationCount: 'max_operation_count',\n maxRunningOperationCount: 'max_running_operation_count',\n};\n\nexport const POOL_RESOURCE_TYPE_TO_ATTRIBUTE = {\n ...POOL_GENERAL_TYPE_TO_ATTRIBUTE,\n ...POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE,\n ...POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR,\n};\n\nexport type PoolStrongResourceType = keyof typeof POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE;\nexport type PoolIntegralResourceType = keyof typeof POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR;\nexport type PoolGeneralResourceType = keyof typeof POOL_GENERAL_TYPE_TO_ATTRIBUTE;\nexport type PoolResourceType = keyof typeof POOL_RESOURCE_TYPE_TO_ATTRIBUTE;\n\nexport function getPoolResourceInfo(pool: PoolInfo, type: PoolResourceType) {\n const path = '/cypressAttributes/' + POOL_RESOURCE_TYPE_TO_ATTRIBUTE[type];\n return prepareValueDetails(pool, path);\n}\n\nexport interface InitialPoolResourceInfo {\n limit?: number;\n source?: string;\n}\n\nexport function getPoolResourceInitialValue(\n pool: PoolInfo | undefined,\n type: PoolResourceType,\n allowSource: boolean,\n): InitialPoolResourceInfo {\n if (!pool) {\n return {};\n }\n const {value} = getPoolResourceInfo(pool, type);\n return {\n limit: value,\n source: allowSource ? pool.parent : undefined,\n };\n}\n\nexport function getInitialValues(editItem: PoolInfo | undefined, allowedSources: Array<string>) {\n const slug = ypath.getValue(editItem, '/abc/slug');\n\n const allowSource = -1 !== indexOf_(allowedSources, editItem?.parent);\n\n return {\n general: {\n name: editItem?.name,\n abcService: slug\n ? {\n key: slug,\n value: slug,\n title: ypath.getValue(editItem, '/abc/name'),\n }\n : undefined,\n parent: editItem?.parent,\n mode: editItem?.mode,\n weight: ypath.getNumber(editItem, '/cypressAttributes/weight'),\n maxOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxOperationCount', allowSource),\n {source: undefined},\n ),\n maxRunningOperationCount: Object.assign(\n getPoolResourceInitialValue(editItem, 'maxRunningOperationCount', allowSource),\n {source: undefined},\n ),\n },\n resourceGuarantee: {\n cpuStrong: getPoolResourceInitialValue(editItem, 'cpuStrong', allowSource),\n gpuStrong: getPoolResourceInitialValue(editItem, 'gpuStrong', allowSource),\n memoryStrong: getPoolResourceInitialValue(editItem, 'memoryStrong', allowSource),\n //userSlotsStrong: getPoolResourceInitialValue(editItem, 'userSlotsStrong', allowSource),\n },\n integralGuarantee: {\n guaranteeType:\n ypath.getValue(\n editItem,\n `/cypressAttributes/${POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR.guaranteeType}`,\n ) || 'none',\n burstCpu: getPoolResourceInitialValue(editItem, 'burstCpu', allowSource),\n burstRam: getPoolResourceInitialValue(editItem, 'burstRam', allowSource),\n burstGpu: getPoolResourceInitialValue(editItem, 'burstGpu', allowSource),\n flowCpu: getPoolResourceInitialValue(editItem, 'flowCpu', allowSource),\n flowRam: getPoolResourceInitialValue(editItem, 'flowRam', allowSource),\n flowGpu: getPoolResourceInitialValue(editItem, 'flowGpu', allowSource),\n },\n resourceLimits: {\n cpu: getResourceLimit(editItem, 'cpu'),\n gpu: getResourceLimit(editItem, 'gpu'),\n memory: getResourceLimit(editItem, 'memory'),\n userSlots: getResourceLimit(editItem, 'user_slots'),\n },\n otherSettings: {\n forbidImmediateOperations: ypath.getBoolean(editItem, '/forbidImmediateOperations'),\n fifoSortParams: ypath.getValue(editItem, '/fifoSortParams'),\n createEphemeralSubpools: ypath.getBoolean(editItem, '/createEphemeralSubpools'),\n },\n };\n}\n","export function isImageTag(value: string) {\n return /image\\/.*/.test(value);\n}\n\nexport function isVideoTag(value: string) {\n return /video\\/.*/.test(value);\n}\n\nexport function isMediaTag(value: string) {\n return isImageTag(value) || isVideoTag(value);\n}\n","import { I18N } from '@gravity-ui/i18n';\nimport en from './keysets/en.json';\nimport ru from './keysets/ru.json';\nconst i18nFactory = new I18N();\nconst EN = 'en';\nconst RU = 'ru';\ni18nFactory.registerKeysets(EN, en);\ni18nFactory.registerKeysets(RU, ru);\nconst i18n = i18nFactory.i18n.bind(i18nFactory);\nexport { i18nFactory, i18n };\n","export const CHARTKIT_ERROR_CODE = {\n NO_DATA: 'ERR.CK.NO_DATA',\n INVALID_DATA: 'ERR.CK.INVALID_DATA',\n UNKNOWN: 'ERR.CK.UNKNOWN_ERROR',\n UNKNOWN_PLUGIN: 'ERR.CK.UNKNOWN_PLUGIN',\n TOO_MANY_LINES: 'ERR.CK.TOO_MANY_LINES',\n};\nexport class ChartKitError extends Error {\n constructor({ originalError, message, code = CHARTKIT_ERROR_CODE.UNKNOWN, } = {}) {\n super(message);\n this.isCustomError = true;\n this.code = code;\n if (originalError) {\n this.name = originalError.name;\n this.stack = originalError.stack;\n }\n }\n}\nexport const isChartKitError = (error) => {\n return error instanceof Error && 'isCustomError' in error;\n};\n","import isObject from 'lodash/isObject';\nimport mergeWith from 'lodash/mergeWith';\n// @ts-ignore\nexport function mergeSettingStrategy(objValue, srcValue, key) {\n if (key === 'plugins') {\n const currentPlugins = [...objValue];\n const newPlugins = [...srcValue];\n // modify existing plugins\n let newSettingsPlugins = currentPlugins.map((currentPlugin) => {\n const newPluginIndex = newPlugins.findIndex(({ type }) => type === currentPlugin.type);\n if (newPluginIndex !== -1) {\n const newPlugin = newPlugins[newPluginIndex];\n newPlugins.splice(newPluginIndex, 1);\n return {\n type: currentPlugin.type,\n renderer: newPlugin.renderer,\n };\n }\n return currentPlugin;\n });\n // add new plugins if it exist after modified\n if (newPlugins.length > 0) {\n newSettingsPlugins = [...newSettingsPlugins, ...newPlugins];\n }\n return newSettingsPlugins;\n }\n if (isObject(objValue)) {\n return mergeWith(objValue, srcValue, mergeSettingStrategy);\n }\n return srcValue;\n}\n","import { configure } from '@gravity-ui/uikit';\nimport get from 'lodash/get';\nimport mergeWith from 'lodash/mergeWith';\nimport { i18nFactory } from '../../i18n';\nimport { EventEmitter } from './eventEmitter';\nimport { mergeSettingStrategy } from './mergeSettingStrategy';\nexport const settingsEventEmitter = new EventEmitter();\nconst removeUndefinedValues = (data) => {\n return Object.entries(data).reduce((acc, [key, value]) => {\n if (typeof value !== 'undefined') {\n acc[key] = value;\n }\n return acc;\n }, {});\n};\nconst updateLang = (lang) => {\n configure({ lang });\n i18nFactory.setLang(lang);\n};\nclass ChartKitSettings {\n constructor() {\n this.settings = {\n plugins: [],\n lang: 'en',\n };\n updateLang(this.get('lang'));\n }\n get(key) {\n return get(this.settings, key);\n }\n set(updates) {\n const filteredUpdates = removeUndefinedValues(updates);\n this.settings = mergeWith(this.settings, filteredUpdates, mergeSettingStrategy);\n if (filteredUpdates.lang) {\n const lang = filteredUpdates.lang || this.get('lang');\n updateLang(lang);\n settingsEventEmitter.dispatch('change-lang', lang);\n }\n }\n}\nexport const settings = new ChartKitSettings();\n","export class EventEmitter {\n constructor() {\n this.events = {};\n }\n on(type, event) {\n if (this.events[type]) {\n this.events[type].push(event);\n }\n else {\n this.events[type] = [event];\n }\n }\n off(type, eventId) {\n if (this.events[type]) {\n this.events[type] = this.events[type].filter(({ id }) => id !== eventId);\n }\n }\n dispatch(type, args) {\n if (this.events[type]) {\n this.events[type].forEach(({ action }) => {\n action(args);\n });\n }\n }\n}\n","import { withNaming } from '@bem-react/classname';\nexport const NAMESPACE = 'chartkit-';\nexport const cn = withNaming({ e: '__', m: '_' });\nexport const block = withNaming({ n: NAMESPACE, e: '__', m: '_' });\n","export const randomString = (length, chars) => {\n let result = '';\n for (let i = length; i > 0; --i) {\n result += chars[Math.floor(Math.random() * chars.length)];\n }\n return result;\n};\nexport const getRandomCKId = () => `ck.${randomString(10, '0123456789abcdefghijklmnopqrstuvwxyz')}`;\n","import * as React from 'react';\nconst ChevronLeft = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.53 2.97a.75.75 0 0 1 0 1.06L6.56 8l3.97 3.97a.75.75 0 1 1-1.06 1.06l-4.5-4.5a.75.75 0 0 1 0-1.06l4.5-4.5a.75.75 0 0 1 1.06 0Z\", clipRule: \"evenodd\" })));\nexport default ChevronLeft;\n","import * as React from 'react';\nconst ChevronRight = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0Z\", clipRule: \"evenodd\" })));\nexport default ChevronRight;\n","import * as React from 'react';\nconst Ellipsis = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M3 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9.5 8a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm5 0a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z\", clipRule: \"evenodd\" })));\nexport default Ellipsis;\n","import * as React from 'react';\nexport const AlertContext = React.createContext(null);\n","'use client';\nimport * as React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const useAlertContext = () => {\n const context = React.useContext(AlertContext);\n if (!context)\n throw new Error('Alert: `useAlertContext` hook is used out of \"AlertContext\"');\n return context;\n};\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Button } from '../Button';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertAction = (props) => {\n const { view } = useAlertContext();\n return _jsx(Button, Object.assign({ view: view === 'filled' ? 'normal-contrast' : undefined }, props));\n};\n","import { block } from '../utils/cn';\nimport './Alert.css';\nexport const DEFAULT_ICON_SIZE = 18;\nexport const bAlert = block('alert');\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { AlertContext } from './AlertContext';\nexport const AlertContextProvider = ({ layout, view, children }) => {\n return _jsx(AlertContext.Provider, { value: { layout, view }, children: children });\n};\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { CircleCheck, CircleCheckFill, CircleInfo, CircleInfoFill, CircleXmark, CircleXmarkFill, Thunderbolt, ThunderboltFill, TriangleExclamation, TriangleExclamationFill, } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text/colorText/colorText';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nconst typeToIcon = {\n danger: {\n filled: CircleXmarkFill,\n outlined: CircleXmark,\n },\n info: {\n filled: CircleInfoFill,\n outlined: CircleInfo,\n },\n success: {\n filled: CircleCheckFill,\n outlined: CircleCheck,\n },\n warning: {\n filled: TriangleExclamationFill,\n outlined: TriangleExclamation,\n },\n utility: {\n filled: ThunderboltFill,\n outlined: Thunderbolt,\n },\n normal: null,\n};\nexport const AlertIcon = ({ className, theme, view = 'filled', size = DEFAULT_ICON_SIZE, }) => {\n const iconByTheme = typeToIcon[theme];\n if (!iconByTheme) {\n return null;\n }\n let color;\n if (theme === 'success') {\n color = 'positive';\n }\n else if (theme !== 'normal') {\n color = theme;\n }\n return (_jsx(\"div\", { className: bAlert('icon', colorText({ color }, className)), children: _jsx(Icon, { data: iconByTheme[view], size: size }) }));\n};\n","import * as React from 'react';\nconst CircleXmarkFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 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 '../../../i18n';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Alert';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Xmark } from '@gravity-ui/icons';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text';\nimport { Flex, spacing } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { AlertActions } from './AlertActions';\nimport { AlertContextProvider } from './AlertContextProvider';\nimport { AlertIcon } from './AlertIcon';\nimport { AlertTitle } from './AlertTitle';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nimport i18n from './i18n';\nexport const Alert = (props) => {\n const { theme = 'normal', view = 'filled', layout = 'vertical', message, className, corners, style, onClose, align, qa, } = props;\n return (_jsx(AlertContextProvider, { layout: layout, view: view, children: _jsx(Card, { style: style, className: bAlert({ corners }, spacing({ py: 4, px: 5 }, className)), theme: theme, view: view, qa: qa, children: _jsxs(Flex, { gap: \"3\", alignItems: align, children: [typeof props.icon === 'undefined' ? (_jsx(Alert.Icon, { theme: theme, view: view })) : (props.icon // ability to pass `null` as `icon` prop value\n ), _jsxs(Flex, { direction: layout === 'vertical' ? 'column' : 'row', gap: \"5\", grow: true, children: [_jsx(Flex, { gap: \"2\", grow: true, className: bAlert('text-content'), children: _jsxs(Flex, { direction: \"column\", gap: \"1\", grow: true, justifyContent: align, children: [typeof props.title === 'string' ? (_jsx(Alert.Title, { text: props.title })) : (props.title), message] }) }), Array.isArray(props.actions) ? (_jsx(Alert.Actions, { items: props.actions })) : (props.actions)] }), onClose && (_jsx(Button, { view: \"flat\", className: bAlert('close-btn'), onClick: onClose, extraProps: {\n 'aria-label': i18n('label_close'),\n }, children: _jsx(Icon, { data: Xmark, size: DEFAULT_ICON_SIZE, className: colorText({ color: 'secondary' }) }) }))] }) }) }));\n};\nAlert.Icon = AlertIcon;\nAlert.Title = AlertTitle;\nAlert.Actions = AlertActions;\nAlert.Action = AlertAction;\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Text } from '../Text';\nimport { bAlert } from './constants';\nexport const AlertTitle = ({ text, className }) => {\n return (_jsx(Text, { variant: \"subheader-2\", className: bAlert('title', className), children: text }));\n};\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Flex } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { bAlert } from './constants';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertActions = ({ items, children, className }) => {\n const { layout } = useAlertContext();\n return (_jsx(Flex, { className: bAlert('actions', { minContent: layout === 'horizontal' }, className), direction: \"row\", gap: \"3\", wrap: true, alignItems: layout === 'horizontal' ? 'center' : 'flex-start', children: (items === null || items === void 0 ? void 0 : items.map(({ handler, text }, i) => (_jsx(AlertAction, { onClick: handler, children: text }, i)))) || children }));\n};\n","import { block } from '../utils/cn';\nexport const cnDropdownMenu = block('dropdown-menu');\n","import * as React from 'react';\nexport const DropdownMenuContext = React.createContext({\n toggle() { },\n data: undefined,\n});\nDropdownMenuContext.displayName = 'DropdownMenu.Context';\n","export function moveBack(items, activeItemIndex, steps = 1, skip) {\n const newActiveItemIndex = (items.length + activeItemIndex - (steps % items.length)) % items.length;\n if (skip && skip(items[newActiveItemIndex])) {\n return moveBack(items, newActiveItemIndex, 1, skip);\n }\n return newActiveItemIndex;\n}\n","export function moveForward(items, activeItemIndex, steps = 1, skip) {\n const newActiveItemIndex = (activeItemIndex + steps) % items.length;\n if (skip && skip(items[newActiveItemIndex])) {\n return moveForward(items, newActiveItemIndex, 1, skip);\n }\n return newActiveItemIndex;\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nconst rootMenuPath = [];\nexport const DropdownMenuNavigationContext = React.createContext({\n activeMenuPath: rootMenuPath,\n setActiveMenuPath: () => { },\n anchorRef: { current: null },\n});\nexport const DropdownMenuNavigationContextProvider = ({ anchorRef, children, disabled, }) => {\n const [activeMenuPath, setActiveMenuPath] = React.useState(rootMenuPath);\n React.useEffect(() => {\n if (disabled) {\n setActiveMenuPath(rootMenuPath);\n }\n }, [disabled]);\n const contextValue = React.useMemo(() => ({\n activeMenuPath,\n setActiveMenuPath,\n anchorRef,\n }), [activeMenuPath, anchorRef]);\n return (_jsx(DropdownMenuNavigationContext.Provider, { value: contextValue, children: children }));\n};\n","export const dropdownMenuSeparator = { text: '', action: () => { }, path: [] };\n","import { dropdownMenuSeparator } from '../constants';\nexport function isSeparator(item) {\n return item === dropdownMenuSeparator;\n}\n","import { isSeparator } from './isSeparator';\nexport function shouldSkipItemNavigation(item) {\n return item.disabled || isSeparator(item);\n}\n","export function stringifyNavigationPath(path) {\n var _a;\n return (_a = path === null || path === void 0 ? void 0 : path.join(' ')) !== null && _a !== void 0 ? _a : '';\n}\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useListNavigation } from '../../hooks';\nimport { Menu } from '../Menu';\nimport { Popup } from '../Popup';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuNavigationContext } from './DropdownMenuNavigationContext';\nimport { isSeparator } from './utils/isSeparator';\nimport { shouldSkipItemNavigation } from './utils/shouldSkipItemNavigation';\nimport { stringifyNavigationPath } from './utils/stringifyNavigationPath';\nexport const DropdownMenuPopup = ({ items, open, anchorRef, onClose, size, menuProps, children, popupProps, path = [], }) => {\n const { toggle, data } = React.useContext(DropdownMenuContext);\n const { activeMenuPath, setActiveMenuPath, anchorRef: navigationAnchorRef, } = React.useContext(DropdownMenuNavigationContext);\n const isSubmenu = path.length > 0;\n const activateParent = React.useCallback(() => {\n setActiveMenuPath(path.slice(0, path.length - 1));\n }, [setActiveMenuPath, path]);\n const handleMouseEnter = React.useCallback((event) => {\n var _a;\n setActiveMenuPath(path);\n (_a = popupProps === null || popupProps === void 0 ? void 0 : popupProps.onMouseEnter) === null || _a === void 0 ? void 0 : _a.call(popupProps, event);\n }, [path, popupProps, setActiveMenuPath]);\n const handleMouseLeave = React.useCallback((event) => {\n var _a;\n activateParent();\n (_a = popupProps === null || popupProps === void 0 ? void 0 : popupProps.onMouseLeave) === null || _a === void 0 ? void 0 : _a.call(popupProps, event);\n }, [activateParent, popupProps]);\n const handleSelect = React.useCallback((activeItem, event) => {\n var _a;\n if (activeItem.items && activeItem.path) {\n setActiveMenuPath(activeItem.path);\n }\n else {\n (_a = activeItem.action) === null || _a === void 0 ? void 0 : _a.call(activeItem, event, data);\n toggle(false);\n }\n }, [data, setActiveMenuPath, toggle]);\n const handleKeydown = React.useCallback((activeItemIndex, event) => {\n switch (event.key) {\n case 'Escape': {\n if (isSubmenu) {\n event.stopPropagation();\n activateParent === null || activateParent === void 0 ? void 0 : activateParent();\n }\n return false;\n }\n case 'Enter':\n case ' ': {\n const activeItem = items[activeItemIndex];\n const isSubmenuToggleActive = activeItem === null || activeItem === void 0 ? void 0 : activeItem.items;\n if (isSubmenu || isSubmenuToggleActive) {\n event.stopPropagation();\n event.preventDefault();\n }\n if (activeItem) {\n handleSelect(activeItem, event);\n }\n return false;\n }\n }\n return true;\n }, [activateParent, handleSelect, isSubmenu, items]);\n const isNavigationActive = open && stringifyNavigationPath(path) === stringifyNavigationPath(activeMenuPath);\n const { activeItemIndex, setActiveItemIndex, reset: resetNavigation, } = useListNavigation({\n items,\n skip: shouldSkipItemNavigation,\n anchorRef: navigationAnchorRef,\n onAnchorKeyDown: handleKeydown,\n disabled: !isNavigationActive,\n initialValue: isSubmenu ? 0 : -1,\n });\n React.useEffect(() => {\n if (!open) {\n resetNavigation();\n }\n }, [open, resetNavigation]);\n return (_jsx(Popup, Object.assign({ open: open, anchorRef: anchorRef, onClose: onClose }, popupProps, { onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: children || (_jsx(Menu, Object.assign({ className: cnDropdownMenu('menu'), size: size }, menuProps, { children: items.map((item, index) => {\n var _a;\n const isActive = isNavigationActive && activeItemIndex === index;\n const activate = () => setActiveItemIndex(index);\n const isActiveParent = open &&\n !isActive &&\n activeMenuPath.length !== 0 &&\n stringifyNavigationPath(item.path) ===\n stringifyNavigationPath(activeMenuPath.slice(0, item.path.length));\n const extraProps = Object.assign(Object.assign({}, item.extraProps), { onMouseEnter: activate });\n return (_jsx(DropdownMenuItem, Object.assign({ className: cnDropdownMenu('menu-item', {\n separator: isSeparator(item),\n 'active-parent': isActiveParent,\n 'with-submenu': Boolean((_a = item.items) === null || _a === void 0 ? void 0 : _a.length),\n }, item.className), selected: isActive, popupProps: popupProps, closeMenu: onClose }, item, { extraProps: extraProps }), index));\n }) }))) })));\n};\n","import * as React from 'react';\nimport { moveBack } from './moveBack';\nimport { moveForward } from './moveForward';\nexport function useListNavigation({ items, skip, pageSize, processHomeKey = true, processEndKey = true, anchorRef, disabled = false, initialValue = -1, onAnchorKeyDown, }) {\n const [activeItemIndex, setActiveItemIndex] = React.useState(initialValue);\n const reset = React.useCallback(() => {\n setActiveItemIndex(initialValue);\n }, [initialValue]);\n React.useEffect(() => {\n if (items) {\n reset();\n }\n }, [items, reset]);\n React.useLayoutEffect(() => {\n if (disabled) {\n return undefined;\n }\n const canNavigate = items.some((item) => !(skip === null || skip === void 0 ? void 0 : skip(item)));\n if (!canNavigate) {\n return undefined;\n }\n const anchor = anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current;\n if (!anchor) {\n return undefined;\n }\n const handleKeyDown = (event) => {\n const shouldProcessKeydown = onAnchorKeyDown === null || onAnchorKeyDown === void 0 ? void 0 : onAnchorKeyDown(activeItemIndex, event);\n if (shouldProcessKeydown === false) {\n return;\n }\n switch (event.key) {\n case 'ArrowDown': {\n event.preventDefault();\n // Go 1 step forward\n setActiveItemIndex((previousActiveItemIndex) => moveForward(items, previousActiveItemIndex, 1, skip));\n break;\n }\n case 'ArrowUp': {\n event.preventDefault();\n // Go 1 step back\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, 1, skip));\n break;\n }\n case 'PageDown': {\n if (!pageSize) {\n return;\n }\n event.preventDefault();\n // Go pageSize steps forward\n setActiveItemIndex((previousActiveItemIndex) => moveForward(items, previousActiveItemIndex, pageSize, skip));\n break;\n }\n case 'PageUp': {\n if (!pageSize) {\n return;\n }\n event.preventDefault();\n // Go pageSize steps back\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, pageSize, skip));\n break;\n }\n case 'Home': {\n if (!processHomeKey) {\n return;\n }\n event.preventDefault();\n // Go to the start of the list\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, previousActiveItemIndex, skip));\n break;\n }\n case 'End': {\n if (!processEndKey) {\n return;\n }\n event.preventDefault();\n // Go to the end of the list\n setActiveItemIndex((previousActiveItemIndex) => moveBack(items, previousActiveItemIndex, previousActiveItemIndex + 1, skip));\n break;\n }\n }\n };\n anchor.addEventListener('keydown', handleKeyDown);\n return () => {\n anchor.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n activeItemIndex,\n anchorRef,\n disabled,\n items,\n onAnchorKeyDown,\n pageSize,\n processEndKey,\n processHomeKey,\n skip,\n ]);\n return {\n activeItemIndex,\n setActiveItemIndex,\n reset,\n };\n}\n","export function isSubmenuOpen(path, activeMenuPath) {\n var _a;\n return (_a = path === null || path === void 0 ? void 0 : path.every((item, index) => item === (activeMenuPath === null || activeMenuPath === void 0 ? void 0 : activeMenuPath[index]))) !== null && _a !== void 0 ? _a : false;\n}\n","import * as React from 'react';\nimport { DropdownMenuNavigationContext } from '../DropdownMenuNavigationContext';\nimport { isSubmenuOpen } from '../utils/isSubmenuOpen';\nexport function useSubmenu({ items, path }) {\n const { activeMenuPath, setActiveMenuPath } = React.useContext(DropdownMenuNavigationContext);\n const hasSubmenu = Boolean(path) && Boolean(items === null || items === void 0 ? void 0 : items.length);\n const closeSubmenu = React.useCallback(() => {\n if (!path) {\n return;\n }\n setActiveMenuPath(path.slice(0, path.length - 1));\n }, [path, setActiveMenuPath]);\n const openSubmenu = React.useCallback(() => {\n if (!path) {\n return;\n }\n setActiveMenuPath(path);\n }, [path, setActiveMenuPath]);\n return {\n hasSubmenu,\n isSubmenuOpen: isSubmenuOpen(path, activeMenuPath),\n openSubmenu,\n closeSubmenu,\n };\n}\n","'use client';\nimport { __rest } from \"tslib\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { ChevronLeft, ChevronRight } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { Menu } from '../Menu';\nimport { useDirection } from '../theme';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuPopup } from './DropdownMenuPopup';\nimport { useSubmenu } from './hooks/useSubmenu';\nexport const DropdownMenuItem = (_a) => {\n var { text, action, items: subMenuItems, popupProps, closeMenu, children, path } = _a, props = __rest(_a, [\"text\", \"action\", \"items\", \"popupProps\", \"closeMenu\", \"children\", \"path\"]);\n const { toggle, data } = React.useContext(DropdownMenuContext);\n const menuItemRef = React.useRef(null);\n const direction = useDirection();\n const { hasSubmenu, isSubmenuOpen, closeSubmenu, openSubmenu } = useSubmenu({\n items: subMenuItems,\n path,\n });\n const handleCloseMenu = React.useCallback(() => {\n const close = () => {\n if (closeMenu) {\n closeMenu();\n }\n else {\n toggle(false);\n }\n };\n if (hasSubmenu) {\n closeSubmenu();\n // Wait for submenu to close\n requestAnimationFrame(close);\n }\n else {\n close();\n }\n }, [closeMenu, closeSubmenu, hasSubmenu, toggle]);\n const handleMenuItemClick = React.useCallback((event) => {\n if (hasSubmenu) {\n return;\n }\n action === null || action === void 0 ? void 0 : action(event, data);\n handleCloseMenu();\n }, [action, data, handleCloseMenu, hasSubmenu]);\n const extraProps = React.useMemo(() => {\n return Object.assign(Object.assign({}, props.extraProps), { onMouseEnter: (event) => {\n var _a, _b;\n (_b = (_a = props.extraProps) === null || _a === void 0 ? void 0 : _a.onMouseEnter) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n if (hasSubmenu) {\n openSubmenu();\n }\n }, onMouseLeave: (event) => {\n var _a, _b;\n (_b = (_a = props.extraProps) === null || _a === void 0 ? void 0 : _a.onMouseLeave) === null || _b === void 0 ? void 0 : _b.call(_a, event);\n if (hasSubmenu) {\n closeSubmenu();\n }\n } });\n }, [props.extraProps, closeSubmenu, hasSubmenu, openSubmenu]);\n const subMenuPlacement = React.useMemo(() => (direction === 'rtl' ? ['left-start', 'right-start'] : ['right-start', 'left-start']), [direction]);\n const iconEnd = React.useMemo(() => hasSubmenu ? (_jsx(Icon, { data: direction === 'rtl' ? ChevronLeft : ChevronRight, size: 10, className: cnDropdownMenu('sub-menu-arrow') })) : (props.iconEnd), [hasSubmenu, direction, props.iconEnd]);\n return (_jsxs(React.Fragment, { children: [_jsx(Menu.Item, Object.assign({ ref: menuItemRef }, props, { extraProps: extraProps, onClick: handleMenuItemClick, iconEnd: iconEnd, children: text || children })), hasSubmenu && subMenuItems && (_jsx(DropdownMenuPopup, { popupProps: Object.assign(Object.assign({}, popupProps), { className: cnDropdownMenu('sub-menu', popupProps === null || popupProps === void 0 ? void 0 : popupProps.className), placement: subMenuPlacement }), items: subMenuItems, path: path, open: isSubmenuOpen, anchorRef: menuItemRef, onClose: handleCloseMenu }))] }));\n};\n","export function toItemList(items, separator, path = [], startIndex = 0) {\n const updatedItems = [];\n let addedGroup = false;\n let index = startIndex;\n for (const item of items) {\n if (Array.isArray(item)) {\n const groupItems = toItemList(item, separator, path, index);\n if (updatedItems.length !== 0) {\n updatedItems.push(separator);\n }\n updatedItems.push(...groupItems);\n index += groupItems.length;\n addedGroup = true;\n }\n else {\n if (item.hidden) {\n continue;\n }\n if (addedGroup) {\n updatedItems.push(separator);\n }\n const updatedItem = Object.assign(Object.assign({}, item), { path: [...path, index++] });\n if (item.items) {\n updatedItem.items = toItemList(item.items, separator, updatedItem.path);\n }\n updatedItems.push(updatedItem);\n addedGroup = false;\n }\n }\n return updatedItems;\n}\n","'use client';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { Ellipsis } from '@gravity-ui/icons';\nimport { useActionHandlers } from '../../hooks/useActionHandlers';\nimport { Button } from '../Button';\nimport { Icon } from '../Icon';\nimport { cnDropdownMenu } from './DropdownMenu.classname';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem as DropdownMenuItemComponent } from './DropdownMenuItem';\nimport { DropdownMenuNavigationContextProvider } from './DropdownMenuNavigationContext';\nimport { DropdownMenuPopup } from './DropdownMenuPopup';\nimport { dropdownMenuSeparator } from './constants';\nimport { usePopupVisibility } from './hooks/usePopupVisibility';\nimport { useScrollHandler } from './hooks/useScrollHandler';\nimport { toItemList } from './utils/toItemList';\nimport './DropdownMenu.css';\nconst DropdownMenu = ({ items = [], size = 'm', icon = _jsx(Icon, { data: Ellipsis }), open, onOpenToggle, hideOnScroll = true, data, disabled, switcher, renderSwitcher, switcherWrapperClassName, defaultSwitcherProps, defaultSwitcherClassName, onSwitcherClick, menuProps, popupProps, children, }) => {\n const anchorRef = React.useRef(null);\n const { isPopupShown, togglePopup, closePopup } = usePopupVisibility(open, onOpenToggle, disabled);\n useScrollHandler(closePopup, anchorRef, !isPopupShown || !hideOnScroll);\n const contextValue = React.useMemo(() => ({\n toggle: togglePopup,\n data,\n }), [data, togglePopup]);\n const itemsList = React.useMemo(() => toItemList(items, dropdownMenuSeparator), [items]);\n const handleSwitcherClick = React.useCallback((event) => {\n if (disabled) {\n return;\n }\n onSwitcherClick === null || onSwitcherClick === void 0 ? void 0 : onSwitcherClick(event);\n togglePopup();\n }, [disabled, onSwitcherClick, togglePopup]);\n const { onKeyDown: handleSwitcherKeyDown } = useActionHandlers(handleSwitcherClick);\n const switcherProps = React.useMemo(() => ({\n onClick: handleSwitcherClick,\n onKeyDown: handleSwitcherKeyDown,\n }), [handleSwitcherClick, handleSwitcherKeyDown]);\n return (_jsxs(DropdownMenuContext.Provider, { value: contextValue, children: [_jsx(\"div\", Object.assign({ ref: anchorRef, className: cnDropdownMenu('switcher-wrapper', switcherWrapperClassName) }, (renderSwitcher ? {} : switcherProps), { children: (renderSwitcher === null || renderSwitcher === void 0 ? void 0 : renderSwitcher(switcherProps)) || switcher || (_jsx(Button, Object.assign({ view: \"flat\", size: size }, defaultSwitcherProps, { className: cnDropdownMenu('switcher-button', defaultSwitcherClassName), disabled: disabled, children: icon }))) })), _jsx(DropdownMenuNavigationContextProvider, { anchorRef: anchorRef, disabled: !isPopupShown, children: _jsx(DropdownMenuPopup, { items: itemsList, open: isPopupShown, size: size, menuProps: menuProps, anchorRef: anchorRef, onClose: closePopup, popupProps: popupProps, children: children }) })] }));\n};\nconst DropdownMenuExport = Object.assign(DropdownMenu, { Item: DropdownMenuItemComponent });\nexport { DropdownMenuExport as DropdownMenu };\n","import * as React from 'react';\nimport { useConditionallyControlledState } from '../../../hooks/private';\nexport function usePopupVisibility(visible, onChangeVisibility, disabled) {\n const [isPopupShown, setPopupShown] = useConditionallyControlledState(visible, onChangeVisibility, false);\n const togglePopup = React.useCallback((open) => {\n setPopupShown((isShown) => {\n if (typeof open === 'boolean') {\n return open;\n }\n return !isShown;\n });\n }, [setPopupShown]);\n const closePopup = React.useCallback(() => {\n setPopupShown(false);\n }, [setPopupShown]);\n React.useEffect(() => {\n if (disabled && isPopupShown) {\n closePopup();\n }\n }, [closePopup, disabled, isPopupShown]);\n return {\n isPopupShown,\n togglePopup,\n closePopup,\n };\n}\n","import { useStateWithCallback } from '../useStateWithCallback';\nexport function useConditionallyControlledState(property, setProperty, initialState, isControlled = property !== undefined && setProperty !== undefined) {\n const state = useStateWithCallback((property || initialState), setProperty);\n if (isControlled) {\n return [property, setProperty];\n }\n return state;\n}\n","import * as React from 'react';\nimport { isFunction } from '../../../components/utils/typeCheckers';\nexport function useStateWithCallback(initialValue, callback) {\n const [state, setState] = React.useState(initialValue);\n const setWithCallback = React.useCallback((nextValue) => {\n if (isFunction(nextValue)) {\n setState((previousState) => {\n const newState = nextValue(previousState);\n callback === null || callback === void 0 ? void 0 : callback(newState);\n return newState;\n });\n }\n else {\n callback === null || callback === void 0 ? void 0 : callback(nextValue);\n setState(nextValue);\n }\n }, [callback]);\n return [state, setWithCallback];\n}\n","export const isFunction = (value) => typeof value === 'function';\n","import * as React from 'react';\nexport function useScrollHandler(onScroll, anchorRef, disabled) {\n React.useEffect(() => {\n if (disabled) {\n return undefined;\n }\n const handleScroll = (event) => {\n if (event.target.contains(anchorRef.current)) {\n onScroll(event);\n }\n };\n document.addEventListener('scroll', handleScroll, true);\n return () => {\n document.removeEventListener('scroll', handleScroll, true);\n };\n }, [anchorRef, onScroll, disabled]);\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useUniqId } from '../../hooks';\nimport { block } from '../utils/cn';\nconst b = block('menu');\nexport const MenuGroup = React.forwardRef(function MenuGroup({ label, children, style, className, qa }, ref) {\n const labelId = useUniqId();\n return (_jsx(\"li\", { ref: ref, className: b('list-group-item'), children: _jsxs(\"div\", { style: style, className: b('group', className), \"data-qa\": qa, children: [label && (_jsx(\"div\", { id: labelId, className: b('group-label'), children: label })), _jsx(\"ul\", { role: \"group\", \"aria-labelledby\": labelId, className: b('group-list'), children: children })] }) }));\n});\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { useActionHandlers } from '../../hooks';\nimport { block } from '../utils/cn';\nimport { eventBroker } from '../utils/event-broker';\nconst b = block('menu');\nexport const MenuItem = React.forwardRef(function MenuItem({ icon, iconStart = icon, iconEnd, title, disabled, active, selected, href, target, rel, onClick, style, className, theme, extraProps, children, qa, }, ref) {\n const { onKeyDown } = useActionHandlers(onClick);\n const handleClickCapture = React.useCallback((event) => {\n eventBroker.publish({\n componentId: 'MenuItem',\n eventId: 'click',\n domEvent: event,\n });\n }, []);\n const defaultProps = {\n role: 'menuitem',\n onKeyDown: onClick && !disabled ? onKeyDown : undefined,\n };\n const commonProps = {\n title,\n onClick: disabled ? undefined : onClick,\n onClickCapture: disabled ? undefined : handleClickCapture,\n style,\n tabIndex: disabled ? -1 : 0,\n className: b('item', { disabled, active, selected, theme, interactive: Boolean(onClick) || Boolean(href) }, className),\n 'data-qa': qa,\n };\n const content = [\n iconStart && (_jsx(\"div\", { className: b('item-icon'), children: iconStart }, \"icon-start\")),\n _jsx(\"div\", { className: b('item-content'), children: children }, \"content\"),\n iconEnd && (_jsx(\"div\", { className: b('item-icon-end'), children: iconEnd }, 'icon-end')),\n ];\n let item;\n if (href) {\n item = (_jsx(\"a\", Object.assign({}, defaultProps, extraProps, commonProps, { href: href, target: target, rel: rel, children: content })));\n }\n else {\n item = (_jsx(\"div\", Object.assign({}, defaultProps, extraProps, commonProps, { children: content })));\n }\n return (_jsx(\"li\", { ref: ref, className: b('list-item'), children: item }));\n});\n","'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from 'react';\nimport { block } from '../utils/cn';\nimport { MenuGroup } from './MenuGroup';\nimport { MenuItem } from './MenuItem';\nimport './Menu.css';\nconst b = block('menu');\n// TODO: keyboard navigation, Up/Down arrows and Enter\nexport const Menu = React.forwardRef(function Menu({ size = 'm', children, style, className, qa }, ref) {\n return (_jsx(\"ul\", { ref: ref, role: \"menu\", \n // tabIndex={0}\n style: style, className: b({ size }, className), \"data-qa\": qa, children: children }));\n});\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\n"],"names":["fetchFromTabletErrorsApi","action","cluster","params","cancelToken","axios","post","concat","_objectSpread","Set","AttributesButton","_ref","_ref$view","view","_ref$size","size","rest","_objectWithoutProperties","_excluded","_jsx","Button","children","Icon","awesome","connect","openAttributesModal","title","_ref$getPathProps","getPathProps","path","exactPath","attribute","attributes","_ref$withTooltip","withTooltip","_ref$tooltipProps","tooltipProps","placement","content","onClick","pathProps","block","cn","Dropdown","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","state","popupVisible","anchor","React","toggle","setState","prevState","open","close","_createClass","key","value","_this$props","this","props","button","trigger","actionProps","undefined","onMouseEnter","onMouseLeave","template","_this$props$template","data","renderer","templates","get","__default__","_this$props2","popup","directions","Popup","onClose","anchorRef","hasArrow","renderTemplate","className","_jsxs","ref","renderButton","renderPopup","Component","defaultProps","zIndexGroupLevel","EditableAsText","onChange","text","withControls","disableEdit","cancelOnClose","openOnClick","renderEditor","onModeChange","_props$saveButtonView","saveButtonView","_props$cancelButtonVi","cancelButtonView","_React$useState","_React$useState2","_slicedToArray","editMode","setEditMode","_React$useState3","_React$useState4","input","setInput","useEffect","handleChangeMode","useCallback","isEdit","closeEditMode","startTextEdit","handleChange","val","applyValue","closeAndResetValue","onApply","handleKeyDown","evt","controlSize","_Fragment","onBlur","TextInput","autoFocus","onUpdate","onKeyDown","extraProps","onMouseDown","type","EditButton","getHistogram","histogram","createGetQuartiles","createSelector","hammer","stat","quartiles","createGetPDF","pdf","createGetECDF","ecdf","steps","unshift","x","min","y","push","bucketNumber","bucketSize","HistogramChart","format","dataName","lineOnly","yagrData","xFormat","formatLib","Bytes","Number","_ref2","_ref5","_ref6","_step","buckets","timeline","NaN","_iterator","_createForOfIteratorHelper","s","n","done","item","getX","getY","err","e","f","graphs","color","getSerieColor","step","getLineOnlyData","_ref3","_ref4","lineData","j","i","_buckets$i","bestX","itemX","isArray","calcBestY","Math","scale","renderOptions","gap","getColumnData","res","libraryConfig","axes","values","_d","map","side","grid","show","y1","scales","max","tooltip","render","tooltipData","_first$rows","_first$rows2","_second$rows","_renderDefaultTooltip","_tooltipData$scales","first","second","columnValue","rows","originalValue","lineValue","_ref7","colValue","colX0","colX1","lineX","lp","compact_","join","renderDefaultTooltip","digits","sources","YagrChartKit","v","left","right","ly","ry","lx","Histogram","activeHistogram","handleHistogramChange","histogramItems","isDataGood","isDatailedLine","setDetailed","Select","options","map_","keys_","width","Checkbox","checked","q25","q50","q75","quartilesProps","PropTypes","pdfProps","valueMax","valueMin","ecdfProps","getQuartiles","getPDF","getECDF","getIsDataGood","pdfData","ecdfData","xmlns","fill","viewBox","d","b","Info","infoIcon","toaster","Toaster","LoadDataHandler","error","loaded","errorData","add","theme","name","autoHiding","message","NO_VALUE","actions","label","showErrorPopup","_this$props2$alwaysSh","alwaysShowError","Error","_ypath$getValues","ypath","_ypath$getValues2","compressionRatio","compressionCodec","erasureCodec","replicationFactor","hideReplicationFactor","helpUrl","docsUrl","UIFactory","docsUrls","visible","metaTablePresetMain","_UIFactory$yqlWidgetS","id","owner","account","creationTime","modificationTime","accessTime","yql_op_id","yqlLink","yqlWidgetSetup","renderYqlOperationLink","Template","Id","SubjectCard","AccountLink","Boolean","Time","time","valueFormat","_toConsumableArray","makeTTLItems","showTTLLabel","RowsCount","count","isDynamic","Popover","AutomaticModeSwitchEditor","onEdit","setError","handleAdd","_asyncToGenerator","_regeneratorRuntime","_callee","form","_form$getState","_context","prev","next","getState","t0","stop","_x","YTDFDialog","pristineSubmittable","headerProps","onAdd","initialValues","fields","caption","extras","makeErrorFields","AutomaticModeSwitch","showEditor","setShowEditor","handleShow","handleClose","Switch","StatusBulb","replicatedTableTracker","getValue","LabelOnOff","tableSize","mediumList","getValues","rowCount","chunkCount","dataWeight","FormattedValue","tableStorage","tableType","optimizeFor","Label","compression","erasureReplication","dynTableInfo","tabletErrorCount","_ypath$getValues3","_ypath$getValues4","tabletCellBundle","tabletState","inMemoryMode","tabletUrl","tabletActiveBundleLink","Link","routed","url","makeMetaItems","_ref$mediumList","_ref$tabletErrorCount","onEditEnableReplicatedTableTracker","cf","sorted","chaosCellBundle","enable_replicated_table_tracker","chaosUrl","tabletActiveChaosBundleLink","reduce_","acc","getCommonFields","CypressNodeTypes","REPLICATED_TABLE","REPLICATION_LOG_TABLE","main","automaticModeSwitch","CHAOS_REPLICATED_TABLE","metaTablePresetSize","uncompressedDataSize","compressedDataSize","primaryMedium","usageDiskSpace","diskSpace","mediumsTemplates","medium","usageMediumDiskSpace","mediumDiskSpace","showMediums","filter","Readable","attrs","_ypath$getValue","expiration_time","expiration_timeout","timeout","withTTL","moment","qa","makeNavigationLink","formatTimeDuration","TTLLabel","SchemaDataType","type_v3","primitiveTypes","useSelector","getPrimitiveTypesMap","dataTypeProps","getType","parseV3Type","_unused","DataType","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","order","allowUnordered","withUndefined","nextSortOrderValue","hidden","icon","Tooltip","ReadableField","face","Secondary","disabled","Bold","SecondaryBold","Warning","WarningLight","NoWrap","Escaped","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","TextInputWithDebounce","_props$debounce","debounce","_props$onUpdate","onEnterKeyDown","handleChangeExt","throttle_","cancel","handleBlur","WarningIcon","hoverContent","Text","variant","typedMemo","ErrorBoundary","constructor","super","resetError","getDerivedStateFromError","componentDidCatch","_a","_b","onError","componentDidUpdate","prevProps","code","NO_DATA","i18n","toString","getErrorMessage","renderError","renderPluginLoader","pluginLoader","Object","assign","ChartKitComponent","widgetRef","instanceRef","propsId","isMobile","restProps","ckId","lang","settings","plugin","find","iteratedPlugin","UNKNOWN_PLUGIN","ChartComponent","reflow","details","current","fallback","mobile","YagrPlugin","set","plugins","COLORS","serieIndex","DEFAULT_SHORTCUTS","YTTimelineImpl","topShortcuts","setWidth","setRef","onResize","w","contentRect","useResizeObserver","element","Timeline","padding","hasPicker","wrapper","ruler","picker","YTTimeline","ONE_DAY_MS","calcFromTo","timeRange","shortcutValue","calculateShortcutTime","_ref6$from","from","floor","Date","now","_ref6$to","to","ceil","withRouter","_props$theme","match","computeStateQuery","FormattedText","FormattedTextOrLink","_ref$asLink","asLink","FormattedLink","FormattedId","_useState","useState","_useState2","hovered","setHovered","ClipboardButton","printColumnAsBytes","columnName","column","columns","printColumnAsNumber","renderText","mix","elem","mods","textProps","decode","String","prepareTextProps","printColumnAsTimeDurationWithMs","getColumn","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","printColumnAsError","_typeof","hideOopsMsg","asNumber","_templates","templateId","keys","reduce","newTemplates","wrapRenderMethods","ROWS_PER_PAGE","FLAG_NAME_PREFIX","SHORT_TITLE","access_control_object","COLUMNS_FELDS","compose","withVisible","_SHORT_TITLE$idmKind","aclMode","buttonClassName","idmKind","requestPermissions","cancelRequestPermissions","columnGroups","buttonProps","_UIFactory$getAclApi","getAclApi","requestPermissionsFields","_UIFactory$getAclApi$","requestPermissionsFlags","buttonsTitle","permissionFlags","forEach","k","currentCaption","_UIFactory$getAclPerm","getAclPermissionsSettings","permissionsToRequest","getAvailablePermissions","availablePermissions","setAvailablePermissions","onShow","sent","finish","firstItemDisabled","IdmObjectType","ACCOUNT","choices","permissions","PermissionsControl","getChoiceName","valueWithCheckedFirstChoice","availableFields","useMemo","disabledChoices","required","makeLink","readColumns","readColumnGroup","subjects","placeholder","allowedTypes","duration","commentHeader","comment","inheritance_mode","items","INHERITANCE_MODE_TYPES","hideClear","hideFilter","with","useColumns","AclMode","COLUMN_GROUPS_PERMISSISONS","dialogFields","flagsIndex","field","has","flags","flagInfo","help","initialValue","splice","_ref2$editAcl","editAcl","_ref2$editColumnsAcl","editColumnsAcl","OBJECT_AND_DESCENDANTS","validate","validationError","selectCellPreviewVisible","navigation","modals","cellPreviewModal","selectCellPreviewLoading","loading","selectCellPreviewData","selectCellPreviewYtCliDownloadCommand","ytCliDownloadCommand","selectCellPreviewNoticeText","noticeText","selectErrorPreviewCellPath","CellPreviewModal","dispatch","useDispatch","unipikaSettings","getPreviewCellYsonSettings","SimpleModal","onCancel","closeCellPreviewAndCancelRequest","wrapperClassName","Flex","direction","PreviewContent","$type","$value","$tag","isMediaTag","src","alt","Yson","folding","tableSettings","dynamicRenderScrollParentGetter","customLayout","toolbar","reShortName","makeRegexpFromSettings","uiSettings","reShortNameFromAddress","reTabletNodeShortName","reShortNameFromTabletNodeAddress","Host","_ref$address","address","prefix","copyBtnClassName","useText","asTabletNode","inlineMargins","host","re","_res$groups","exec","groups","shortname","suffix","calcShortNameByRegExp","getCluster","withSplit","_WithSplit","WithSplit","ReactDOM","document","getElementById","SPLIT_PANE_ID","displayName","getDisplayName","SidePanelPortal","useSidePanel","renderContent","widgetOpened","setWidgetOpened","openWidget","splitScreen","mergeScreen","closeWidget","widgetContent","observer","ResizeObserver","observe","unobserve","genAccountsUrl","Page","ACCOUNTS","AccountsTab","GENERAL","propsCluster","inline","currentCluster","ellipsis","pathToFileName","replace","getOnlyFolders","suggestions","filter_","child","showErrorInModal","_getCorrectInnerError","ErrorMessage","innerErrors","correctErrorCodes","values_","NetworkCode","find_","some_","getCorrectInnerError","inner_errors","prepareErrorMessage","SHOW_ERROR","hideError","HIDE_ERROR","openEditingPopup","objectPath","multipleMode","closeEditingPopup","withScope","scope","ResComponent","useHotkeysScope","PathEditorModal","_handleBlur","handleFocus","event","onFocus","_handleFocus","newPath","_handleChange","handleApply","_handleApply","setPath","editingPath","inProcess","description","showError","errorMessage","PathEditor","customFilter","defaultPath","showErrors","hasClear","modalTitle","Modal","onConfirm","onConfirmButtonClick","onCancelButtonClick","isConfirmDisabled","confirmText","SET_PATH","requests","CancelHelper","copyObjectIntoDirectory","parts","split","yt","copy","parameters","source_path","preparePath","destination_path","prepareDestinationPath","cancellation","saveCancelToken","copySingleObject","charAt","exists","then","exist","copyObjectWithRename","CopyObjectModal","preserve_account","recursive","handleConfirmButtonClick","copyPath","doCopy","handleCancelButtonClick","abortRequests","resetOptions","CLOSE_COPY_OBJECT_POPUP","copying","onUpdateRecursiveCopy","onUpdatePreserveAccount","toPath","_this2","_this$props3","copyObject","updateView","_this$state","_this$props4","mapDispatchToProps","copyingPath","onSuccess","COPY_OBJECT","REQUEST","Promise","resolve","startTransaction","copyRequests","node","command","transaction_id","titleUnquoted","wrapBatchPromise","executeBatchWithRetries","YTApiId","navigationCopy","errorTitle","saveCancelSourceCb","commitTransaction","abortTransaction","reject","copyObjects","SUCCESS","CANCELLED","FAILURE","removeAllRequests","_navigation$modals$co","CreateDirectoryModal","onRecursiveUpdate","_this$props$clearCrea","clearCreateDirectoryError","creatingPath","createDirectory","CLOSE_CREATE_DIRECTORY_POPUP","creating","CREATE_DIRECTORY","create","CREATE_MESSAGE","_state$navigation$mod","moveObjectIntoDirectory","move","moveSingleObject","moveObjectWithRename","MoveObjectModal","movedPath","doMove","CLOSE_MOVE_OBJECT_POPUP","renaming","moveObject","afterMoveStrategy","updatePath","destinationPath","MOVE_OBJECT","moveRequests","navigationMove","moveObjects","entityId","output_format","$attributes","encode_utf8","rumLogError","resolveEntityPath","JSON","parse","result","_items$","getPath","_navigation$modals$mo","getNextObjectName","initialPath","INITIAL_STEP","checkPathExists","isExists","findCorrectObjectName","inTrash","startsWith","restoreObject","restorePath","RESTORE_OBJECT","EXIST","correctRestorePath","OPEN_RESTORE_POPUP","INCORRECT_PATH","openAction","errorAction","RestoreObjectModal","restoredPath","CLOSE_RESTORE_POPUP","restoring","_navigation$modals$re","AclTabParams","_AclTabParams","PATH","rumType","RumMeasureTypes","NAVIGATION_TAB_ACL","NavigationAcl","ACCESS_CONTROL_OBJECT","NAVIGATION_TAB_ACL_ACCESS","AccessContentAcl","createACLTabComponent","mapStateToProps","getAttributes","getRawPath","isPrincipalACLtab","mode","loadState","getAclLoadState","makeMapStateToProps","_AclTabParams$idmKind","useAppRumMeasureStart","startDeps","allowStart","isFinalLoadingStatus","useRumMeasureStop","stopDeps","allowStop","makeComponentWithRum","AccessAclTab","makeTableRumId","measureId","NAVIGATION_CONTENT_TABLE_DYNAMIC","NAVIGATION_CONTENT_TABLE_STATIC","RumWrapper","getColumnPresetEndpoint","utf8","utils","_loadStaticTable","requestOutputFormat","setup","useZeroRangeForPreload","stringLimit","transaction","moveBackward","requestedPageSize","defaultTableColumnLimit","login","offsetValue","useYqlTypes","decodedColumns","outputFormat","apiId","getCellSize","getTransaction","getMoveOffsetBackward","getRequestedPageSize","getDefaultTableColumnLimit","global","getColumns","getNextOffset","isYqlTypesEnabled","decodeNameField","getRequestOutputFormat","prepareRequest","table_reader","workload_descriptor","category","dump_error_into_response","omit_inaccessible_columns","relativePath","getIsDynamic","LOAD_TYPE","PRELOAD","tableReadPreload","tableRead","fetch","readStaticTable","reverseRows","abrupt","loadTableRows","transformResponse","parsedData","rawResponse","headers","getIsStrict","loadPromise","keyColumns","getKeyColumns","_getNextOffset","offset","descending","orderBySupported","offsetColumns","limit","isEmpty_","preparedOffset","part","trim","tablet_index","row_index","allColumns","Columns","getSchemaColumns","dynTableCheckPerm","ytApiV3Id","checkPermission","permission","user","keyColumnsNames","keyBy_","_reduce_","index","availableColumns","omittedColumns","has_","deniedKeyColumns","query","Query","prepareQuery","dynTableSelectRowsPreload","selectRows","parseErrorFromResponse","getParsedError","_prepareRows","prepareRows","yqlTypes","getVisibleColumns","getOmittedColumns","getDeniedKeyColumns","key_columns","dynTableSelectRows","readDynamicTable","loadDynamicTable","_x2","_x3","_x4","_x5","loadStaticTable","schemaColumns","getTableColumnNamesFromSchema","injectColumnsFromSchema","updateTableData","_getNextOffset2","GET_TABLE_DATA","UPDATE","storedColumns","preparedColumns","prepareColumns","preparedOmittedColumns","prepareOmittedColumns","setColumns","newOffsetValue","previousRows","getRows","addRowCount","slice","prepareKey","getColumnsValues","SET_OFFSET","SET_COLUMNS","closeColumnSelectorModal","CLOSE_COLUMN_SELECTOR_MODAL","updateColumns","columnsOrder","getColumnsOrder","storeAllColumns","SET_COLUMNS_ORDER","setColumnsOrder","SET_TABLE_COLUMNS_PRESET_HASH","toggleFullScreen","TOGGLE_FULL_SCREEN","FilePicker","inputRef","onLinkClick","click","target","files","multiple","ClickableText","WRITE_ATTRIBUTES","json","enable_type_conversion","yson","yamr","dsv","enable_string_to_all_conversion","schemaful_dsv","xlsx","getFileTypes","payload","fileTypes","getConfigUploadTable","uploadTableExcelBaseUrl","UploadManager","hasUpcomingFile","file","fileType","progress","inProgress","append","firstRowAsNames","secondRowAsTypes","showOverwriteConfirmation","cancelHelper","onReset","onFile","cancelUpload","onDragOver","preventDefault","stopPropagation","onDrop","dataTransfer","lastDotIndex","lastIndexOf","extStr","substr","fileError","checkFile","onDragEnter","onDragLeave","renderConfirm","renderClose","onUploadProgress","onConfirmImpl","setOverwriteConfirmationVisible","proxy","externalProxy","uploadConfig","onStartUpload","txId","writeTable","uploadTableUseLocalmode","location","input_format","getWriteAttributes","removeAllAndSave","onStopUpload","onXlsxUpload","_this$state2","dropable","empty","renderFileContent","renderSettings","renderProgress","_this$typeSpecificFie","typeSpecificFields","initials","modal","_this3","_this$state3","helpLink","HelpLink","total","totalStr","loadedStr","Progress","stack","uploadTableMaxSize","schema","withColumns","isCancel","_error$response","response","_this4","_this$state4","readyUrl","uploadUrl","_this4$state","start_row","URLSearchParams","header","types","formData","FormData","withCredentials","withXSRFToken","xsrfCookieName","getXsrfCookieName","xsrfHeaderName","generateNextToken","_this5","footerContent","renderFooterContent","renderCustomConfirm","renderCustomCancel","contentClassName","renderOverwriteConfirmationDialog","connector","getSchema","_getCurrentClusterCon","getCurrentClusterConfig","DYN_TABLES_ALLOWED_STATES_OF_ACTION","mount","unmounted","unmount","mounted","frozen","freeze","unfreeze","DYN_TABLES_ALLOWED_ACTIONS_BY_STATE","mixed","showDynTablesStateModalByPaths","paths","DYN_TABLES_STATE_MODAL_PARTIAL","showModal","showDynTablesStateModalByNodes","selectedNodes","allowedFrom","dynTablesChangeState","wrapApiPromiseByToaster","navigationDynTableState","toasterName","successContent","batchType","skipSuccessToast","waitWhileThereIsTransient","capitalize_","delayed","navigationGetTabletState","results","toRecheck","output","DynamicActions","Fragment","StaticActions","DownloadManager","table","mountUnmountTable","metrics","countEvent","navigation_dynamic_table_action","ytApiV3","console","RemountAlert","attributesWithTypes","getAttributesWithTypes","pending","setPending","handleOnRemount","ytApiV4","remountTable","remountNeededTabletCount","tabletCount","showDiffInfo","diffInfo","Alert","layout","getTableType","remountNeeded","getTabletErrorsBackgroundCount","CollapsibleSection","UI_COLLAPSIBLE_SIZE","MetaTable","ReplicatedTableSettingsButton","setVisible","toggleVisibility","ReplicatedTableSettingsDialog","_form$getState$values","auto_replica_tracker","replica_cluster","replica_path","getNavigationReplicatedTableLoadingStatus","store","replicatedTable","calculateLoadingStatus","getReplicatedTableReplicas","replicas","getAllowEnableReplicatedTracker","getReplicatedTableReplicasMap","error_count","getNumberDeprecated","cluster_name","replicated_table_tracker_enabled","getBoolean","replication_lag_time","tableSets","default","ReplicatedTable","renderActions","replica","performReplicaAction","replicaValue","replicaAttributes","isAsync","atomicity","replicaData","ClickableAttributesButton","modeState","updateEnableReplicatedTableTracker","loadReplicas","abortAndReset","tableMode","css","striped","itemHeight","isLoading","tableItems","sets","renderName","renderField","errors","renderErrors","renderAsReadableField","renderState","automatic_mode_switch","renderAutomaticModeSwitch","bind","renderAsTimeDuration","computeKey","hasActions","TableMeta","StickyContainer","Sticky","topOffset","HEADER_HEIGHT","isSticky","sticky","TableActions","ElementsTable","replicaLink","NAVIGATION","enableTableTracker","align","sort","flag","ReplicatedTableConnected","_getReplicatedTableDa","getReplicatedTableData","allowEnableReplicatedTracker","ReplicatedTableWithRum","NAVIGATION_CONTENT_REPLICATED_TABLE","LinkConnected","targetPath","broken","getDownloadPath","cypressPath","makeDirectDownloadPath","encodeURIComponent","getIsEmpty","getIsTooBig","MAX_FILE_SIZE","getNavigationFileLoadingStatus","NavigationExtraActions","getNavigationPathAttributes","renderNavigationExtraActions","messageBlock","codeBlock","renderMeta","downloadPath","href","renderTooBigInfo","isTooBig","loadFile","LOAD_FILE","readFile","FileConnected","_state$navigation$con","isEmpty","getEffectiveMode","initialLoading","Loader","rowKey","row","DataTableWrapper","useRawStrings","getSettingTableDisplayRawStrings","schemaByName","getSchemaByName","ysonSettings","isFullScreen","onShowPreview","rowIndex","tag","showCellPreviewModal","dtColumns","updating","setTimeout","requestAnimationFrame","window","dispatchEvent","Event","fullscreen","DataTable","SharePresetButton","handleClick","visibleColumns","columnsEncoded","request","method","errorContent","saveColumnPreset","hash","openInNewTab","share_columns","pin","SavePresetButton","getAllColumns","ColumnsPresetButton","getColumnsPresetHash","actionStyle","marginRight","openColumnSelectorModal","OPEN_COLUMN_SELECTOR_MODAL","isStrict","getSchemaStrict","allowPickColumns","showAllColumns","allowUserColumnPresets","getConfigData","style","methodMap","nativeAPI","unprefixedMethods","returnValue","methodList","exitFullscreenMethod","entries","eventNameMap","change","fullscreenchange","fullscreenerror","screenfull","documentElement","onFullScreenEntered","off","on","returnPromise","requestFullscreen","catch","exit","isFullscreen","onFullScreenExit","exitFullscreen","onchange","callback","onerror","eventName","addEventListener","removeEventListener","raw","defineProperties","fullscreenElement","enumerable","isEnabled","fullscreenEnabled","FullScreen","_ref$enabled","enabled","_ref$onChange","container","useRef","isFullScreenAllowed","changePageSize","pageSize","CHANGE_PAGE_SIZE","changeCellSize","cellSize","CHANGE_CELL_SIZE","setTableDisplayRawStrings","getPageSize","allowRawStrings","stringLimitProps","cellSizeRadioButtonItems","pageSizeProps","pageSizeRadioButtonItems","RadioButton","xmlnsXlink","mixBlendMode","xlinkHref","transform","getNavigationPathAttributesLoadState","LOADING_STATUS","LOADED","basePath","getJupyterBasePath","Logo","height","moveOffset","prevOffsetValue","getOffsetValue","MOVE_OFFSET","openOffsetSelectorModal","OPEN_OFFSET_SELECTOR_MODAL","keyColumn","renderInput","onEndEditing","Filter","iconLeft","RangeInputPicker","onOutsideClick","onAfterUpdate","onSubmit","maxValue","infoPointsCount","renderPlaceholder","handleStartEditing","progressWidth","getProgressWidth","getRowCount","editing","changeEditing","edit","dynamic","OffsetSelectorButton","moveOffsetToStart","moveOffsetToLeft","getYqlTypes","getBottomBoundKey","moveOffsetToRight","getUpperBoundKey","moveOffsetToEnd","isPaginationDisabled","getIsPaginationDisabled","isTableEndReached","getIsTableEndReached","Pagination","handler","hotkeyHandler","hotkeyScope","hotkey","previous","last","YQLKitButton","getNavigationSqlService","getSettingsData","isDeveloper","isAdmin","isQtKitEnabled","indexOf","isYqlKitEnabled","hasYqlWidget","OpenQueryButtons","autoOpen","panelMode","setPanelMode","onOpenYqlKit","_useSidePanel","QueryWidgetLazy","renderWidget","_useSelector","createQueryFromTablePath","QueryEngine","YQL","allowQtAutoOpen","selected","createNewQueryUrl","opened","onOpen","CreateQueryFromTable","NAVIGATION_ATTRIBUTES_EDITOR_REQUEST","NAVIGATION_ATTRIBUTES_EDITOR_SUCCESS","NAVIGATION_ATTRIBUTES_EDITOR_ERROR","NAVIGATION_ATTRIBUTES_EDITOR_PARTIAL","getNavigationAttributesEditorAttributes","attributesEditor","attributesMap","getNavigationAttributesEditorPath","getNavigationAttributesEditorError","getNavigationAttributesEditorVisible","getNavigationAttributesEidtorNodesByTypes","attrsMap","staticTables","mapNodes","dynamicTables","forEach_","getNavigationAttributesEditorStaticTables","getNavigationAttributesEditorDynamicTables","getNavigationAttributesEditorMapNodes","EDITABLE_ATTRIBUTES","showNavigationAttributesEditor","attributesEditorGetAttrs","getBatchError","join_","EDIT_MARKER","makeUiMarker","EDIT_MERGE_MARKER","navigationSetNodeAttributes","generalAttrs","storageAttrs","runMerge","warn","stringify","in_memory_mode","tablet_cell_bundle","restGeneralAttrs","newAttrs","isDynTable","prepareSetCommandForBatch","attributesEditorSet","prepareMergeParams","spec","input_table_paths","output_table_path","force_transform","promises","merge","opId","AppStoreProvider","OperationShortInfo","output_attribute_name","successTitle","autoHide","all","attributesEditorMerge","prepareRestorePath","lastChar","SUPPRESS_REDIRECT","openDeleteModal","checkIsTrash","OPEN_DELETE_OBJECT_POPUP","getInfo","realPath","parsedRealPath","getKey","navigationGetPathInfo","createDestinationPath","unix","showTableEraseModal","TABLE_ERASE_MODAL_PARTIAL","runTableErase","combine_chunks","range","isNaN","erase","table_path","Node","iconType","parsedPath","parsedPathError","pathState","recursiveResourceUsage","sizePerMedium","chunks","nodes","tabletStaticMemory","tablets","masterMemory","locks","modified","created","linkParsedPath","linkPathState","targetPathBroken","targetPathState","unmergedRows","chunkRows","contentMode","prepareTitle","prepareCaption","YPath","clone","escapeSpecialCharacters","prepareNavigationState","recursive_resource_usage","getResource","lock_count","modification_time","creation_time","target_path","row_count","unmerged_row_count","chunk_row_count","tablet_state","TITLE_PRINT_SETTINGS","CAPTION_PRINT_SETTINGS","SUPPORTS_RESOURCE_USAGE","_Node","indent","break","binaryAsHex","highlightControlCharacter","escapeWhitespace","journal","updateResourceUsage","getFilteredNodes","isRootNode","UPDATE_RESOURCE_USAGE","nodesChunks","chunk_","batchedRequests","nodesChunk","executeBatch","navigationResourceUsage","resultChunks","dataMap","errorResults","resultChunkIndex","getNodesData","nodeData","nodeValue","newData","GENERIC_ERROR_MESSAGE","selectAll","isAllSelected","allNodes","SELECT_ALL","Chooser","getIsAllSelected","handleSelectChange","showRemoteCopyModal","_results$index","REMOTE_COPY_MODAL_PARTIAL","hideRemoteCopyModal","remoteCopy","dstCluster","MultipleActions","isOneSelected","isSelected","getSelectedNodes","isTooLarge","dynTablesActions","getSelectedNodesAllowedDynTablesActions","hasRestoreButton","handleDeleteClick","allowModifyActions","dropdownButton","restoreMoveCopy","OPEN_COPY_OBJECT_POPUP","OPEN_MOVE_OBJECT_POPUP","navigationRestorePath","restoreObjects","transferItem","editItem","mergeSortSection","showTableSortModal","showTableMergeModal","dynTablesSection","onCopyPathClick","copyToClipboard","handleClearAll","buttonText","onCopy","DropdownMenu","switcher","getFilterState","mapNode","getMediumType","mediumType","getTableColumns","customSort","chooser","renderHeader","disk_space","_node$sizePerMedium","MediumType","ALL","data_weight","chunk_count","node_count","tablet_static_memory","master_memory","tablet_count","multipleActions","getPreparedTableColumns","transform_","getContentMode","getSelected","getSortState","tables","NAVIGATION_MAP_NODE_TABLE_ID","nodesData","getNodes","getParsedPath","ContentMode","DEFAULT","makeGetSetting","getSetting","NAMESPACES","multifilter","factors","sortState","groupByType","SettingName","GROUP_NODES","TYPE_WEIGHTS","asc","groupBy","includes_","every_","weight","getSortedNodes","getSortedNodesNames","getNodesInfo","sumNodesType","aggregation","countValues","keyValue","_keyValue","getMapNodeResourcesLoading","resourcesLoading","DATE_REGEXP","shouldApplyCustomSort","USE_SMART_SORT","test","getLoadState","getError","getSelectedIndex","strictIndex","findIndex_","getSelectedNodesDynTablesStates","dynTablesStates","pickBy_","showLinkToModal","LINK_TO_MODAL_PARTIAL","hideLinkToModal","linkPath","dstPath","createLink","PathActions","_React$useMemo","handleUpdateView","onMove","onShowAttributes","onEditAttributes","onRestoreClick","onDeleteClick","onSort","onErase","onMerge","onMount","onUnmount","onFreeze","onUnfreeze","onLink","onTransfer","secondGroup","firstGroup","menuItems","commonProps","onlyDropdown","dropDownBtnClassName","_props$dropDownBtnThe","dropDownBtnTheme","_props$dropDownBtnSiz","dropDownBtnSize","EditTableActions","DataLensButton","getNavigationTableDataLensButtonAlerts","isEmptySchema","enableDynamicStoreRedRequired","datalensBaseUrl","datalensAllowedCluster","showTooltip","toUpperCase","btn","linkUrl","isSplit","isSortedDynamic","getIsSortedDynamic","isUnmounted","allowOffsetInput","Paginator","OffsetInput","ColumnSelectorButton","SettingsButton","JupyterButton","FullScreenButton","OffsetSelectorModal","_handleCONFIRMButtonClick","isTableSorted","closeOffsetSelectorModal","minKeyValue","offsetValues","_handleCANCELButtonClick","initialItems","_changeFilter","updateItemValue","prevItems","findIndex","changedItem","_handleInputChange","RegExp","escapeRegExp_","visibleItems","filterItemsByName","renderSearchBox","renderItems","isOffsetSelectorOpen","borderless","itemProps","isRequired","CLOSE_OFFSET_SELECTOR_MODAL","getCurrentOffsetValues","getIsTableSorted","TableColumnsPresetNotice","getColumnsPresetColumns","getColumnsPresetError","ErrorBlock","log","collapsed","Table","columnsProps","accessor","renderColumnSelectorModal","srcColumns","isColumnSelectorOpen","ColumnSelectorModal","srcItems","isVisible","renderTable","visibleRows","stickyTop","OVERVIEW_HEIGHT","stickyHead","syncHeadOnResize","sortable","stripedRows","displayIndices","emptyDataMessage","startIndex","getTableData","isYqlV3Types","handleScreenChanged","TableOverview","hashToLoad","getColumnsPreset","ui_loadColumnPreset","_ref$data","encode","SET_TABLE_COLUMNS_PRESET","setTablePreset","setTablePresetError","_ref5$deniedKeyColumn","preset","_preset$columns","includes","waitForFontFamilies","tableSimilarityEnabled","isTableSimilarityEnabled","field_weight_limit","max_selected_column_count","max_all_column_names_count","column_names","restoreSimilarColumns","restoreExactColumns","restoreColumns","_excluded2","storedIsFullScreen","TableConnected","getTableYsonSettings","getSrcColumns","getVisibleRows","TTLInfo","ttlItems","forceLinksAppearance","getNoSuggestionsMsg","link","TableType","AGGREGATE_CHOICES","SELECT_EMPTY_VALUE","AggrTypes","TABLE_SETTINGS","COLUMNS","CreateTableModalContentImpl","nextId","STATIC","tableName","replicasCount","getNewTableReplicasCount","uniqueKeys","activeTabId","createNewColumn","selectedColumnTab","_primitiveTypes$","duplicate","userOptions","newTab","names","tmp","genNewName","_values$TABLE_SETTING","compCodec","storageOption","optimize_for","columnsRaw","reorderColumns","QUEUE","DYNAMIC","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_","ColumnDataTypes","ANY","YSON","isOrderedColumn","isSortedColumn","isDescendingColumn","aggr","SUM","MIN","MAX","INT64","UINT64","DOUBLE","ordered","validateAggregate","validateColumnDataType","validateColumnLock","str","round","ASCENDING","DESCENDING","isAscendingColumn","hasOrderedColumn","colData","hasUnorderedColumn","nameError","replicasCountError","validateReplicasCount","_primitiveTypes$2","_field$visibilityCond","when","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","nameAlreadyUsed","parentDir","EXCEL_BASE_URL","_","alreadyUsed","checkNameAlreadyExist","validationState","UPLOAD_CONFIG","existingNodes","NodesTypes","sortedNodes","orderBy_","slice_","sum","renderItem","displayedNodes","_prepareNodes","allNodesCount","_getSumCount","otherNodesCount","renderSelected","NodesInfo","nodesInfo","closeCreateACOModal","CREATE_ACO_MODAL","createACO","namespace","tbBlock","MapNode","fetchNodes","prevPath","prevTransaction","MapNodeToolbarConnected","_this$props$error","renderToolbar","MapNodesTable","ERROR","renderView","CreateTableModal","showACOCreateButton","filterState","getMediumList","showCreateTableModal","isCreateTableModalVisible","TYPE","CONTENT_MODE_OPTIONS","RESOURCES","setFilter","SET_TEXT_FILTER","setContentMode","SET_CONTENT_MODE","allowEffectiveExpiration","isSupportedEffectiveExpiration","FETCH_NODES","_UIFactory$getNavigat","NAVIGATION_CONTENT_MAP_NODE","navigationListNodes","list","getNavigationMapNodeSettings","additionalAttributes","saveRequestCancellation","getList","applyCustomSort","APPLY_CUSTOM_SORT","changeColumnSortOrder","tableId","setMediumType","SET_MEDIUM_TYPE","openCreateTableModal","openCreateACOModal","MapNodeConnected","MapNodeWithRum","LOADING","MapNodeToolbar","_React$PureComponent","_super2","uploadXlsRef","createDirectoryButtonClick","OPEN_CREATE_DIRECTORY_POPUP","createTableButtonClick","uploadTableButtonClick","createLinkButtonClick","createACOButtonClick","_UIFactory$getMapNode","getMapNodeExtraCreateActions","renderModals","prepareSimpleValue","ShowResourcesButton","SelectSingle","menuSize","popupClass","isRoot","saveDocument","documentString","SET_DOCUMENT_EDIT_MODE","GET_DOCUMENT","getNavigationDocumentLoadingStatus","selectNavigationDocument","onEditClick","OpenYqlViewButton","DocumentExtraTools","queryAutoOpen","isYqlView","_ref4$document","extraTools","onSave","handleSaveDocument","jsonEditor","fullWidth","initialSplitSize","initialShowPreview","prepareSettings","navigationGetDocument","handleEditClick","handleOnCancel","handleOnDocumentSave","DocumentBody","DocumentEditModal","NAVIGATION_CONTENT_DOCUMENT","Document","TransactionConnected","startTime","handleTransactionAbort","ABORT_TRANSACTION","navigateParent","handleModalClose","modalContent","confirmTheme","TransactionWithRum","NAVIGATION_CONTENT_TRANSACTION","Transaction","parentParsedPath","started","start_time","fragmentFromYSON","getFilteredTransactions","transactionMap","transactions","rawTransactions","getTransactions","NAVIGATION_TRANSACTION_MAP_TABLE_ID","filteredTransactions","getNavigationTransactionMapLoadingStatus","TransactionMap","handleFilterChange","changeFilter","loadTransactions","cssHover","renderIcon","renderId","renderOwner","renderStartTime","renderTitle","iconName","getIconNameForType","isLink","itemNavigationAllowed","LOAD_TRANSACTIONS","navigationListTransactions","CHANGE_FILTER","TransactionMapConnected","TranscationMapWithRum","NAVIGATION_CONTENT_TRANSACTION_MAP","supportedContentTypes","map_node","portal_entrance","portal_exit","rootstock","scion","cell_node_map","sys_node","access_control_object_namespace_map","access_control_object_namespace","tablet_cell","chaos_cell","scheduler_pool_tree_map","scheduler_pool","string_node","int64_node","uint64_node","double_node","boolean_node","NAVIGATION_CONTENT_LINK","NAVIGATION_CONTENT_FILE","getNavigationTableLoadingState","getMeasureId","sybType","replicated_table","chaos_replicated_table","replication_log_table","nested_transaction","topmost_transaction_map","transaction_map","metaMock","cell_id","emptyRate","getFamily","_state$navigation$tab","tabs","queue","status","statusData","family","getPartitionCount","_state$navigation$tab2","partition_count","getWriteDataWeightRate","_state$navigation$tab7","_state$navigation$tab8","write_data_weight_rate","getWriteRowCountRate","_state$navigation$tab9","_state$navigation$tab10","write_row_count_rate","getStatusError","statusError","getStatusLoading","statusLoading","getStatusLoaded","statusLoaded","getQueueStatusDataAlerts","_state$navigation$tab11","alerts","getQueueMode","filters","queueMode","getQueuePartitionIndex","queuePartitionIndex","getQueuePartitionsColumns","partitionsColumns","getQueueTabletCellHost","queueTabletCellHost","getQueueTabletCellId","queueTabletCellId","getQueueConsumerName","queueConsumerName","getQueueOwner","queueOwner","getQueueRateMode","queueRateMode","getQueueTimeWindow","queueTimeWindow","getPartitions","partitions","partitionsData","_partitionsData$map$f","_partitionsData$map","partition","_partition$meta","_partition$write_data","_partition$write_row_","meta","partition_index","getPartitionsError","partitionsError","getPartitionsLoading","partitionsLoading","getPartitionsLoaded","partitionsLoaded","getConsumers","_state$navigation$tab12","registrations","consumers","consumer","read_data_weight_rate","read_row_count_rate","getConsumerPartitionIndex","consumerPartitionIndex","getConsumerRateMode","consumerRateMode","getConsumerPartitionsColumns","getConsumerTimeWindow","consumerTimeWindow","getTargetQueue","targetQueue","getConsumerRegisteredQueues","consumerData","getTargetQueueStatusData","_getTargetQueue","_statusData$queues","getStatusData","_ref$queue","queues","getOwner","_getTargetQueueStatus","_getTargetQueueStatus2","getReadDataWeightRate","_getTargetQueueStatus3","_getTargetQueueStatus4","getReadRowCountRate","_getTargetQueueStatus5","_getTargetQueueStatus6","getTargetQueueError","targetQueueStatusData","getConsumerMode","consumerMode","_partition$read_data_","_partition$read_row_c","changeConsumerFilters","CONSUMER_CHANGE_FILTERS","TargetQueue","clusterQueueUrl","firstColon","genNavigationUrl","ConsumerQueueSelector","topMargin","_useSelector2","handleSelect","_registrations$0$queu","_registrations$","pref","findCommonPathParent","Prefix","abs","marginBottom","backgroundColor","_counters$show","counters","formatter","hummerFormat","counterNames","_counters$key","BarChart","_counters$key2","Meta","partitionCount","readDataWeightRate","readRowCountRate","vital","isNull","Multimeter","BytesPerSecond","RowsPerSecond","tabItems","CONSUMER_MODE","METRICS","PARTITIONS","changeConsumerMode","Extras","bool","getter","sortAccessor","datetime","valueOf","HoverContent","_error$message","multimeter","number","readRateName","_readRateName","CONSUMER_RATE_MODE","ROWS","DATA_WEIGHT","readRateGetter","_readRateGetter","rateMode","timeWindow","loadConsumerPartitions","CONSUMER_PARTITIONS_LOAD_REQUEST","queueConsumerPartitions","CONSUMER_PARTITIONS_LOAD_SUCCESS","CONSUMER_PARTITIONS_LOAD_FAILURE","DataTableYT","useThemeYT","NoContent","hint","warning","rateItems","timeItems","CompactColumnSelector","ColumnSelector","changeConsumerPartitionIndex","changeConsumerRateMode","changeConsumerTimeWindow","changeConsumerPartitionsColumns","views","_views","ExtraControls","View","MetricsComponent","getComponentForConsumerMetrics","PartitionsExtraControls","Partitions","emptyView","loadConsumerStatus","CONSUMER_STATUS_LOAD_REQUEST","queueConsumerStatus","CONSUMER_STATUS_LOAD_SUCCESS","state2","CONSUMER_STATUS_LOAD_FAILURE","_useViewByMode","WithStickyToolbar","Toolbar","Alerts","_ref$marginDirection","marginDirection","alert","writeDataWeightRate","writeRowCountRate","changeQueueRateMode","QUEUE_CHANGE_PERSISTED_STATE","changeQueueTimeWindow","QUEUE_MODE","CONSUMERS","changeQueueMode","QueueMetrics","getComonentForQueueMetrics","QUEUE_RATE_MODE","_ref10","_consumer$split","_consumer$split2","changeQueueConsumerName","changeQueueOwner","writeRateName","_writeRateName","writeRateGetter","_writeRateGetter","classNames","_x$meta","_ref8","string","_x$meta2","loadQueuePartitions","QUEUE_PARTITIONS_LOAD_REQUEST","queuePartitions","QUEUE_PARTITIONS_LOAD_SUCCESS","QUEUE_PARTITIONS_LOAD_FAILURE","changeQueuePartitionIndex","changeQueueTabletCellHost","changeQueueTabletCellId","changeQueuePartitionsColumns","QUEUE_CHANGE_PARTITIONS_COLUMNS","queuePartitionsColumns","ConsumersExtraControls","consumersLoading","consumersLoaded","loadQueueStatus","QUEUE_STATUS_LOAD_REQUEST","queueStatus","QUEUE_STATUS_LOAD_SUCCESS","QUEUE_STATUS_LOAD_FAILURE","clusters","YT","getLocksModeFilter","modeFilter","getLocksLoadStatus","getLocksFiltered","Locks","renderTransaction","operationId","operation_id","cellTag","parseInt","clusterConfig","_clusterConfig$primar","primaryMaster","additional","findClusterConfigByOperationId","clusterId","operationIdUrl","page","Linkify","TemplateTime","onModeFilter","setLocksModeFilter","getLocks","renderIndex","renderLock","MAX_TRANSACTIONS_REQUESTS","itemsToWrap","CustomRadioButton","isPartial","renderModeFilter","renderMessage","child_key","attribute_key","GET_LOCKS","navigationLocks","rowLocks","navigationTransactions","_splitBatchResults","splitBatchResults","prepareData","IS_PARTIAL","PARTITION","LocksConnected","LocksWithRum","NAVIGATION_TAB_LOCKS","ErrorIcon","mdBlock","MarkdownLinePreview","_ref$allowHTML","allowHTML","hideModal","useMarkdown","html","div","createElement","innerHTML","plainText","innerText","footer","ExternalDescription","_data$glossaryEntity","hasWarning","markdown","glossaryEntity","typeMismatchElement","elementsBlock","COLUMNS_TO_HIDE","Schema","_loadExternalSchemaData","externalSchemaUrl","externalSchema","externalSchemaError","loadExternalSchemaData","renderExternalColumn","_this$props$computedC","computedColumns","preparedSet","col","preparedItems","omit_","_columns$column","externalSchemaDescriptionSetup","virtualType","truePath","_yield$UIFactory$exte","load","Map","filteredSchema","updateFilter","SCHEMA_UPDATE_FILTER","SchemaConnected","getAttributesPath","getSchemaMeta","getFilteredSchema","getComputedColumns","SchemaWithRum","NAVIGATION_TAB_SCHEMA","prepareFlatColumns","flatColumns","correctPrefix","getStorePreloadValues","tablet","completed","failed","name_tablet_id","name_cell_id","tablet_id","cell_leader_address","allowedOrderTypes","DESC_ASC_UNORDERED","overall","replication_error_count","pivot_key","store_count","overlapping_store_count","store_preload","storePreload","aggregatedStorePreload","currentStorePreload","uncompressed_data_size","compressed_data_size","static_chunk","read","lookup","write","delete","unmerged_row_read_rate","merged_row_read_rate","static_chunk_read","static_chunk_lookup","dynamic_row_read_rate","dynamic_row_lookup_rate","dynamic_row_write_rate","dynamic_row_delete_rate","getRawTablets","getTabletsSortState","NAVIGATION_TABLETS_TABLE_ID","getActiveHistogram","histogramType","getSortedTablets","rawTablets","getFilteredTablets","tabletsFilter","sortedTablets","getPreparedDataForColumns","collection","mapValues_","getTablets","filteredTablets","preparedCollection","prepare","prepareAggregation","getHistograms","histogramItem","dataFormat","caps","histograms","getNavigationTabletsLoadingStatus","getTabletsExpandedHosts","expandedHosts","SUM_FIELDS","getTabletsMax","max_","getTabletsByNameRoot","tabletsMode","sortedAndFilteredItems","groupByKey","maxDst","maxHost","mapByName","dst","parent","level","leaves","addHostItem","isTopLevel","root","toArray_","childrenCount","_root$children$","sortTree","sortTreeInPlace","maxByLevel","getTabletsByName","expanded","isCollapsed","flattenTree","Tablets","useBytes","_this$props$maxByLeve","_item$level","getProgressBarColorByIndex","renderBytesProgress","renderNumberProgress","onRowClick","toggleExpandedHost","loadTablets","defaultItems","structure","performance","by_host","by_cell","renderTabletId","renderCellId","renderHost","renderPivotKey","renderStorePreload","dynamic_read","dynamic_lookup","dynamic_write","dynamic_delete","itemMods","changeTabletsFilter","changeTabletsMode","histogramCollapsed","toggleHistogram","changeActiveHistogram","collapsibleSize","onToggle","renderOverview","rowClassName","onItemClick","top","TABLET","renderIdWithLink","genTabletCellBundlesCellUrl","none","freezing","unfreezing","mounting","unmounting","pivotKey","storePreloadProgress","prepareStorePreloadProgress","_Tablets","typedValueProps","tabletProps","last_commit_timestamp","performance_counters","statistics","GET_TABLETS","navigationTablets","TYPED_OUTPUT_FORMAT","TOGGLE_HISTOGRAM","CHANGE_TABLETS_MODE","TABLETS_STATE_PARTIAL","CHANGE_ACTIVE_HISTOGRAM","TabletsConnected","TabletsWithRum","NAVIGATION_TAB_TABLETS","getAttributesTab","getAttributesLoadingInfo","requestAttributes","requestParams","_response$","attributesActions","onRequest","nodeAttributes","isCancelled","onFailure","Attributes","attributesPath","YsonDownloadButton","AttributesWithRum","NAVIGATION_TAB_ATTRIBUTES","shortcut","TIMELINE_RANGE_PICKER_SHORTCUTS","getAccessLogFilterPagination","accessLog","accessLogFilters","pagination","getAccessLogFilterPathRegex","path_regex","getAccessLogFilterUserRegex","user_regex","getAccessLogFilterMethod","method_group","getAccessLogFilterUserType","user_type","getAccessLogFilterScope","getAccessLogFilterTime","getAccessLogFilterFieldSelector","field_selector","getAccessLogFilterMetadata","metadata","getAccessLogFilterDistinctBy","distinct_by","getAccessLogLoading","getAccessLogReady","ready","getAccessLogLoaded","getAccessLogError","getAccessLogItems","accesses","getAccessLogAvailableTimeRange","availableTimeRange","getAccessLogPagesCount","total_row_count","totalRowCount","getAccessLogLastLoadedParams","skipEmpty","getAccessLogRequestParams","convertTimeToRequestParams","begin","end","getAccessLogHasChangedFilters","lastLoaded","getAccessLogLastLoadedFieldSelector","accesLogCancelHelper","fetchAccessLog","pathChanged","lastLoadedParams","ACCESS_LOG_PATH_CHANGED","ACCESS_LOG_REQUEST","ACCESS_LOG_PARTIAL","getAccessLogBasePath","removeAllAndGenerateNextToken","latest","erliest","ACCESS_LOG_SUCCESS","_e$response","ACCESS_LOG_FAILURE","setAccessLogFilters","ACCESS_LOG_FILTERS","setAccessLogFiltersPage","TransactionInfo","CopyText","transaction_title","operation_title","copyText","DateHeaderMemo","DateHeader","MOVING","stickyFooter","STICKY_DOUBLE_TOOLBAR_BOTTOM","stickyBottom","AccessLogTable","fieldSelector","instant","_ref3$row","original_path","PathTag","transaction_info","headerTitle","_ref9","AccountsLogTransactionInfo","pageCount","ColumnHeader","pageIndex","isTarget","capitalize","AccessLogError","valueToSelection","selectionToValue","emptyValue","ACCESS_LOG_FIELD_SELECTOR_ITEMS","ACCESS_LOG_METHOD_ITEMS","ACCESS_LOG_USER_TYPE_ITEMS","ACCESS_LOG_SCOPE_ITEMS","clipPath","fillRule","clipRule","AccessLogOpenQtButton","setLoading","newParams","_yield$wrapApiPromise","query_id","AbbrSqlIcon","AccessLogFilters","AccessLogPagination","AccessLogTimeline","AccessLogFieldselector","AccessLogMetadata","AccessLogDistictBy","AccessLogPathRegexp","growable","shrinkable","AccessLogUserRegexp","AccessLogUserTypeFilter","AccessLogScopeFilter","AccessLogMethod","AccessLogApplyFilters","hasChanges","SimplePagination","METADATA_ITEMS","valueStr","vals","DISTINCT_BY_ITEMS","handleUpdate","initialState","EMPTY_OBJECT","maxVisibleValues","TIMELINE_SHOURCUTS","updateTime","updateShortcut","_ref$from","_ref$to","TimelinePicker","onShortcut","shortcuts","hasDatePicker","AvailableTimeRange","earliest","formatInterval","AccessLog","ACCESS_LOG_RESET_FILTERS","doubleHeight","getTabletErrors","tabletErrorsBackground","tabletErrors","replicationErrors","getTabletErrorsReplicationErrors","TabletErrorsConnected","tablet_errors","TabletErrorsCountNotice","TabletErrorsBlock","sectionClassName","ReplicationErrorsBlock","TabletErrorsWithRum","getTabletErrorsLoadingStatus","NAVIGATION_TAB_TABLET_ERRORS","counter","replicaId","ReplicaErrorHeader","getTabletErrorsBackgroundCountNoticeVisbile","TabletErrorsHeader","disableLogger","getTabletErrorsByPathError","tabletErrorsByPath","getTabletErrorsByPathLoading","getTabletErrorsByPathLoaded","getTabletErrorsByPathData","getTabletErrorsByPathDataParams","dataParams","getTabletErrorsByPathAllMethods","all_methods","getTabletErrorsByPathPageCount","getTabletErrorsByPathTimeRange","timeRangeFilter","getTabletErrorsByPathMethodsFilter","methodsFilter","getTabletErrorsByPathPageFilter","pageFilter","getTabletErrorsByPathTabletIdFilter","tabletIdFilter","TabletErrorsByPathTable","_useTableColumnsAndDa","_ref2$errors","alignItems","timestamp","useTableColumnsAndData","DATA_TABLE_YT_SETTINGS_UNDER_TOOLBAR_DOUBLE_HEIGHT","TabletErrorsRequest","TabletErrorsRequestToolbar","_useTabletErrorFromAp","_calcFromTo","tabletErrorsByPathActions","table_id","start_timestamp","end_timestamp","methods","prevDataParams","prevData","fixed_end_timestamp","count_limit","useTabletErrorFromApiLoad","_useTabletErrorFromAp2","allMethods","hasRuler","maxVisibleValuesTextLength","TabletErrors","viewMode","getTabletErrorsViewMode","backgroundErrorCount","allowTabletErrorsAPI","TabletErrorsBackground","updateTabletErrorsViewMode","_callee2","_dispatch","_context2","getUserAttributes","userAttributes","getUserAttributesLoadInfo","UserAttributes","userAttributesActions","navigationUserAttributes","UserAttributesWithRum","NAVIGATION_TAB_USER_ATTRIBUTES","TableMountConfig","getNavigationTableMountConfig","getNavigationMountConfigYsonSettings","Flow","withLazyLoading","supportedAttributeTypes","_supportedAttributeTy","acl","ACL","user_attributes","Tab","ACCESS_LOG","AUTO","CONSUMER","Consumer","MOUNT_CONFIG","Queue","FLOW","getNavigationExtraTabs","component","getSupportedAttributeTypes","checkContentIsSupported","CONTENT","getComponentByContentType","getComponentByMode","noAccess","_WithKeyboardNavigation","ElementsTableBase","WithKeyboardNavigation","_args","hoverSelectedIndex","selectedIndex","wrapHotkeyHandler","_len2","_key2","selectIndex","maxIndex","selectNext","selectPrev","handleMouseMove","handleItemHover","handleItemSelect","querySelector","windowHeight","clientHeight","bounding","getBoundingClientRect","bottomCoordinate","topCoordinate","scrollIntoView","scrollBy","handleItemKeyboardClick","hotkeys","onItemHover","onMouseMove","onItemSelect","Hotkey","renderMapNodesTableIcon","renderNodeIcon","isTrashNode","isLinkToTrashNode","_index","_evt$target","_evt$target$contains","classList","contains","onChooserClick","batch","setMode","onSpaceHotkey","info","shiftKey","nativeEvent","setSelectedItem","renderChooser","renderRowCount","dyntable","defaultColumns","resources","resourcesColumns","renderLocks","renderModificationTime","renderCreationTime","renderAccount","tableProps","_createElement","TRASH_PATH","linkState","renderNameImpl","renderTags","renderTrash","textOrLink","poolTreeIndex","fragments","fragment","pool","ROOT_POOL_NAME","poolTree","SCHEDULING","SchedulingTab","OVERVIEW","arrow","goToLink","viewLink","lastSelected","getLastSelected","lastIndex","nameIndex","SET_SELECTED_ITEM","MapNodesTableConnected","MapNodesTableWithRum","DeleteObjectModal","deleteObject","deleteObjects","getRealPath","getRealPaths","loadingRealPath","errorRealPath","renderLoader","renderMultipleModeContent","errorDataRealPath","_this$props5","permanently","togglePermanentlyDelete","_this$props6","multipleInfo","resourceUsage","nodeCount","renderPermanentlyCheckbox","_this$props7","buildItems","_this$props8","closeDeleteModal","helpLinkUrl","LOAD_REAL_PATH","navigationGetPath","_navigation$modals$de2","DELETE_OBJECT","CLOSE_DELETE_OBJECT_POPUP","_getState","_navigation$modals$de","remove","deleteCurrentObject","currentPath","realPathDecoded","decodeEscapedAbsPath","_getState3","_navigation$modals$de3","navigationDelete","permanentlyDeleteObjects","setAttributesRequests","navigationMoveToTrashRestorePath","navigationMoveToTrash","moveObjectsIntoTrash","responses","reverse","TOGGLE_PERMANENTLY_DELETE","AnnotationVisibility","AnnotationWithPartial","annotation","isFullText","Markdown","ActionButtons","isSaving","onSaveClick","onCancelClick","getNavigationAnnotation","visibility","getSettingAnnotationVisibility","getNavigationAnnotationSaving","isEditing","getNavigationAnnotationEditing","annotationPath","getNavigationAnnotationPath","getNavigationAnnotationError","oldValue","handleToggleAnnotationCollapse","setSettingAnnotationVisibility","SET_ANNOTATION_EDITING","handleCancelClick","SET_ANNOTATION","handleChangeDescription","handleSaveClick","saveAnnotation","overview","EditAnnotationWithPreview","valuePath","hideReset","isContentTab","NavigationDescription","ErrorImages","stroke","strokeLinecap","strokeLinejoin","strokeWidth","opacity","NavigationErrorImage","ErrorImage","denyColumns","getDenyColumnsItems","getIdmPermissionsRequestError","RequestPermissions","RequestPermissionIsNotAllowed","objectType","RequestPermission","errorInfo","errorPath","isRequestPermissionsForPathAllowed","pathForRequest","getParentPath","ErrorsInfo","username","perm","getLeadingErrorCode","errorCode","getYtErrorCode","inner_error","innerErrorCode","PrettyError","getPermissionDeniedError","getErrorTitle","justifyContent","ErrorDetails","UnexpectedError","NavigationError","NavigationPermissionsNotice","isWriteable","getNavigationIsWritable","isAccountUsable","getNavigationIsAccountUsable","checkPermissionsError","getNavigationCheckPermissionsError","getNavigationPathAccount","accountAclLink","genAccountsAclLink","Block","AttributesEditorLoaded","singleMode","getMediumListNoCache","storeError","stateError","setErr","hasMapNodes","hasStaticTables","hasDynamicTables","hasTables","hasDynTableOrMapNode","pathsValues","annotationInitial","general","primary_medium","storage","compressionCodecValueFromString","normalizeErasureCodec","_storageOption","storageOptionFromErasureCodec","dataDiff","generalAttributes","storageAttributes","compressionCodecValueToString","erasureCodecFromStorageOption","forEachStaticTable","mergeNoticeAndError","DialogError","annotationTab","inMemoryModeField","InMemoryMode","NONE","COMPRESSED","UNCOMPRESSED","optimizeForField","AttributesEditor","validateStorage","validateReplicationFactor","getRemoteCopyModalVisible","remoteCopyModal","getRemoteCopyModalPaths","makeCompressionCodecFinder","findCompressionCodec","RemoteCopyModal","_pathsValues$","_response","calculateValueOnPoolsLoaded","loadedPoolNames","schema_inference_mode","override","excludeClusters","allowEphemeral","getNavigationTableEraseModalVisible","tableEraseModal","getNavigationTableEraseModalPath","TableEraseModal","validator","validateRange","RANGE","TableSortModal","getCurrentUserName","getNavigationTableSortVisible","getNavigationTableSortPaths","suggestError","getNavigationTableSortError","suggestColumns","getNavigationTableSortSuggestColumns","attributeValues","getNavigationTableAttributesValues","_paths","_outputPath","outputPath","sort_by","pool_trees","runTableSort","hideTableSortModal","handlePathsChange","tableSortModalLoadColumns","errorFields","WaitForDefaultPoolTree","defaultPoolTree","isPathStaticTable","allowDescending","poolTrees","TableMergeModal","getNavigationTableMergeVisible","chunkSize","chunkSizeBytes","data_size_per_job","parseBytes","runTableMerge","merge_by","hideTableMergeModal","getDynTablesStateModalVisible","dynTablesStateModal","getDynTablesStateModalPaths","getDynTablesStateModalAction","DynTablesStateModal","WARN_TEXT","renderWarning","getLinkToModalState","linkToModal","LinkToModal","_validator2","_validator","_callee3","_context3","getCreateACOModalState","createACOModal","CreateACOModal","Navigation","onTabChange","onEditButtonClick","trackVisit","updateTitleWithPath","onTransactionChange","updateTitle","tabSize","Tabs","active","underline","_this$props6$type","ContentViewer","_this$props8$error","_this$props9","hasError","renderEditButton","renderTabs","NavigationConnected","isFinalState","isNavigationFinalLoadState","isIdmSupported","getIdmSupport","UI_TAB_SIZE","getTabs","NavigationWithRumMemo","NavigationWithMesure","NAVIGATION_PRELOAD","NavigationWithRum","Editor","setScope","cancelOnBlur","NavigationTopRowContent","getNavigationDefaultPath","RowWithName","urlParams","NavigationFavourites","EditableNavigationBreadcrumbs","NavigationTools","favourites","getFavouritePaths","isInFavourites","isCurrentPathInFavourites","handleToggle","navigationToggleFavourite","handleItemClick","Favourites","NavigationPathToClipboard","onCopyToClipboard","toggleEditMode","NavigationPathEditor","hideEditor","NavigationBreadcrumbs","actualPath","getActualPath","_event$target","select","bcItems","getNavigationBreadcrumbs","getMode","history","useHistory","isLastItem","makeRoutedURL","pathname","navmode","BreadcrumbsItem","Breadcrumbs","navigate","showRoot","RefreshButton","RestoreButton","handleClearTransaction","clearTransaction","handleEdit","setTransaction","navigation_refresh","getNavigationRestorePath","handleRestore","centered","useQueryWidgetSidePanel","SchedulingOperationsLoader","getSchedulingOperationsLoadingStatus","useRumMeasureStart","subPage","prepareUserPermissions","userPermissions","permissionTypes","getPathToCheckPermissions","_getPathToCheckPermissions","_callee4","entityName","fullPath","_context5","UI_EFFECTIVE_ACL","POOL","TABLET_CELL_BUNDLE","schedulingPoolFullPath","loadAclData","normalizedPoolTree","userPermissionsPath","_state$global","_state$global$cluster","pathToCheckPermissions","pathToCheckUserPermissions","LOAD_DATA","getTree","getAcl","kind","sysPath","checkUserPermissionsUI","getResponsible","responsible","version","auditors","objectPermissions","column_groups","readApprovers","disableAclInheritance","bossApproval","disableInheritanceResponsible","t1","deletePermissions","roleKey","itemToDelete","_getState$global$clus","deletePermissionsPath","DELETE_PERMISSION","deleteRole","_x6","_x7","dateToDaysAfterNow","date","getTime","_ref11","_values$comment","_state$global$cluster2","daysAfter","roles","rolesGroupedBySubject","_loop","requestPermissionsPath","_context4","REQUEST_PERMISSION","subject","commonPart","flattenPermissions","prepareAclSubject","deprive_after_days","_ref12","_ref13","applyToRequestedRole","flatten_","convertFromUIPermissions","role_type","column_group_id","delegateYield","roles_grouped","_x8","_x9","_ref14","updateAcl","_ref15","_getState$global$clus2","UPDATE_ACL","cancelUpdateAcl","_ref17","_yield$ytApiV3Id$sele","_yield$ytApiV3Id$read","readTable","prepareHeaders","getCliCommandResultFormat","_tag$split","_tag$split2","extension","getImageResultFormat","getDynamicTableCellPath","getCurrentRowKey","getDynamicTableCliCommand","cellPath","loadDynamicTableCellPreview","getStaticTableCellPath","getStaticTableCliCommand","loadStaticTableCellPreview","getCellPath","getCliCommand","loadCellPreview","getDefaultRequestOutputFormat","PREVIEW_LIMIT","value_format","cellPreviewCancelHelper","isIncomplete","parsed","typeIndex","_unipika$converters$y","hasType","CELL_PREVIEW","openCellPreview","incomplete","converters","yql","yql_type_registry","maxStringSize","maxListSize","treatValAsData","$incomplete","getApproversSubjectFilter","aclFilters","approversSubject","getObjectSubjectFilter","objectSubject","getObjectPermissionsFilter","getAclFilterColumns","columnsFilter","getAclFilterColumnGroupName","columnGroupNameFilter","getAclFilterExpandedSubjects","expandedSubjects","getAclCurrentTab","aclCurrentTab","prepareColumnsNames","columnsPermissions","uniq_","prepareApprovers","approvers","extra","subjectType","groupInfo","group_name","getAllUserPermissions","getAllObjectPermissions","getAllObjectPermissionsWithSplittedSubjects","isSplitted","subjectIndex","getObjectPermissionsTypesList","permissionsFilter","uniquePermisions","subjectFilterPredicate","_item$subjects$","_str","pop","getAllObjectPermissionsFiltered","subjectFilter","_partition_","partition_","_item$columns","_partition_2","mainPermissions","lowerNameFilter","toLocaleLowerCase","filterBySubject","permissionsFilterSet","filterByPermissions","_permissionsFilterPre","foundCount","some","p","permissionsFilterPredicate","filterByColumns","_columns$some","colName","mainPredicates","columnsPredicates","concatByAnd","getObjectPermissionsAggregated","aggregateBySubject","AggregateBySubject","aggrKey","inherited","allPermissions","aggregationKey","_item$permissions","_child$permissions","_child$permissions2","_item$columns2","_this$first","_this$first2","_this$first3","_this$first4","isMissing","isUnrecognized","isApproved","isRequested","hasInherited","hasDenyAction","inheritedFrom","hasExpandable","objPermissions","aggregated","aggKey","_item$getItems","_partition_3","_partition_4","other","OrderByRoleStatus","getAllColumnGroupsActual","nameFilter","nameFilterLower","predicates","removed","_item$columns$some","_item$columns3","_item$name","filtered","unrecognized","requested","depriving","isDepriving","getReadApprovers","getResponsibles","getAuditors","getNotInheritedReadApprovers","readApprover","getNotInheritedResponsibles","responsibles","getNotInheritedAuditors","auditros","auditro","getAllApprovers","getHasApprovers","getApproversFiltered","getApproversFilteredAndOrdered","getAllAccessColumnsPermissions","filteredPermissions","_permission$columns","getAllDenyColumnsPermissions","_permission$columns2","getAllAccessColumnsNames","getAllDenyColumnsNames","isPermissionDeleted","permissionDeletionError","deletionError","getLastDeletedPermissionKey","deletedItemKey","idmPermissionsRequestError","getIdmManageAclRequestError","idmManageAclRequestError","getIdmPathVersion","getChaosIsLoaded","chaos_cell_bundles","getChaosIsLoading","getChaosBundlesSortState","bundlesSort","getChaosBundlesNameFilter","bundlesNameFilter","getChaosBundlesAccountFilter","bundlesAccountFilter","getChaosBundlesTagNodeFilter","bundlesTagNodeFilter","getChaosBundles","bundles","getChaosActiveBundle","activeBundle","getChaosBundlesTableMode","bundlesTableMode","getChaosActiveBundleData","bundle","getChaosBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","getChaosBundlesFiltered","accountFilter","tagNodeFilter","lowerAccountFilter","changelog_account","snapshot_account","lowerTagNodeFilter","node_tag_filter","getChaosBundlesSorted","sortTableBundles","columnsSortable","getChaosCells","cells","getChaosCellsSortState","cellsSort","getChaosCellsIdFilter","cellsIdFilter","getChaosCellsBundleFilter","cellsBundleFilter","getChaosCellsHostFilter","cellsHostFilter","getChaosCellsOfActiveAccount","getChaosCellsFiltered","idFilter","bundleFilter","hostFilter","peerAddress","filterChaosCellsByBundle","getChaosCellsSorted","sortArrayBySortState","getChaosCellsBundles","getChaosCellsHosts","getChaosCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","getChaosBreadcrumbItems","tabletChaosBundleRootLink","getChytListData","chyt","getChytListAvailableCreators","_data$items","creator","getChytListAvailableHealths","_data$items2","health","getChytListAvailableStates","_data$items3","getChytCurrentAlias","clique","currentClique","getChytListFilterAlias","listFilters","getChytListFilterHealth","getChytListFilterCreator","getChytListFilterState","CHYT_LIST_SELECTABLE_COLUMNS","instance_count","total_cpu","total_memory","stage","yt_operation_start_time","yt_operation_finish_time","speclet_modification_time","strawberry_state_modification_time","getChytListVisibleColumns","_getSettingsData$glob","userColumns","getChytListColumns","getChytListTableSortState","getChytListTableSortStateByName","multisortIndex","getChytFilterPredicate","alias","getChytListTableItems","predicate","_data$items4","filteredItems","multiSortBySortStateArray","getFavouriteAccounts","getAccountsNS","prepareFavourites","getLastVisitedAccounts","prepareLastVisited","getPopularAccounts","preparePopulars","isActiveAcountInFavourites","getActiveAccount","prepareIsInFavourites","getFavouriteChyt","getChytNS","getLastVisitedChyt","isActiveCliqueInFavourites","getClusterNS","getLastVisitedPaths","getPopularPaths","getFavouritePools","getSchedulingNS","isActivePoolInFavourites","getPool","tree","getFavouriteBundles","getBundlesNS","isActiveBundleInFavourites","getTabletsActiveBundle","getFavouriteChaosBundles","getChaosBundlesNS","isActiveChaosBundleInFavourites","parentNS","LOCAL","FAVOURITES","settingGetter","LAST_VISITED","lastVisited","entry","rawPath","navigationPath","ex","getSchedulingAbcFilter","scheduling","abcServiceFilter","getSchedulingAttributesToFilter","attributesToFilter","getSchedulingAttributesToFilterParams","attributesToFilterParams","schedulingOverviewHasFilter","abcFilter","getSchedulingFilteredPoolNames","getSchedulingPoolsMapByName","attrsToFilter","loadedPools","_attrs$abc","abc","poolName","getExpandedPoolCypressData","expandedPools","flattenCypressData","getSchedulingOperations","rawOperations","getExpandedPoolsTree","expandedPoolsTree","getSchedulingOperationsError","getSchedulingOperationsExpandedPools","getExpandedPoolsLoadAll","loadAll","RESOURCE_LIMIT_MAPPER","user_memory","preparePoolChildResource","treeResources","resource","guaranteed","usage","demand","limitResource","cypressAttributes","detailed","updatePoolChild","cypressData","_data$leaves","_initedBy","leaf","child_pool_count","pool_operation_count","emptyOp","operationCount","maxOperationCount","maxOperationCountEdited","runningOperationCount","maxRunningOperationCount","maxRunningOperationCountEdited","starvation_status","weightEdited","minShareRatio","maxShareRatio","fairShareRatio","fifoIndex","usageRatio","demandRatio","isEphemeral","integralType","userDefinedBurstCPU","burstCPU","userDefinedFlowCPU","flowCPU","userDefinedFlowGPU","flowGPU","accumulated","accumulatedCpu","burstDuration","fifoSortParams","param","forbidImmediateOperations","createEphemeralSubpools","dominantResource","appendInnerErrors","getPoolsRaw","rawPools","getSchedulingTreeOperations","getOperationsFiltered","getPoolsPrepared","wrap","preparedPools","preparePools","pools","getSchedulingPoolsExtraInfo","poolsMap","calcChildrenIntegrals","childrenBurstCPU","childrenFlowCPU","itemExtraInfo","getPools","itemExtra","getResourcesText","resourceLimit","getNetworkResourceText","getMemoryResourceText","getDefaultResourceText","getResourceProgressValue","prepareResources","resourceLimits","getResourceProgress","getPoolsImpl","getSchedulingIsInitialLoading","_state$scheduling$sch","_state$scheduling$exp","getExpandedPoolsIsInitialLoading","getTreeResources","getPoolChildrenFilter","poolChildrenFilter","getSchedulingTreeState","treeState","getSchedulingEditItem","getPoolsNames","_v","DETAILS_CONTENT_MODES","cpu","memory","gpu","user_slots","operations","integral","getIsRoot","getTreesSelectItems","trees","getPoolsSelectItems","getCurrentPool","getPoolIsEphemeral","currentPool","getCurrentPoolChildren","getCurrentPoolOperations","getResources","getFilteredTree","treeRoot","visiblePools","treeList","filterTree","getTableItems","SCHEDULING_POOL_TREE_TABLE_ID","filteredTree","sortedTree","poolsTableItems","getSchedulingOverviewMaxDepth","allExpanded","expandedPoolsMap","_ref$level","getPoolChildrenData","getFilteredPoolChildren","poolChildrenData","getSortedPoolChildren","SCHEDULING_POOL_CHILDREN_TABLE_ID","filteredPoolChildren","poolChildrenSortState","childTableItems","addGetParams","getPollChildrenTableItems","sortedPoolChildren","isChildPool","CLUSTERS_WITHOUT_POOL_ACL","isPoolAclAllowed","getCurrentPoolPath","calculatePoolPath","pathStr","getSchedulingTopPoolOfEditItem","mapOfPools","isAbcPoolName","isTopLevelPool","getSchedulingSourcesOfEditItem","topPool","visitTreeItems","isNeedToSkipChildren","getSchedulingSourcesOfEditItemSkipParent","getYsonSettings","getFormat","getShowDecoded","shouldCompact","shouldEscapeWhitespace","useBinaryAsHex","showDecoded","compact","getUnipikaSettingsFromConfig","getJobGeneralYsonSettings","clone_","getJobSpecificationYsonSettings","getOperationAttributesYsonSettings","getOperationExperimentsYsonSettings","getEditJsonYsonSettings","getNodeUnrecognizedOptionsYsonSettings","getFlowSpecYsonSettings","toSkip","concat_","toAdd","YqlValue","formattedValue","getFormattedValue","titleSettings","formatRaw","formatFromYQL","classes","dir","yqlValue","defaultUnipikaSettings","unquote","ColumnCell","_ref$value","formatType","escapedValue","isIncompleteTagged","isIncompleteValue","allowRawCopy","useRawString","copyTooltip","visibleValue","UIKitIcon","Eye","sortOrder","isKeyColumn","unescapeKeyValue","prepareDetailedColumn","_item$resources","prepareLimitColumn","_item$resources2","sortWithUndefined","prepareMinResourcesColumn","_item$resources3","prepareAbsGuaranteedColumn","_item$resources4","prepareRelGuaranteedColumn","prepareAbsDemandColumn","_item$resources5","prepareAbsUsageColumn","_item$resources6","prepareRelUsageColumn","prepareGuaranteedUsageColumn","captionTail","FI","min_share","max_share","fair_share","fair_share_usage","dominant_resource","resource_detailed_cpu","resource_detailed_memory","resource_detailed_gpu","resource_detailed_user_slots","resource_limit_cpu","resource_limit_memory","resource_limit_gpu","resource_limit_user_slots","min_resources_cpu","min_resources_memory","min_resources_gpu","min_resources_user_slots","abs_guaranteed_cpu","abs_guaranteed_memory","abs_guaranteed_gpu","abs_guaranteed_user_slots","rel_guaranteed_cpu","rel_guaranteed_memory","rel_guaranteed_gpu","rel_guaranteed_user_slots","abs_usage_cpu","abs_usage_memory","abs_usage_gpu","abs_usage_user_slots","abs_demand_cpu","abs_demand_memory","abs_demand_gpu","abs_demand_user_slots","rel_usage_cpu","rel_usage_memory","rel_usage_gpu","rel_usage_user_slots","guaranteed_usage_cpu","guaranteed_usage_memory","guaranteed_usage_gpu","guaranteed_usage_user_slots","operation_overview","operation_count","max_operation_count","operation_progress","running_operation_count","max_running_operation_count","running_operation_progress","integral_type","burst_cpu","flow_cpu","children_burst_cpu","children_flow_cpu","accumulated_cpu","burst_duration","prepareTrees","prepareCurrentTree","defaultTree","treeNodesMap","prepareTree","attachTreeLeaves","operation","computePoolPath","parentPool","flattenAttributes","obj","toReturn","object","hasOwnProperty","innerObject","is","flatObject","getResourceLimit","limitKey","INTEGRAL_GUARANTEES_PREFIX","POOL_INTEGRAL_GUARANTEE_FIELD_TO_ATTR","guaranteeType","burstCpu","burstRam","burstGpu","flowCpu","flowRam","flowGpu","POOL_STRONG_RESOURCE_TYPE_TO_ATTRIBUTE","cpuStrong","gpuStrong","memoryStrong","POOL_GENERAL_TYPE_TO_ATTRIBUTE","POOL_RESOURCE_TYPE_TO_ATTRIBUTE","getPoolResourceInfo","childrenSum","firstValidNumber","prepareMinGuaranteed","prepareValueDetails","getPoolResourceInitialValue","allowSource","source","getInitialValues","allowedSources","slug","indexOf_","abcService","resourceGuarantee","integralGuarantee","userSlots","otherSettings","isImageTag","isVideoTag","i18nFactory","registerKeysets","CHARTKIT_ERROR_CODE","INVALID_DATA","UNKNOWN","TOO_MANY_LINES","ChartKitError","originalError","isCustomError","mergeSettingStrategy","objValue","srcValue","currentPlugins","newPlugins","newSettingsPlugins","currentPlugin","newPluginIndex","newPlugin","settingsEventEmitter","events","eventId","updateLang","configure","setLang","updates","filteredUpdates","withNaming","m","getRandomCKId","chars","random","randomString","AlertContext","useAlertContext","context","AlertAction","bAlert","AlertContextProvider","Provider","typeToIcon","danger","filled","outlined","CircleInfo","success","CircleCheck","TriangleExclamation","utility","Thunderbolt","normal","addComponentKeysets","en","corners","Card","spacing","py","px","grow","Title","Actions","I","Xmark","colorText","iconByTheme","minContent","Action","cnDropdownMenu","DropdownMenuContext","moveBack","activeItemIndex","skip","newActiveItemIndex","moveForward","rootMenuPath","DropdownMenuNavigationContext","activeMenuPath","setActiveMenuPath","DropdownMenuNavigationContextProvider","contextValue","dropdownMenuSeparator","isSeparator","shouldSkipItemNavigation","stringifyNavigationPath","DropdownMenuPopup","menuProps","popupProps","navigationAnchorRef","isSubmenu","activateParent","handleMouseEnter","handleMouseLeave","activeItem","handleKeydown","isSubmenuToggleActive","isNavigationActive","setActiveItemIndex","reset","resetNavigation","processHomeKey","processEndKey","onAnchorKeyDown","previousActiveItemIndex","useListNavigation","Menu","isActiveParent","DropdownMenuItem","closeMenu","isSubmenuOpen","every","useSubmenu","hasSubmenu","closeSubmenu","openSubmenu","subMenuItems","menuItemRef","useDirection","handleCloseMenu","handleMenuItemClick","subMenuPlacement","iconEnd","ChevronLeft","ChevronRight","Item","toItemList","updatedItems","addedGroup","groupItems","updatedItem","DropdownMenuExport","Ellipsis","onOpenToggle","hideOnScroll","renderSwitcher","switcherWrapperClassName","defaultSwitcherProps","defaultSwitcherClassName","onSwitcherClick","isPopupShown","togglePopup","closePopup","onChangeVisibility","setPopupShown","property","setProperty","isControlled","nextValue","previousState","newState","useStateWithCallback","useConditionallyControlledState","isShown","usePopupVisibility","onScroll","handleScroll","useScrollHandler","itemsList","handleSwitcherClick","handleSwitcherKeyDown","useActionHandlers","switcherProps","MenuGroup","labelId","useUniqId","u","role","MenuItem","iconStart","rel","handleClickCapture","publish","componentId","domEvent","onClickCapture","tabIndex","interactive","Group"],"sourceRoot":""}