@ytsaurus/ui 1.75.0 → 1.75.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +0,0 @@
1
- .share-usage-bar{display:block!important;position:relative}.share-usage-bar__progress{border:1px solid var(--g-color-base-generic)}.share-usage-bar__tick{border:1px solid var(--g-color-line-generic-accent);height:calc(100% + 4px);left:calc(50% - 1px);position:absolute;top:-3px;width:0;z-index:1}.scheduling-static-configuration__table{display:inline-block}.scheduling-static-configuration__name_level_1{padding-left:38px}.scheduling-static-configuration__row{color:var(--g-color-text-secondary)}.scheduling-static-configuration__pool-meta{padding-right:70px;padding-top:11px}.scheduling-static-configuration__container{display:flex;margin-bottom:20px;margin-top:-20px}.scheduling-overview__toolbar{display:flex;padding:10px 0}.scheduling-overview__toolbar,.scheduling-overview__toolbar_sticky{background-color:var(--main-background);z-index:var(--fixed-toolbar-z-index)}.scheduling-overview__toolbar_sticky{border-bottom:1px solid var(--dark-divider);box-shadow:0 1px 10px var(--opacity-background);left:var(--gn-aside-header-size);padding:10px 20px;position:fixed;right:0;top:var(--app-header-height)}.scheduling-overview__toolbar-button{margin-right:10px}.scheduling-overview__filter{margin-right:20px;min-width:200px;width:33%}.scheduling-overview__bar{align-items:center;display:flex;height:10px}.scheduling-overview__bar-progress{background-color:var(--light-background);border-radius:2px;flex-grow:1}.scheduling-overview__bar-progress-inner{border-radius:2px;height:8px;transition:width .6s ease;width:100%}.scheduling-overview__bar-progress-inner_theme_default{background-color:var(--default-color)}.scheduling-overview__bar-progress-inner_theme_success{background-color:var(--success-color)}.scheduling-overview__bar-progress-inner_theme_info{background-color:var(--info-color)}.scheduling-overview__bar-progress-inner_theme_warning{background-color:var(--warning-color)}.scheduling-overview__operation-icon_type_operation{padding-left:12px}.scheduling-overview__ephemeral-icon{margin-left:8px;position:relative;top:1px}.scheduling-overview__table{min-width:1144px;width:100%}.scheduling-overview__table-row-expander{cursor:pointer;padding-right:10px}.scheduling-overview__table-row-expander_empty{cursor:default}.scheduling-overview__table-row-expander-icon{padding-right:5px}.scheduling-overview__table-row-expander-icon_empty{cursor:default;opacity:0}.scheduling-overview__table-row_current_yes{background:var(--dark-background)}.scheduling-overview__table-row_aggregation_yes{font-weight:700}.scheduling-overview__table-item_type_type{width:18px}.scheduling-overview__table-item_type_name{overflow:hidden;text-overflow:ellipsis}.scheduling-overview__table-item_type_FI{width:30px}.scheduling-overview__table-item_type_mode{width:70px}.scheduling-overview__table-item_type_demand,.scheduling-overview__table-item_type_dominant-resource,.scheduling-overview__table-item_type_fair-share,.scheduling-overview__table-item_type_min-share,.scheduling-overview__table-item_type_operation-overview,.scheduling-overview__table-item_type_usage,.scheduling-overview__table-item_type_weight{width:85px}.scheduling-overview__table-item_type_fair-share-usage{width:160px}.scheduling-overview__table-item_type_actions{width:80px}.scheduling-overview__abc-filter{margin-right:20px;min-width:200px}.scheduling-overview__abc-filter .yc-select-control__tokens-text_empty{font-size:13px;margin-bottom:-2px}.scheduling-overview__name-content{align-items:center;display:flex;width:350px}.scheduling-overview__name-content_level_1{padding-left:38px}.scheduling-overview__name-content_level_2{padding-left:76px}.scheduling-overview__name-content_level_3{padding-left:114px}.scheduling-overview__name-content_level_4{padding-left:152px}.scheduling-overview__name-content_level_5{padding-left:190px}.scheduling-overview__name-content_level_6{padding-left:228px}.scheduling-overview__name-content_level_7{padding-left:266px}.scheduling-overview__name-content_level_8{padding-left:304px}.scheduling-overview__name-content_level_9{padding-left:342px}.scheduling-overview__name-content_level_10{padding-left:380px}.scheduling-overview__name-content_level_11{padding-left:418px}.scheduling-overview__name-content_level_12{padding-left:456px}.scheduling-overview__name-content_level_13{padding-left:494px}.scheduling-overview__name-content_level_14{padding-left:532px}.scheduling-overview__name-content_level_15{padding-left:570px}.scheduling-overview__name-content_level_16{padding-left:608px}.scheduling-overview__name-content_max-depth_1{width:388px}.scheduling-overview__name-content_max-depth_2{width:426px}.scheduling-overview__name-content_max-depth_3{width:464px}.scheduling-overview__name-content_max-depth_4{width:502px}.scheduling-overview__name-content_max-depth_5{width:540px}.scheduling-overview__name-content_max-depth_6{width:578px}.scheduling-overview__name-content_max-depth_7{width:616px}.scheduling-overview__name-content_max-depth_8{width:654px}.scheduling-overview__name-content_max-depth_9{width:692px}.scheduling-overview__name-content_max-depth_10{width:730px}.scheduling-overview__name-content_max-depth_11{width:768px}.scheduling-overview__name-content_max-depth_12{width:806px}.scheduling-overview__name-content_max-depth_13{width:844px}.scheduling-overview__name-content_max-depth_14{width:882px}.scheduling-overview__name-content_max-depth_15{width:920px}.scheduling-overview__name-content_max-depth_16{width:958px}.scheduling-overview__name-content-name{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.scheduling-overview__current-row{background-color:var(--dark-background)}.scheduling-overview ::-moz-placeholder{color:var(--g-color-text-hint)!important}.scheduling-overview ::placeholder{color:var(--g-color-text-hint)!important}.scheduling-overview__starvation-status{margin-left:-.5em;padding-bottom:6px}.scheduling-overview__weight-content{color:var(--g-color-text-secondary)}.scheduling-overview__weight-content_edited{color:inherit;font-weight:var(--yt-font-weight-bold)}.scheduling-overview__abc-id{margin-top:1px;padding-left:4px}.scheduling-overview__static{display:flex;padding-bottom:20px}.scheduling-overview__pool-meta{padding-right:75px}.yt-pools-suggest__popup{min-width:220px}.scheduling-pool-tags{display:flex;flex-grow:1;flex-shrink:1;justify-content:flex-end;overflow:hidden;text-align:right}.scheduling-pool-tags__tag{flex-shrink:1;margin-right:1ex;overflow:hidden;text-overflow:ellipsis}.scheduling-pool-tags__tag:last-child{margin-right:0}.scheduling-details{margin-top:-10px}.scheduling-details__toolbar{box-sizing:border-box;display:flex;height:48px;padding:10px 0}.scheduling-details__toolbar,.scheduling-details__toolbar_sticky{background-color:var(--main-background);z-index:var(--fixed-toolbar-z-index)}.scheduling-details__toolbar_sticky{border-bottom:1px solid var(--dark-divider);box-shadow:0 1px 10px var(--opacity-background);left:var(--gn-aside-header-size);margin-top:0;padding:10px 20px;position:fixed;right:0;top:var(--app-header-height)}.scheduling-details__filter{margin-right:20px;min-width:200px;width:33%}.scheduling-details__table{min-width:1300px;table-layout:fixed;width:100%}.scheduling-details__table_mode_operations{min-width:1500px}.scheduling-details__table_mode_integral{min-width:1550px}.scheduling-details__table-row-expander{cursor:pointer;padding-right:10px}.scheduling-details__table-row-expander_empty{cursor:default}.scheduling-details__table-row-expander-icon{padding-right:5px}.scheduling-details__table-row-expander-icon_empty{cursor:default;opacity:0}.scheduling-details__table-row_current_yes{background:var(--dark-background)}.scheduling-details__table-row_aggregation_yes{font-weight:700}.scheduling-details__table-item_type_name{overflow:hidden;text-overflow:ellipsis}.scheduling-details__table-item_type_mode{width:70px}.scheduling-details__table-item_type_FI{width:30px}.scheduling-details__table-item_type_weight{width:80px}.scheduling-details__table-item_type_demand,.scheduling-details__table-item_type_dominant-resource,.scheduling-details__table-item_type_fair-share,.scheduling-details__table-item_type_max-share,.scheduling-details__table-item_type_min-share,.scheduling-details__table-item_type_operation-overview,.scheduling-details__table-item_type_usage{width:85px}.scheduling-details__table-item_type_guaranteed-usage-cpu,.scheduling-details__table-item_type_guaranteed-usage-gpu,.scheduling-details__table-item_type_guaranteed-usage-memory,.scheduling-details__table-item_type_guaranteed-usage-user-slots{width:180px}.scheduling-details__table-item_type_fair-share-usage{width:160px}.scheduling-details__table-item_type_min-resources-cpu,.scheduling-details__table-item_type_min-resources-gpu,.scheduling-details__table-item_type_min-resources-memory,.scheduling-details__table-item_type_min-resources-user-slots{width:120px}.scheduling-details__table-item_type_abs-guaranteed-cpu,.scheduling-details__table-item_type_abs-guaranteed-gpu,.scheduling-details__table-item_type_abs-guaranteed-memory,.scheduling-details__table-item_type_abs-guaranteed-user-slots,.scheduling-details__table-item_type_rel-guaranteed-cpu,.scheduling-details__table-item_type_rel-guaranteed-gpu,.scheduling-details__table-item_type_rel-guaranteed-memory,.scheduling-details__table-item_type_rel-guaranteed-user-slots{width:130px}.scheduling-details__table-item_type_abs-demand-cpu,.scheduling-details__table-item_type_abs-demand-gpu,.scheduling-details__table-item_type_abs-demand-memory,.scheduling-details__table-item_type_abs-demand-user-slots,.scheduling-details__table-item_type_abs-usage-cpu,.scheduling-details__table-item_type_abs-usage-gpu,.scheduling-details__table-item_type_abs-usage-memory,.scheduling-details__table-item_type_abs-usage-user-slots,.scheduling-details__table-item_type_rel-usage-cpu,.scheduling-details__table-item_type_rel-usage-gpu,.scheduling-details__table-item_type_rel-usage-memory,.scheduling-details__table-item_type_rel-usage-user-slots,.scheduling-details__table-item_type_resource-detailed-cpu,.scheduling-details__table-item_type_resource-detailed-gpu,.scheduling-details__table-item_type_resource-detailed-memory,.scheduling-details__table-item_type_resource-detailed-user-slots,.scheduling-details__table-item_type_resource-limit-cpu,.scheduling-details__table-item_type_resource-limit-gpu,.scheduling-details__table-item_type_resource-limit-memory,.scheduling-details__table-item_type_resource-limit-user-slots{width:100px}.scheduling-details__table-item_type_max-running-operations,.scheduling-details__table-item_type_running-operations{width:180px}.scheduling-details__table-item_type_max-operations,.scheduling-details__table-item_type_operation-progress,.scheduling-details__table-item_type_operations,.scheduling-details__table-item_type_running-operation-progress{width:150px}.scheduling-details__table-item_type_integral-type{width:140px}.scheduling-details__table-item_type_burst-cpu,.scheduling-details__table-item_type_children-burst-cpu,.scheduling-details__table-item_type_children-flow-cpu,.scheduling-details__table-item_type_flow-cpu{width:120px}.scheduling-details__table-item_type_accumulated,.scheduling-details__table-item_type_accumulated-cpu{width:160px}.scheduling-details__table-item_type_burst-duration{width:200px}.scheduling-details__table-item_type_actions{width:80px}.scheduling-details__name-cell{align-items:center;display:flex;overflow:hidden}.scheduling-details__name-cell_child{padding-left:24px}.scheduling-details__name-cell-text{flex-shrink:1;overflow:hidden;text-overflow:ellipsis}.scheduling-details__integral-guarantee_inactive{color:var(--g-color-text-secondary)}.scheduling-content__tabs{margin-bottom:20px}.scheduling__wrapper_loading{align-items:center;display:flex;height:200px;justify-content:center}.scheduling__alerts,.scheduling__instruments{margin-bottom:20px}.scheduling__delete-dialog .g-dialog-footer{padding-bottom:10px;padding-top:10px}.scheduling-resources{grid-gap:20px 30px;display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:20px;padding-top:10px}.pool-editor-dialog .df-dialog{min-height:550px}.pool-editor-dialog .df-dialog .df-tab-field-vertical{font-size:14px;width:200px}.pool-editor-dialog__permissions-warning{color:var(--warning-text)}.pool-editor-dialog__flag{color:var(--secondary-text);font-weight:var(--yt-font-weight-bold)}.pool-editor-dialog__error{margin:0 -1em}.pool-editor-dialog__separator{border-bottom:2px solid var(--light-divider);margin-bottom:10px}.pool-editor-dialog__transfer-quota-notice{padding-bottom:20px}.scheduling-top-row-content{min-width:900px}.scheduling-top-row-content__favourites{padding-right:15px}.scheduling-top-row-content__tree{width:20ex}.scheduling-top-row-content__tree-popup{z-index:var(--dialog-suggest-z-index)!important}.scheduling-top-row-content__btn-spacer{flex:0 0 8px;padding-left:8px}.scheduling-top-row-content__clipboard{padding-right:15px}.scheduling-top-row-content__editable-breadcrumbs{align-items:center;display:flex;flex-grow:1;flex-shrink:1;overflow:hidden;padding-right:15px}.scheduling-top-row-content__editable-breadcrumbs_edit{padding-left:2ex}.scheduling-top-row-content__breadcrumbs{flex-shrink:1;margin:0 8px 0 12px;overflow:hidden}.scheduling-top-row-content__breadcrumbs-link{color:var(--secondary-text)!important}.scheduling-top-row-content__breadcrumbs-link_current{color:var(--primary-text)!important}.scheduling-top-row-content__breadcrumbs-link:hover{color:var(--hover-link)!important}.scheduling-top-row-content__pool-suggest{flex-grow:1}.scheduling-top-row-content__actions{align-items:center;display:flex}.scheduling-top-row-content__extra-control{padding-right:10px}
2
- /*# sourceMappingURL=scheduling.40c36db6.chunk.css.map*/
@@ -1 +0,0 @@
1
- {"version":3,"file":"css/scheduling.40c36db6.chunk.css","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/controls/ShareUsageBar.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/PoolStaticConfiguration/SchedulingStaticConfiguration.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/Overview/Overview.scss","webpack://@ytsaurus/ui/./src/ui/styles/mixins.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/PoolsSuggest/PoolsSuggest.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/Overview/PoolTags.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/tabs/Details/Details.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/Content.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Scheduling/Scheduling.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Content/SchedulingResources.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Scheduling/PoolEditorDialog/PoolEditorDialog.scss","webpack://@ytsaurus/ui/./src/ui/pages/scheduling/Scheduling/SchedulingTopRowContent.scss"],"sourcesContent":[".share-usage-bar {\n display: block !important;\n position: relative;\n\n &__progress {\n border: 1px solid var(--g-color-base-generic);\n }\n\n &__tick {\n position: absolute;\n top: -3px;\n left: calc(50% - 1px);\n width: 0;\n border: 1px solid var(--g-color-line-generic-accent);\n height: calc(100% + 4px);\n z-index: 1;\n }\n}\n",".scheduling-static-configuration {\n &__table {\n display: inline-block;\n }\n\n &__name {\n &_level_1 {\n padding-left: 38px;\n }\n }\n\n &__row {\n color: var(--g-color-text-secondary);\n }\n\n &__pool-meta {\n padding-right: 70px;\n padding-top: 11px;\n }\n\n &__container {\n display: flex;\n margin-top: -20px;\n margin-bottom: 20px;\n }\n}\n","@import '../../../../../styles/mixins';\n\n.scheduling-overview {\n $this: &;\n\n &__toolbar {\n display: flex;\n\n padding: 10px 0;\n\n z-index: var(--fixed-toolbar-z-index);\n background-color: var(--main-background);\n\n &_sticky {\n @include sticky-style();\n }\n }\n\n &__toolbar-button {\n margin-right: 10px;\n }\n\n &__filter {\n width: 33%;\n min-width: 200px;\n margin-right: 20px;\n }\n\n &__bar {\n display: flex;\n align-items: center;\n\n height: 10px;\n\n &-progress {\n flex-grow: 1;\n\n border-radius: 2px;\n background-color: var(--light-background);\n\n &-inner {\n width: 100%;\n height: 8px;\n\n border-radius: 2px;\n transition: width 0.6s ease;\n\n &_theme {\n &_default {\n background-color: var(--default-color);\n }\n\n &_success {\n background-color: var(--success-color);\n }\n\n &_info {\n background-color: var(--info-color);\n }\n\n &_warning {\n background-color: var(--warning-color);\n }\n }\n }\n }\n }\n\n &__operation-icon {\n &_type_operation {\n padding-left: 12px;\n }\n }\n\n &__ephemeral-icon {\n position: relative;\n margin-left: 8px;\n top: 1px;\n }\n\n &__table {\n width: 100%;\n min-width: 1144px;\n\n //table-layout: fixed;\n\n &-row {\n &-expander {\n cursor: pointer;\n padding-right: 10px;\n\n &_empty {\n cursor: default;\n }\n\n &-icon {\n padding-right: 5px;\n\n &_empty {\n cursor: default;\n opacity: 0;\n }\n }\n }\n\n &_current_yes {\n background: var(--dark-background);\n }\n\n &_aggregation_yes {\n font-weight: bold;\n }\n }\n\n &-item_type {\n &_type {\n width: 18px;\n }\n\n &_name {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &_FI {\n width: 30px;\n }\n\n &_mode {\n width: 70px;\n }\n\n &_min-share,\n &_dominant-resource,\n &_weight {\n width: 85px;\n }\n\n &_operation-overview,\n &_fair-share,\n &_usage,\n &_demand {\n width: 85px;\n }\n\n &_fair-share-usage {\n width: 160px;\n }\n\n &_actions {\n width: 80px;\n }\n }\n }\n\n &__abc-filter {\n min-width: 200px;\n margin-right: 20px;\n\n .yc-select-control__tokens-text_empty {\n font-size: 13px;\n margin-bottom: -2px;\n }\n }\n\n &__name-content {\n $ncbMinWidth: 350px;\n $levelPadding: 38px;\n\n display: flex;\n align-items: center;\n width: $ncbMinWidth;\n\n //&_level_0 {padding-left: 0 * 38px;}\n /* stylelint-disable */\n &_level_1 {\n padding-left: 1 * $levelPadding;\n }\n &_level_2 {\n padding-left: 2 * $levelPadding;\n }\n &_level_3 {\n padding-left: 3 * $levelPadding;\n }\n &_level_4 {\n padding-left: 4 * $levelPadding;\n }\n &_level_5 {\n padding-left: 5 * $levelPadding;\n }\n &_level_6 {\n padding-left: 6 * $levelPadding;\n }\n &_level_7 {\n padding-left: 7 * $levelPadding;\n }\n &_level_8 {\n padding-left: 8 * $levelPadding;\n }\n &_level_9 {\n padding-left: 9 * $levelPadding;\n }\n &_level_10 {\n padding-left: 10 * $levelPadding;\n }\n &_level_11 {\n padding-left: 11 * $levelPadding;\n }\n &_level_12 {\n padding-left: 12 * $levelPadding;\n }\n &_level_13 {\n padding-left: 13 * $levelPadding;\n }\n &_level_14 {\n padding-left: 14 * $levelPadding;\n }\n &_level_15 {\n padding-left: 15 * $levelPadding;\n }\n &_level_16 {\n padding-left: 16 * $levelPadding;\n }\n\n &_max-depth_1 {\n width: 1 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_2 {\n width: 2 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_3 {\n width: 3 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_4 {\n width: 4 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_5 {\n width: 5 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_6 {\n width: 6 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_7 {\n width: 7 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_8 {\n width: 8 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_9 {\n width: 9 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_10 {\n width: 10 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_11 {\n width: 11 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_12 {\n width: 12 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_13 {\n width: 13 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_14 {\n width: 14 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_15 {\n width: 15 * $levelPadding + $ncbMinWidth;\n }\n &_max-depth_16 {\n width: 16 * $levelPadding + $ncbMinWidth;\n }\n /* stylelint-enable */\n }\n\n &__name-content-name {\n flex-shrink: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &__name-content-tags {\n }\n\n &__current-row {\n background-color: var(--dark-background);\n }\n\n ::placeholder {\n color: var(--g-color-text-hint) !important;\n }\n\n &__starvation-status {\n padding-bottom: 6px;\n margin-left: -0.5em;\n }\n\n &__weight-content {\n color: var(--g-color-text-secondary);\n &_edited {\n color: unset;\n font-weight: var(--yt-font-weight-bold);\n }\n }\n\n &__abc-id {\n margin-top: 1px;\n padding-left: 4px;\n }\n\n &__static {\n display: flex;\n padding-bottom: 20px;\n }\n\n &__pool-meta {\n padding-right: 75px;\n }\n}\n","@import './fonts';\n@import './common';\n\n@mixin ellipsis() {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n@mixin text-label() {\n font-size: 0.9em;\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n// reset\n\n@mixin reset-ul() {\n margin: 0;\n padding: 0;\n}\n\n@mixin reset-li() {\n list-style-type: none;\n}\n\n// font\n\n@mixin yt-fonts() {\n font-family: var(--g-font-family-sans);\n font-size: var(--g-font-size);\n line-height: var(--g-line-height);\n}\n\n// heading\n\n@mixin heading-size($key) {\n $sizes: (\n s: (\n 16px,\n 20px,\n $offset-heading-small,\n ),\n xs: (\n 18px,\n 20px,\n $offset-heading-small-x,\n ),\n m: (\n 20px,\n 24px,\n $offset-heading-medium,\n ),\n l: (\n 24px,\n 28px,\n $offset-heading-large,\n ),\n xl: (\n 24px,\n 28px,\n $offset-heading-large,\n ),\n );\n $size: map-get($sizes, $key);\n\n font-size: nth($size, 1);\n line-height: nth($size, 2);\n margin: 0;\n margin-bottom: nth($size, 3);\n}\n\n$stickyVerticalPadding: 10px;\n\n@mixin sticky-style() {\n position: fixed;\n top: var(--app-header-height);\n left: var(--gn-aside-header-size);\n right: 0;\n\n padding: $stickyVerticalPadding 20px;\n\n box-shadow: 0 1px 10px var(--opacity-background);\n background-color: var(--main-background);\n border-bottom: 1px solid var(--dark-divider);\n z-index: var(--fixed-toolbar-z-index);\n}\n",".yt-pools-suggest {\n &__popup {\n min-width: 220px;\n }\n}\n",".scheduling-pool-tags {\n display: flex;\n justify-content: flex-end;\n text-align: right;\n flex-grow: 1;\n flex-shrink: 1;\n\n overflow: hidden;\n\n &__tag {\n margin-right: 1ex;\n flex-shrink: 1;\n\n overflow: hidden;\n text-overflow: ellipsis;\n &:last-child {\n margin-right: 0;\n }\n }\n}\n","@import '../../../../../styles/mixins';\n\n.scheduling-details {\n $this: &;\n\n margin-top: -10px;\n\n &__toolbar {\n box-sizing: border-box;\n display: flex;\n height: 48px;\n\n padding: 10px 0;\n\n z-index: var(--fixed-toolbar-z-index);\n background-color: var(--main-background);\n\n &_sticky {\n margin-top: 0;\n @include sticky-style();\n }\n }\n\n &__filter {\n width: 33%;\n min-width: 200px;\n margin-right: 20px;\n }\n\n &__table {\n width: 100%;\n min-width: 1300px;\n\n &_mode_operations {\n min-width: 1500px;\n }\n\n &_mode_integral {\n min-width: 1550px;\n }\n\n table-layout: fixed;\n\n &-row {\n &-expander {\n cursor: pointer;\n padding-right: 10px;\n\n &_empty {\n cursor: default;\n }\n\n &-icon {\n padding-right: 5px;\n\n &_empty {\n cursor: default;\n opacity: 0;\n }\n }\n }\n\n &_current_yes {\n background: var(--dark-background);\n }\n\n &_aggregation_yes {\n font-weight: bold;\n }\n }\n\n &-item_type {\n &_name {\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &_mode {\n width: 70px;\n }\n\n &_FI {\n width: 30px;\n }\n\n &_weight {\n width: 80px;\n }\n\n &_dominant-resource,\n &_operation-overview,\n &_min-share,\n &_max-share,\n &_fair-share,\n &_usage,\n &_demand {\n width: 85px;\n }\n\n &_guaranteed-usage-cpu,\n &_guaranteed-usage-memory,\n &_guaranteed-usage-gpu,\n &_guaranteed-usage-user-slots {\n width: 180px;\n }\n\n &_fair-share-usage {\n width: 160px;\n }\n\n &_min-resources-cpu,\n &_min-resources-memory,\n &_min-resources-gpu,\n &_min-resources-user-slots {\n width: 120px;\n }\n\n &_rel-guaranteed-cpu,\n &_rel-guaranteed-memory,\n &_rel-guaranteed-gpu,\n &_rel-guaranteed-user-slots,\n &_abs-guaranteed-cpu,\n &_abs-guaranteed-memory,\n &_abs-guaranteed-gpu,\n &_abs-guaranteed-user-slots {\n width: 130px;\n }\n\n &_abs-demand-cpu,\n &_abs-demand-memory,\n &_abs-demand-gpu,\n &_abs-demand-user-slots,\n &_abs-usage-cpu,\n &_abs-usage-memory,\n &_abs-usage-gpu,\n &_abs-usage-user-slots,\n &_rel-usage-cpu,\n &_rel-usage-memory,\n &_rel-usage-gpu,\n &_rel-usage-user-slots {\n width: 100px;\n }\n\n &_resource-limit-cpu,\n &_resource-limit-memory,\n &_resource-limit-gpu,\n &_resource-limit-user-slots {\n width: 100px;\n }\n\n &_resource-detailed-cpu,\n &_resource-detailed-memory,\n &_resource-detailed-gpu,\n &_resource-detailed-user-slots {\n width: 100px;\n }\n\n &_running-operations,\n &_max-running-operations {\n width: 180px;\n }\n\n &_operations,\n &_max-operations,\n &_operation-progress,\n &_running-operation-progress {\n width: 150px;\n }\n\n &_integral-type {\n width: 140px;\n }\n\n &_burst-cpu,\n &_flow-cpu,\n &_children-burst-cpu,\n &_children-flow-cpu {\n width: 120px;\n }\n\n &_accumulated,\n &_accumulated-cpu {\n width: 160px;\n }\n\n &_burst-duration {\n width: 200px;\n }\n\n &_actions {\n width: 80px;\n }\n }\n }\n\n &__name-cell {\n display: flex;\n align-items: center;\n overflow: hidden;\n\n &_child {\n padding-left: 24px;\n }\n }\n\n &__name-cell-text {\n overflow: hidden;\n text-overflow: ellipsis;\n flex-shrink: 1;\n }\n\n &__integral-guarantee {\n &_inactive {\n color: var(--g-color-text-secondary);\n }\n }\n}\n",".scheduling-content {\n &__tabs {\n margin-bottom: 20px;\n }\n}\n",".scheduling {\n &__wrapper {\n &_loading {\n height: 200px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n\n &__instruments,\n &__alerts {\n margin-bottom: 20px;\n }\n\n &__delete-dialog {\n .g-dialog-footer {\n padding-top: 10px;\n padding-bottom: 10px;\n }\n }\n}\n",".scheduling-resources {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-gap: 20px 30px;\n\n padding-top: 10px;\n margin-bottom: 20px;\n}\n",".pool-editor-dialog {\n .df-dialog {\n min-height: 550px;\n\n .df-tab-field-vertical {\n font-size: 14px;\n width: 200px;\n }\n }\n\n &__permissions-warning {\n color: var(--warning-text);\n }\n\n &__flag {\n font-weight: var(--yt-font-weight-bold);\n color: var(--secondary-text);\n }\n\n &__error {\n margin: 0 -1em;\n }\n\n &__separator {\n margin-bottom: 10px;\n border-bottom: 2px solid var(--light-divider);\n }\n\n &__transfer-quota-notice {\n padding-bottom: 20px;\n }\n}\n",".scheduling-top-row-content {\n min-width: 900px;\n &__favourites {\n padding-right: 15px;\n }\n\n &__tree {\n width: 20ex;\n }\n\n &__tree-popup {\n z-index: var(--dialog-suggest-z-index) !important;\n }\n\n &__btn-spacer {\n padding-left: 8px;\n flex: 0 0 8px;\n }\n\n &__clipboard {\n padding-right: 15px;\n }\n\n &__editable-breadcrumbs {\n display: flex;\n align-items: center;\n padding-right: 15px;\n flex-grow: 1;\n flex-shrink: 1;\n overflow: hidden;\n\n &_edit {\n padding-left: 2ex;\n }\n }\n\n &__breadcrumbs {\n margin: 0 8px 0 12px;\n flex-shrink: 1;\n overflow: hidden;\n }\n\n &__breadcrumbs-link {\n color: var(--secondary-text) !important;\n\n &_current {\n color: var(--primary-text) !important;\n }\n\n &:hover {\n color: var(--hover-link) !important;\n }\n }\n\n &__pool-suggest {\n flex-grow: 1;\n }\n\n &__actions {\n display: flex;\n align-items: center;\n }\n\n &__extra-control {\n padding-right: 10px;\n }\n}\n"],"names":[],"sourceRoot":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"js/7959.fedd6b2e.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/AttributesButton/AttributesButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/NumberInput/NumberInput.tsx","webpack://@ytsaurus/ui/./src/ui/components/QuotaEditor/QuotaEditor.tsx","webpack://@ytsaurus/ui/./src/ui/components/QuotaEditor/QuotaEditorWithHide.tsx","webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/Suggest/Suggest.tsx","webpack://@ytsaurus/ui/./src/ui/components/Text/Text.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountLink.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/AccountsSuggest.tsx","webpack://@ytsaurus/ui/./src/ui/pages/accounts/selector.js","webpack://@ytsaurus/ui/./src/ui/pages/accounts/tabs/general/Editor/content/GeneralContent.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/accounts-ts.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/accounts/accounts.js","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/utils/accounts/editor.js"],"sourcesContent":["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 cn from 'bem-cn-lite';\n\nimport {TextInput, TextInputProps} from '@gravity-ui/uikit';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\n\nimport hammer from '../../common/hammer';\n\nimport {parseBytes} from '../../utils';\nimport {KeyCode} from '../../constants';\nimport './NumberInput.scss';\n\nconst block = cn('yt-number-input');\n\nexport function parseValue(rawValue: string, format: NumberInputProps['format']) {\n if (rawValue === '') {\n return undefined;\n }\n const skipSpaces = rawValue.replace(/\\s/g, '');\n return format === 'Bytes' ? parseBytes(skipSpaces) : Number(skipSpaces);\n}\n\nexport function formatValue(\n value: NumberInputProps['value'],\n format?: NumberInputProps['format'],\n settings?: object,\n) {\n if (value === undefined) {\n return '';\n }\n\n const res =\n format === 'Bytes'\n ? hammer.format['Bytes'](value, settings)\n : hammer.format['Number'](value, settings);\n return res === hammer.format.NO_VALUE ? '' : res;\n}\n\nfunction toRawValue(value: NumberInputProps['value']) {\n return value === undefined ? '' : value;\n}\n\nexport interface NumberInputWithErrorProps\n extends Omit<TextInputProps, 'value' | 'onChange' | 'theme' | 'error' | 'defaultValue'> {\n className?: string;\n\n format?: 'Number' | 'Bytes'; // 'Number' by default\n\n formatFn?: (v: NumberInputProps['value']) => string;\n parseFn?: (v: string) => NumberInputWithErrorProps['value'];\n\n decimalPlaces?: number;\n value?: {\n value: number | undefined;\n error?: string;\n };\n\n showDefaultValue?: boolean;\n defaultValue?: number;\n defaultValueClassName?: string;\n\n onChange: (v: NumberInputWithErrorProps['value']) => void;\n onEnterKeyDown?: () => void;\n\n validator?: (v?: number) => string | undefined;\n min?: number;\n max?: number;\n integerOnly?: boolean;\n\n showHint?: boolean;\n\n hidePrettyValue?: boolean;\n preciseInitialRawValue?: boolean;\n\n bottomLineVisibility?: 'visible' | 'hidden' | 'focused';\n\n disabled?: boolean;\n}\n\ninterface State {\n parsedValue?: number;\n parsedError?: string;\n rawValue?: string;\n formattedValue?: string;\n focused?: boolean;\n}\n\nexport class NumberInputWithError extends React.Component<NumberInputWithErrorProps, State> {\n static defaultProps = {\n size: 'm',\n view: 'normal',\n hasClear: true,\n bottomLineVisibility: 'visible',\n };\n\n static getDerivedStateFromProps(\n props: NumberInputWithErrorProps,\n state: State,\n ): Partial<State> | null {\n const {value, format, preciseInitialRawValue, decimalPlaces, formatFn} = props;\n if (state.rawValue === undefined) {\n const formatted = formatFn\n ? formatFn(value?.value)\n : formatValue(value?.value, format, {\n digits: decimalPlaces,\n });\n return {\n parsedValue: value?.value,\n parsedError: NumberInputWithError.errorFromValue(value, props),\n rawValue: preciseInitialRawValue ? toRawValue(value?.value) : formatted,\n formattedValue: formatted,\n };\n }\n\n return null;\n }\n\n static errorFromValue(v: NumberInputWithErrorProps['value'], props: NumberInputWithErrorProps) {\n const {validator = () => undefined, min, max, integerOnly} = props;\n const {value, error} = v || {};\n\n if (error) {\n return error;\n }\n\n if (value === undefined || value === null) {\n return undefined;\n }\n\n try {\n if (isNaN(value)) {\n return 'wrong format';\n }\n\n const error = validator(value);\n if (error) {\n return error;\n }\n } catch (error) {\n return String(error);\n }\n\n if (integerOnly && value % 1 !== 0) {\n return `The value must be an integer`;\n }\n\n if (min !== undefined && value < min) {\n return `The value must be \\u2265 ${min}`;\n }\n\n if (max !== undefined && value > max) {\n return `The value must be \\u2264 ${max}`;\n }\n\n return undefined;\n }\n\n state: State = {parsedValue: NaN};\n\n // eslint-disable-next-line react/sort-comp\n parseValue(rawValue: string): NumberInputWithErrorProps['value'] {\n if (this.props.parseFn) {\n return this.props.parseFn(rawValue);\n }\n return {value: parseValue(rawValue, this.props.format)};\n }\n\n format(value: NumberInputProps['value']) {\n const {format, decimalPlaces, formatFn} = this.props;\n if (formatFn) {\n return formatFn(value);\n }\n return formatValue(value, format, {digits: decimalPlaces});\n }\n\n onChange = (rawValue: string) => {\n const parsedValue = this.parseValue(rawValue);\n const error = NumberInputWithError.errorFromValue(parsedValue, this.props);\n const formattedValue = this.format(parsedValue?.value);\n this.setState({\n parsedValue: parsedValue?.value,\n parsedError: error,\n rawValue,\n formattedValue,\n });\n\n const {onChange} = this.props;\n onChange({value: parsedValue?.value, error});\n };\n\n onBlur = () => {\n this.setState({focused: false});\n };\n\n onFocus = () => {\n this.setState({focused: true});\n };\n\n getRestProps() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {value, onChange, min, max, validator, format, defaultValue, ...rest} = this.props;\n return rest;\n }\n\n onKeyDown = (e: React.KeyboardEvent) => {\n if (e.keyCode === KeyCode.ENTER && this.props.onEnterKeyDown) {\n this.props.onEnterKeyDown();\n }\n };\n\n renderMinMaxHint() {\n const {min, max, showHint, size} = this.props;\n const showMin = !isNaN(min!);\n const showMax = !isNaN(max!);\n if (!showHint || (!showMin && !showMax)) {\n return null;\n }\n return (\n <div className={block('hint', {size})}>\n {showMin && (\n <Tooltip content={String(min)} placement={'bottom'}>\n min: <b>{this.format(min)}</b>\n </Tooltip>\n )}\n {showMin && <> &nbsp; </>}\n {showMax && (\n <Tooltip content={String(max)} placement={'bottom'}>\n max: <b>{this.format(max)}</b>\n </Tooltip>\n )}\n </div>\n );\n }\n\n renderPrettyValue() {\n const {size, hidePrettyValue} = this.props;\n const {formattedValue} = this.state;\n\n if (hidePrettyValue) {\n return null;\n }\n\n return <div className={block('pretty-value', {size})}>{formattedValue}&nbsp;</div>;\n }\n\n renderDefaultValue() {\n const {defaultValue, defaultValueClassName} = this.props;\n\n return (\n <TextInput\n disabled\n className={defaultValueClassName}\n value={this.format(defaultValue)}\n pin={'clear-round'}\n />\n );\n }\n\n isBottomLineVisible() {\n const {bottomLineVisibility} = this.props;\n const {focused} = this.state;\n\n return (\n bottomLineVisibility === 'visible' || (focused && bottomLineVisibility === 'focused')\n );\n }\n\n render() {\n const {\n value: propsValue,\n className,\n showHint,\n hidePrettyValue,\n showDefaultValue,\n } = this.props;\n const {parsedError, rawValue, formattedValue, focused} = this.state;\n const rest = this.getRestProps();\n const {size, view, hasClear} = rest;\n\n const {error} = propsValue ?? {};\n\n const err = error || parsedError;\n\n const text = focused ? rawValue : formattedValue;\n\n return (\n <div className={block(null, className)}>\n <div className={block('top')}>\n <TextInput\n {...rest}\n error={err as any}\n autoComplete={false}\n onUpdate={this.onChange}\n onKeyDown={this.onKeyDown}\n hasClear={hasClear}\n value={text}\n size={size}\n view={view}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n pin={showDefaultValue ? 'round-brick' : undefined}\n />\n {showDefaultValue && this.renderDefaultValue()}\n </div>\n {!err && this.isBottomLineVisible() && (\n <React.Fragment>\n {showHint && (!focused || hidePrettyValue)\n ? this.renderMinMaxHint()\n : this.renderPrettyValue()}\n </React.Fragment>\n )}\n </div>\n );\n }\n}\n\nexport interface NumberInputProps extends Omit<NumberInputWithErrorProps, 'value' | 'onChange'> {\n value: number | undefined;\n onChange: (value: NumberInputProps['value']) => void;\n\n error?: string;\n}\n\nexport default class NumberInput extends React.Component<NumberInputProps> {\n static format(\n value: NumberInputProps['value'],\n format?: NumberInputWithErrorProps['format'],\n settings?: object,\n ) {\n return formatValue(value, format, settings);\n }\n\n render() {\n const {\n value,\n error,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onChange,\n ...rest\n } = this.props;\n\n return <NumberInputWithError {...rest} onChange={this.onChange} value={{value, error}} />;\n }\n\n onChange: NumberInputWithErrorProps['onChange'] = (v) => {\n this.props.onChange(v?.value);\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport hammer from '../../common/hammer';\nimport NumberInput, {\n NumberInputProps,\n NumberInputWithError,\n NumberInputWithErrorProps,\n} from '../../components/NumberInput/NumberInput';\n\nimport './QuotaEditor.scss';\n\nconst block = cn('yt-quota-editor');\n\nexport interface QuotaEditorProps {\n className?: string;\n limit: number | undefined;\n\n min?: number;\n max?: number;\n\n error?: string;\n prevLimit?: number;\n format: NumberInputProps['format'];\n decimalPlaces?: number;\n currentAccount: string;\n sourceAccount?: string;\n\n showHint?: boolean;\n\n onChange: (value: {limit?: number; source?: string; error?: string}) => void;\n onEnterKeyDown?: () => void;\n\n getInfoByName: (account: string) => {\n limit?: number;\n total?: number;\n totalChildrenLimit?: number;\n allowChildrenOverCommit?: number;\n };\n\n limitInputTitle?: React.ReactNode;\n sourceSuggestTitle?: React.ReactNode;\n renderSourceSuggest?: (props: SuggestProps) => React.ReactNode;\n sourceSuggestDisabled?: boolean;\n}\n\ninterface SuggestProps {\n value: string;\n onChange: (value?: string) => void;\n disabled?: boolean;\n}\n\nexport default class QuotaEditor extends React.Component<QuotaEditorProps> {\n render() {\n const {\n className,\n format,\n sourceSuggestTitle,\n renderSourceSuggest,\n sourceAccount,\n limitInputTitle,\n showHint,\n error,\n decimalPlaces,\n sourceSuggestDisabled,\n } = this.props;\n\n return (\n <div className={block(null, className)}>\n {renderSourceSuggest && (\n <div className={block('item')}>\n <div className={block('item-title')}>\n {sourceSuggestTitle || 'Account to distribution'}\n </div>\n {renderSourceSuggest({\n value: sourceAccount || '',\n onChange: this.onAccountChange,\n disabled: sourceSuggestDisabled,\n })}\n <div className={block('free')}>\n <React.Fragment>\n Free to distribute\n <span className={block('free-value')}>\n {' '}\n {this.getFreeFormatted()}\n </span>\n </React.Fragment>\n </div>\n </div>\n )}\n <div className={block('item')}>\n <div className={block('item-title')}>\n {limitInputTitle || 'New quota limit'}\n </div>\n <NumberInputWithError\n onChange={this.onBytesChange}\n value={{value: this.getLimit(), error}}\n format={format}\n showHint={showHint}\n min={this.getMinLimit()}\n max={this.getMaxLimit()}\n onEnterKeyDown={this.onEnterKeyDown}\n decimalPlaces={decimalPlaces}\n qa=\"quota-editor-new-limit\"\n />\n </div>\n </div>\n );\n }\n\n private onEnterKeyDown = () => {\n const {onEnterKeyDown = () => {}} = this.props;\n onEnterKeyDown();\n };\n\n private onBytesChange: NumberInputWithErrorProps['onChange'] = (value) => {\n const {onChange, sourceAccount} = this.props;\n onChange({\n limit: value?.value,\n source: sourceAccount,\n error: value?.error || this.checkForError(value?.value, sourceAccount),\n });\n };\n\n private onAccountChange = (source?: string) => {\n const {onChange, limit, error} = this.props;\n onChange({\n limit,\n source,\n error: error || this.checkForError(limit, source),\n });\n };\n\n private getLimit() {\n const {limit, prevLimit} = this.props;\n return limit !== undefined ? limit : prevLimit;\n }\n\n private getFreeImpl() {\n const {sourceAccount} = this.props;\n const info = this.calcLimitTotal(sourceAccount);\n const {limit, total, allowChildrenOverCommit, totalChildrenLimit = 0} = info;\n if (limit === undefined || total === undefined) {\n return {};\n }\n\n if (allowChildrenOverCommit) {\n const free = Math.max(0, limit);\n return {\n free,\n maxValue: free,\n };\n } else {\n const {prevLimit: itemLimit = 0} = this.props;\n const {limit: itemNewLimit = itemLimit} = this.props;\n const free = Math.max(0, limit - totalChildrenLimit);\n return {\n free: free + itemLimit - itemNewLimit,\n maxValue: free + itemLimit,\n };\n }\n }\n\n private getFree() {\n return this.getFreeImpl().free!;\n }\n\n private calcLimitTotal(account = '') {\n return this.props.getInfoByName(account);\n }\n\n private getMinLimit() {\n const {min} = this.props;\n if (min !== undefined) {\n return min;\n }\n\n const {currentAccount, getInfoByName} = this.props;\n const {totalChildrenLimit, total} = getInfoByName(currentAccount);\n const res = (total || 0) + (totalChildrenLimit || 0);\n\n return res;\n }\n\n private getMaxLimit() {\n const {max} = this.props;\n if (max !== undefined) {\n return max;\n }\n return this.getFreeImpl().maxValue!;\n }\n\n private getFreeFormatted() {\n const {sourceAccount} = this.props;\n if (!sourceAccount) {\n return hammer.format.NO_VALUE;\n }\n return NumberInput.format(Number(this.getFree()), this.props.format);\n }\n\n private checkForError(newLimit?: number, srcAccount?: string) {\n if (newLimit === undefined) {\n return undefined;\n }\n\n if (isNaN(newLimit!)) {\n return 'wrong format!';\n }\n\n const {currentAccount} = this.props;\n if (currentAccount === srcAccount) {\n return 'The same source account';\n }\n\n if (newLimit <= this.props.prevLimit!) {\n return undefined;\n }\n\n const maxLimit = this.getMaxLimit();\n\n if (srcAccount && (maxLimit === undefined || newLimit > maxLimit)) {\n return 'New value is too big';\n }\n\n return undefined;\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\nimport Icon from '../../components/Icon/Icon';\n\nimport {ClickableText} from '../../components/ClickableText/ClickableText';\nimport Button from '../../components/Button/Button';\nimport NumberInput, {NumberInputProps} from '../../components/NumberInput/NumberInput';\nimport {ROOT_ACCOUNT_NAME} from '../../constants/accounts/accounts';\n\nimport './QuotaEditorWithHide.scss';\nimport QuotaEditor, {QuotaEditorProps} from './QuotaEditor';\n\nconst block = cn('yt-quota-editor-with-hide');\n\ninterface Props {\n className?: string;\n limit?: number;\n format: NumberInputProps['format'];\n currentAccount: string;\n parentOfCurrentAccount?: string;\n\n onHide: () => void;\n onSave: (limit: number, limitDiff: number, account?: string) => void;\n\n getInfoByName: (account: string) => {\n limit?: number;\n total?: number;\n totalChildrenLimit?: number;\n allowChildrenOverCommit?: number;\n };\n\n sourceSuggestTitle?: React.ReactNode;\n renderSourceSuggest?: (props: SuggestProps) => React.ReactNode;\n\n min?: number;\n max?: number;\n}\n\ninterface SuggestProps {\n value: string;\n onChange: (value?: string) => void;\n}\n\ninterface State {\n account?: string;\n accountChanged?: boolean;\n\n bytesError?: string;\n newLimit?: number;\n isReadyToSave?: boolean;\n showConfirm?: boolean;\n}\n\nexport default class QuotaEditorWithHide extends React.Component<Props, State> {\n state: State = {};\n\n render() {\n const {showConfirm} = this.state;\n return showConfirm ? this.renderConfirmation() : this.renderEditor();\n }\n\n private renderConfirmation() {\n const {className, limit} = this.props;\n return (\n <div className={block('confirm', className)}>\n <div className={block('confirm-notice')}>\n Do you really want to change the quota limit?\n </div>\n <div className={block('confirm-details')}>\n The previous value is {this.renderLimit(limit)}, the new value is{' '}\n {this.renderLimit(this.getLimit())}\n </div>\n <div className={block('confirm-actions')}>\n <Button\n className={block('confirm-btn')}\n view={'action'}\n onClick={this.onYes}\n qa=\"quota-editor-confirmation-yes\"\n >\n Yes\n </Button>\n <Button\n className={block('confirm-btn')}\n view=\"flat-secondary\"\n onClick={this.onCancel}\n >\n Cancel\n </Button>\n </div>\n </div>\n );\n }\n\n private onYes = () => {\n const {limit: oldLimit = 0} = this.calcLimitTotal(this.props.currentAccount);\n const newLimit = this.getLimit() || 0;\n this.props.onSave(newLimit, newLimit - oldLimit, this.getDistributeAccount());\n this.setState({showConfirm: false});\n this.props.onHide();\n };\n\n private onCancel = () => {\n this.setState({showConfirm: false});\n };\n\n private renderLimit(value: Props['limit']) {\n const {format} = this.props;\n return <span className={block('confirm-limit')}>{NumberInput.format(value, format)}</span>;\n }\n\n private renderEditor() {\n const {className, onHide} = this.props;\n const {isReadyToSave} = this.state;\n\n return (\n <div\n className={block(\n null,\n [className, 'yt-special-background'].filter(Boolean).join(' '),\n )}\n >\n <div className={block('top')}>\n Edit Quota limit\n <ClickableText className={block('hide')} color=\"secondary\" onClick={onHide}>\n <Icon awesome={'times'} face={'light'} />\n </ClickableText>\n </div>\n <div className={block('controls')}>\n {this.renderControl()}\n <div className={block('controls-item', {save: true})}>\n <div className={block('control-title')}>&nbsp;</div>\n <Button\n size={'m'}\n view={'action'}\n disabled={!isReadyToSave}\n onClick={this.onSave}\n qa=\"quota-editor-save\"\n >\n Save\n </Button>\n </div>\n </div>\n </div>\n );\n }\n\n private renderControl() {\n const {\n format,\n limit,\n min,\n max,\n currentAccount,\n getInfoByName,\n sourceSuggestTitle,\n renderSourceSuggest,\n } = this.props;\n return (\n <QuotaEditor\n className={block('grow')}\n currentAccount={currentAccount}\n sourceAccount={this.getDistributeAccount()}\n getInfoByName={getInfoByName}\n sourceSuggestTitle={sourceSuggestTitle}\n renderSourceSuggest={renderSourceSuggest}\n format={format}\n limit={this.getLimit()}\n prevLimit={limit}\n onChange={this.onChange}\n onEnterKeyDown={this.onSave}\n min={min}\n max={max}\n />\n );\n }\n\n private onChange: QuotaEditorProps['onChange'] = ({limit, source, error}) => {\n const {parentOfCurrentAccount, limit: prevLimit} = this.props;\n this.setState({\n newLimit: limit,\n account: source,\n accountChanged: source !== parentOfCurrentAccount,\n isReadyToSave: !error && limit !== prevLimit && limit !== undefined,\n });\n };\n\n private onSave = () => {\n if (this.state.isReadyToSave) {\n this.setState({showConfirm: true});\n }\n };\n\n private getLimit() {\n const {newLimit} = this.state;\n const {limit} = this.props;\n return newLimit !== undefined ? newLimit : limit;\n }\n\n private getDistributeAccount() {\n const {account, accountChanged} = this.state;\n const res = accountChanged ? account : this.props.parentOfCurrentAccount;\n return res === ROOT_ACCOUNT_NAME ? '' : res;\n }\n\n private calcLimitTotal(account = '') {\n return this.props.getInfoByName(account);\n }\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport ReactList from 'react-list';\nimport block from 'bem-cn-lite';\n\nimport isNumber_ from 'lodash/isNumber';\nimport isObject_ from 'lodash/isObject';\nimport partition_ from 'lodash/partition';\n\nimport {Popup, PopupProps, TextInput, TextInputProps} from '@gravity-ui/uikit';\n\nimport templates from '../../components/templates/utils';\n\nimport './Suggest.scss';\n\nconst b = block('suggest');\n\n// TODO add is scrolled into view logic\n// TODO support custom item height\n\nexport const itemsProps = PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n value: PropTypes.string,\n text: PropTypes.string,\n counter: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n }),\n ]),\n);\n\ninterface Item {\n value: string;\n text: string;\n counter?: string | number;\n}\n\nconst ESCAPE = 27;\nconst ENTER = 13;\nconst ARROW_UP = 38;\nconst ARROW_DOWN = 40;\n\n/*const TAB = 9;\nconst CTRL = 16;\nconst ALT = 17;\nconst ARROW_LEFT = 37;\nconst ARROW_RIGHT = 39;\nconst COMMAND = 91;*/\n\nexport interface SuggestProps {\n className?: string;\n\n filter: (items: SuggestProps['items'], text?: string) => SuggestProps['items'];\n apply?: (value: SuggestItem) => void;\n onTextUpdate?: (text: string) => void;\n onItemClick?: (item: SuggestItem) => void;\n clear?: () => void;\n placeholder?: string;\n autoFocus?: boolean;\n text?: string;\n defaultText?: string;\n disabled?: boolean;\n template?: {\n key: string;\n };\n items: Array<SuggestItem>;\n maxItems?: number | {totalAmount: number; groupPredicate: () => void};\n\n zIndexGroupLevel?: number;\n onBlur?: () => void;\n onFocus?: () => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n pin?: TextInputProps['pin'];\n onOpenChange?: (p: {open: boolean}) => void;\n popupClassName?: string;\n popupPlacement?: PopupProps['placement'];\n\n renderItem?: (item: SuggestItem) => React.ReactNode;\n}\n\nexport type SuggestItem = string | Item;\n\ninterface State {\n text?: string;\n items: SuggestProps['items'];\n selectedIndex: number;\n popupVisible: boolean;\n\n prevItems: SuggestProps['items'];\n\n focused?: boolean;\n}\n\nexport default class Suggest extends Component<SuggestProps, State> {\n static defaultProps = {\n disable: false,\n text: '',\n autoFocus: false,\n items: [],\n zIndexGroupLevel: 1,\n onBlur: () => {},\n focused: false,\n };\n\n private input = React.createRef<HTMLInputElement>();\n private isClearClicked = false; // the flag for the correct render text-input view after clear button click\n private isUnmounting = false;\n private skipApplyForNextBlur = false;\n\n constructor(props: SuggestProps) {\n super(props);\n\n this.state = {\n text: 'text' in props ? props.text : props.defaultText,\n items: props.items,\n selectedIndex: 0,\n popupVisible: false,\n prevItems: [],\n };\n\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.hideSuggestions = this.hideSuggestions.bind(this);\n this.clearSuggestions = this.clearSuggestions.bind(this);\n }\n\n // eslint-disable-next-line @typescript-eslint/member-ordering\n static getDerivedStateFromProps(props: SuggestProps, prevState: State) {\n const text = !prevState.focused && 'text' in props ? props.text : prevState.text;\n\n if (props.items === prevState.prevItems && text === prevState.text) {\n return null;\n }\n\n const items = props.filter(props.items, text);\n const res = {items, prevItems: props.items, text};\n\n return res;\n }\n\n componentDidMount() {\n this.isClearClicked = false;\n }\n\n componentWillUnmount() {\n this.isUnmounting = true;\n }\n\n // eslint-disable-next-line react/sort-comp\n onTextUpdate = (text: string) => {\n const {clear, onTextUpdate} = this.props;\n\n this.setState({text});\n this.loadSuggestions(text);\n\n if (!text.length) {\n clear?.();\n }\n\n onTextUpdate?.(text);\n };\n\n onFocus() {\n // make sure that suggestions popup is visible only if onFocus() invocation was not followed\n // by onClearClick() invocation (which sets the flag to true afterwards), since onFocus event\n // always happen first when any action is made within text input\n this.setState({focused: true});\n\n this.isClearClicked = false;\n this.loadSuggestions(this.state.text);\n this.skipApplyForNextBlur = false;\n this.props.onFocus?.();\n }\n\n onBlur() {\n this.hideSuggestions();\n if (!this.isClearClicked) {\n this.props.onBlur?.();\n }\n if (!this.skipApplyForNextBlur) {\n this.applySuggestion(this.state.text ?? '');\n }\n this.setState({focused: false});\n }\n\n onKeyDown(evt: React.KeyboardEvent<HTMLElement>) {\n const key = evt.keyCode;\n\n if (key === ARROW_DOWN) {\n evt.preventDefault();\n this.selectNextSuggestion();\n } else if (key === ARROW_UP) {\n evt.preventDefault();\n this.selectPrevSuggestion();\n } else if (key === ENTER) {\n this.applyOrClearSuggestion();\n } else if (key === ESCAPE) {\n this.input.current?.blur();\n }\n }\n\n hideSuggestions() {\n this.setState({items: [], popupVisible: false, selectedIndex: 0});\n this.props.onOpenChange?.({open: false});\n }\n\n showSuggestions = (items: SuggestProps['items']) => {\n if (!this.isUnmounting) {\n this.setState({\n items,\n popupVisible: true,\n selectedIndex: 0,\n });\n this.props.onOpenChange?.({open: true});\n }\n };\n\n loadSuggestions(text?: string) {\n const {filter, items} = this.props;\n\n Promise.resolve(filter(items, text)).then(this.showSuggestions);\n }\n\n clearSuggestions() {\n const {clear} = this.props;\n\n clear?.();\n // update flag value not to show suggestions after function clear() have change input value for ''\n // and on input change event listener will call popup render\n this.isClearClicked = true;\n\n this.input.current?.blur();\n }\n\n applySuggestion(text: string) {\n const {apply} = this.props;\n this.setState({text});\n apply?.(text);\n this.input.current?.blur();\n }\n\n getItemIndex(selectedIndex: number) {\n return selectedIndex - 1;\n }\n\n getSelectedIndex(itemIndex: number) {\n return itemIndex + 1;\n }\n\n getItemValue(item: string | Item) {\n return typeof item === 'string' ? item : item.value;\n }\n\n applyOrClearSuggestion() {\n const {selectedIndex, items} = this.state;\n\n let item: SuggestItem | undefined;\n\n if (selectedIndex === 0) {\n if (items.length > 0) {\n item = items[0];\n }\n } else {\n item = items[this.getItemIndex(selectedIndex)];\n }\n\n if (item) {\n const value = this.getItemValue(item);\n this.applySuggestion(value);\n const {onItemClick} = this.props;\n onItemClick?.(item);\n }\n }\n\n selectPrevSuggestion() {\n const {selectedIndex, items} = this.state;\n const prevIndex =\n selectedIndex === 0 ? this.getSelectedIndex(items.length - 1) : selectedIndex - 1;\n this.setState({selectedIndex: prevIndex});\n }\n\n selectNextSuggestion() {\n const {selectedIndex, items} = this.state;\n const nextIndex =\n selectedIndex === this.getSelectedIndex(items.length - 1) ? 0 : selectedIndex + 1;\n this.setState({selectedIndex: nextIndex});\n }\n\n renderInput() {\n const {text} = this.state;\n const {placeholder, autoFocus, disabled, pin} = this.props;\n\n return (\n <TextInput\n hasClear\n value={text}\n className={b('control')}\n placeholder={placeholder}\n disabled={disabled}\n onUpdate={this.onTextUpdate}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n autoFocus={autoFocus}\n controlRef={this.input}\n pin={pin}\n onKeyDown={this.onKeyDown}\n />\n );\n }\n\n renderCounter(item: Item) {\n const counter = item.counter;\n\n return (\n typeof counter !== 'undefined' && <span className={b('item-counter')}>{counter}</span>\n );\n }\n\n renderSimpleItem(item: string | Item) {\n const text = typeof item === 'string' ? item : item.text;\n\n return (\n <span>\n {'string' !== typeof item && this.renderCounter(item)}\n {text}\n </span>\n );\n }\n\n renderItem(\n item: string | Item,\n index: number,\n key: number | string,\n className?: string,\n ): React.ReactElement {\n const {selectedIndex} = this.state;\n const itemClassName = b(\n 'item',\n {\n selected: selectedIndex === this.getSelectedIndex(index) ? 'yes' : undefined,\n },\n className,\n );\n\n const value = this.getItemValue(item);\n\n const {template, renderItem, onItemClick} = this.props;\n\n const renderer =\n renderItem ??\n (typeof template !== 'undefined'\n ? templates.get(template.key).__default__\n : this.renderSimpleItem.bind(this));\n\n return (\n <li\n key={key}\n title={value}\n className={itemClassName}\n onMouseDown={() => {\n this.skipApplyForNextBlur = true;\n onItemClick?.(item);\n this.applySuggestion(value);\n }}\n >\n {renderer(item)}\n </li>\n );\n }\n\n getInputWidth() {\n // Is there a way to avoid using private _control property?\n return this.input.current ? this.input.current.offsetWidth - 2 : 0;\n }\n\n restrictItems(items: Array<string | Item>) {\n const {maxItems} = this.props;\n\n if (isNumber_(maxItems)) {\n return items.slice(0, maxItems || items.length);\n } else if (isObject_(maxItems)) {\n const {totalAmount, groupPredicate} = maxItems;\n const [positiveGroup, negativeGroup] = partition_(items, groupPredicate);\n if (positiveGroup.length && negativeGroup.length) {\n // NOTE: we don't want to one group to be omitted in case there is a large\n // bias towards another group - hence minimum value of 1\n const positiveGroupMaxItems = Math.round(\n Math.max((positiveGroup.length / items.length) * totalAmount, 1),\n );\n return positiveGroup\n .slice(0, positiveGroupMaxItems)\n .concat(negativeGroup.slice(0, totalAmount - positiveGroupMaxItems));\n } else {\n // one group is empty - same case as no groups\n return items.slice(0, totalAmount || items.length);\n }\n } else {\n return items;\n }\n }\n\n renderSuggestions(items: Array<SuggestItem>) {\n const className = b('wrapper');\n const listClassName = b('items');\n\n const itemRenderer = (index: number, key: number | string): JSX.Element =>\n this.renderItem(items[index], index, key);\n\n const showNoItemsMsg = items.length === 0 && this.state.text;\n return (\n items && (\n <div className={className}>\n {showNoItemsMsg && this.renderItem('No items', -1, 'no_items', b('no-items'))}\n <ul className={listClassName} style={{minWidth: this.getInputWidth()}}>\n <ReactList\n itemRenderer={itemRenderer}\n length={items.length}\n type=\"uniform\"\n />\n </ul>\n </div>\n )\n );\n }\n\n renderPopup() {\n const {popupClassName, popupPlacement} = this.props;\n const {popupVisible} = this.state;\n\n const items = this.restrictItems(this.state.items);\n return (\n <Popup\n className={popupClassName}\n placement={popupPlacement ?? ['bottom-start', 'top-start']}\n anchorRef={this.input}\n // don't show popup with suggestions after clear button click\n open={!this.isClearClicked && popupVisible && items.length > 0}\n onClose={this.hideSuggestions}\n >\n {this.renderSuggestions(items)}\n </Popup>\n );\n }\n\n render() {\n const {className} = this.props;\n return (\n <div className={b(null, className)}>\n {this.renderInput()}\n {this.renderPopup()}\n </div>\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 Link from '../../components/Link/Link';\nimport {AccountsTab} from '../../constants/accounts/accounts';\nimport {Page} from '../../constants';\nimport {useSelector} from 'react-redux';\nimport {getCluster} from '../../store/selectors/global';\nimport hammer from '../../common/hammer';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport ClipboardButton from '../../components/ClipboardButton/ClipboardButton';\n\ninterface Props {\n className?: string;\n account?: string;\n cluster?: string;\n\n inline?: boolean;\n}\n\nexport function genAccountsUrl(cluster: string, account: string) {\n return `/${cluster}/${Page.ACCOUNTS}/${AccountsTab.GENERAL}?account=${account}`;\n}\n\nexport default function AccountLink(props: Props) {\n const {cluster: propsCluster, account, className, inline} = props;\n const currentCluster = useSelector(getCluster);\n const cluster = propsCluster || currentCluster;\n\n return (\n <Tooltip\n ellipsis={inline}\n className={className}\n content={\n !account ? null : (\n <>\n <ClipboardButton text={account} view=\"flat-secondary\" /> {account}\n </>\n )\n }\n >\n {account ? (\n <Link theme={'primary'} routed url={genAccountsUrl(cluster, account)}>\n {account}\n </Link>\n ) : (\n hammer.format.NO_VALUE\n )}\n </Tooltip>\n );\n}\n","import React from 'react';\nimport {connect} from 'react-redux';\n\nimport map_ from 'lodash/map';\n\nimport cn from 'bem-cn-lite';\n\nimport ErrorBlock from '../../components/Error/Error';\n\nimport {ROOT_ACCOUNT_NAME} from '../../constants/accounts/accounts';\nimport {getEditableAccountParentSuggests} from '../../store/selectors/accounts/accounts';\nimport {getAccountNames} from '../../store/selectors/accounts/accounts-ts';\n\nimport './AccountsSuggest.scss';\nimport {fetchFullList1M} from '../../utils/users-groups';\nimport {USE_CACHE} from '../../../shared/constants/yt-api';\nimport {RootState} from '../../store/reducers';\nimport {YTApiId} from '../../rum/rum-wrap-api';\nimport {SelectSingle} from '../../components/Select/Select';\n\nconst block = cn('accounts-suggest');\n\nconst ROOT_ACCOUNT_TITLE = '<Root>';\n\ninterface Props {\n value?: string;\n\n onChange: (value?: Props['value']) => void;\n placeholder?: string;\n validate?: (value: Props['value']) => string | undefined;\n touched?: boolean;\n items: Array<string>;\n disabled?: boolean;\n allowRootAccount?: boolean;\n}\n\nexport function AccountSuggestImpl(props: Props) {\n const {\n items,\n onChange,\n placeholder,\n allowRootAccount,\n disabled,\n validate = () => undefined,\n touched,\n } = props;\n const value = props.value;\n\n const options = map_(items, (item) => ({\n value: item,\n text: item,\n }));\n if (allowRootAccount) {\n options.splice(0, 0, {\n value: ROOT_ACCOUNT_NAME,\n text: ROOT_ACCOUNT_TITLE,\n });\n }\n\n const error = touched && validate(value);\n\n return (\n <div className={block({empty: !value, error: Boolean(error)})}>\n <SelectSingle\n disabled={disabled}\n items={options}\n onChange={onChange}\n placeholder={placeholder}\n value={value}\n width=\"max\"\n hideClear\n />\n {error && <div className={block('error')}>{error}</div>}\n </div>\n );\n}\n\nAccountSuggestImpl.isEmpty = (value: string) => {\n return !value;\n};\n\nAccountSuggestImpl.getDefaultValue = () => {\n return '';\n};\n\nAccountSuggestImpl.hasErrorRenderer = true;\n\nconst mapStateToProps = (state: RootState) => {\n return {\n items: getAccountNames(state),\n };\n};\n\nconst ASConnector = connect(mapStateToProps);\n\nconst AccountSuggestConnected = ASConnector(AccountSuggestImpl);\n\nexport default AccountSuggestConnected;\n\nconst mapStateToPropsForParents = (state: RootState) => {\n return {\n items: getEditableAccountParentSuggests(state),\n };\n};\n\nexport const SuggestParentsForEditableAccount =\n connect(mapStateToPropsForParents)(AccountSuggestImpl);\n\nexport function AccountsSuggestWithLoading(\n props: Omit<React.ComponentProps<typeof AccountSuggestImpl>, 'items'>,\n) {\n const [{items, error}, setState] = React.useState<{\n items?: Array<string>;\n error?: string;\n }>({items: []});\n React.useMemo(() => {\n fetchFullList1M(YTApiId.listAccounts, {path: '//sys/accounts', ...USE_CACHE})\n .then((items: Array<string>) => {\n setState({items});\n })\n .catch((error: any) => {\n setState({error});\n });\n }, []);\n\n return (\n <React.Fragment>\n <AccountSuggestImpl {...props} items={items || []} />\n {error && <ErrorBlock error={error} />}\n </React.Fragment>\n );\n}\n\nAccountsSuggestWithLoading.isEmpty = (value: string) => {\n return !value;\n};\n\nAccountsSuggestWithLoading.getDefaultValue = () => {\n return ROOT_ACCOUNT_NAME;\n};\n","import {computeProgress} from '../../utils/progress';\nimport {accountMemoryMediumToFieldName} from '../../utils/accounts/accounts-selector';\n\nexport default class Account {\n static prepareProgressStack(committed, uncommitted, limit, theme) {\n const sum = uncommitted > 0 ? committed + uncommitted : committed;\n const tmpLimit = Math.max(sum, limit);\n const committedValue = computeProgress(\n uncommitted < 0 ? committed + uncommitted : committed,\n tmpLimit,\n );\n const uncommittedValue = computeProgress(Math.abs(uncommitted), tmpLimit);\n\n return [\n {\n value: committedValue,\n theme,\n },\n {\n value: uncommittedValue,\n },\n ];\n }\n\n static GetDataPerMedium(account, mediumType, recursive) {\n if (recursive) {\n const src = account.recursiveResources;\n if (mediumType) {\n return src.perMedium && src.perMedium[mediumType];\n }\n }\n\n return mediumType ? account.perMedium && account.perMedium[mediumType] : account;\n }\n\n constructor(accountData) {\n Object.assign(this, accountData.perMedium, accountData.masterMemoryResources, accountData);\n }\n\n getDiskSpaceProgressInfo(mediumType, recursive) {\n const data = Account.GetDataPerMedium(this, mediumType, recursive);\n if (!data) {\n return {};\n }\n\n return {\n committed: data.committedDiskSpace,\n uncommitted: data.uncommittedDiskSpace,\n total: data.totalDiskSpace,\n limit: data.diskSpaceLimit,\n theme: data.diskSpaceProgressTheme,\n progress: data.diskSpaceProgress,\n progressText: data.diskSpaceProgressText,\n };\n }\n\n getResourceInfoSource(recursive) {\n return recursive && this.hasRecursiveResources ? this.recursiveResources : this;\n }\n\n getNodeCountProgressInfo(recursive = true) {\n const src = this.getResourceInfoSource(recursive);\n return {\n committed: src.committedNodeCount,\n uncommitted: src.uncommittedNodeCount,\n total: src.totalNodeCount,\n limit: src.nodeCountLimit,\n theme: src.nodeCountProgressTheme,\n progress: src.nodeCountProgress,\n progressText: src.nodeCountProgressText,\n };\n }\n\n getChunkCountProgressInfo(recursive = true) {\n const src = this.getResourceInfoSource(recursive);\n return {\n committed: src.committedChunkCount,\n uncommitted: src.uncommittedChunkCount,\n total: src.totalChunkCount,\n limit: src.chunkCountLimit,\n theme: src.chunkCountProgressTheme,\n progress: src.chunkCountProgress,\n progressText: src.chunkCountProgressText,\n };\n }\n\n getTabletCountProgressInfo(recursive = true) {\n const src = this.getResourceInfoSource(recursive);\n return {\n committed: src.committedTabletCount,\n uncommitted: src.uncommittedTabletCount,\n total: src.totalTabletCount,\n limit: src.tabletCountLimit,\n theme: src.tabletCountProgressTheme,\n progress: src.tabletCountProgress,\n progressText: src.tabletCountProgressText,\n };\n }\n\n getTabletStaticMemoryInfo(recursive = true) {\n const src = this.getResourceInfoSource(recursive);\n return {\n committed: src.committedTabletStaticMemory,\n uncommitted: src.uncommittedTabletStaticMemory,\n total: src.totalTabletStaticMemory,\n limit: src.tabletStaticMemoryLimit,\n theme: src.tabletStaticMemoryProgressTheme,\n progress: src.tabletStaticMemoryProgress,\n progressText: src.tabletStaticMemoryProgressText,\n };\n }\n\n getMasterMemoryMediumInfo(recursive, mediumType) {\n const src = this.getResourceInfoSource(recursive);\n const field = accountMemoryMediumToFieldName('master_memory/' + mediumType);\n return src[field];\n }\n}\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport {setAccountAbc} from '../../../../../../utils/accounts/editor';\nimport {\n loadEditedAccount,\n setParentAccountAction,\n} from '../../../../../../store/actions/accounts/accounts';\nimport {getCluster} from '../../../../../../store/selectors/global';\nimport {isDeveloper} from '../../../../../../store/selectors/global/is-developer';\nimport {SuggestParentsForEditableAccount} from '../../../../AccountsSuggest';\n\nimport './../Editor.scss';\nimport UIFactory from '../../../../../../UIFactory';\nimport {RootState} from '../../../../../../store/reducers';\nimport {AccountParsedData} from '../../../../../../utils/accounts/accounts-selector';\n\nconst b = block('accounts-editor');\n\nexport function WithHeader({\n header,\n children,\n}: {\n header: React.ReactNode;\n children: React.ReactNode;\n}) {\n return (\n <div className={b(null, 'elements-section')}>\n <div className={b(null, 'elements-heading_size_s')}>{header}</div>\n {children}\n </div>\n );\n}\n\nWithHeader.propTypes = {\n header: PropTypes.string.isRequired,\n children: PropTypes.object.isRequired,\n};\n\ninterface ParentProps {\n account: AccountParsedData;\n}\n\ntype ReduxProps = ConnectedProps<typeof connector>;\n\ntype Props = ParentProps & ReduxProps;\n\nclass GeneralContent extends React.Component<Props> {\n static propTypes = {\n //from parent\n account: PropTypes.object.isRequired,\n //from connect\n loadEditedAccount: PropTypes.func.isRequired,\n setAccountParent: PropTypes.func.isRequired,\n cluster: PropTypes.string.isRequired,\n isDeveloper: PropTypes.bool,\n };\n\n state = {\n abcId: undefined,\n abcTitle: '',\n // We have to use this property as 'key' of StaffSuggestControl to recreate the component,\n // else it will not clear his internal state.\n responsibleKey: 0,\n };\n\n onParentChange = (parentName = '', {isOutsideClick}: {isOutsideClick?: boolean} = {}) => {\n if (isOutsideClick) {\n this.forceUpdate();\n return;\n }\n\n const {\n account: {name, parent},\n setAccountParent,\n } = this.props;\n if (parent === parentName) {\n return;\n }\n return setAccountParent(name, parentName);\n };\n\n renderParentAccount(value = '') {\n const {isDeveloper} = this.props;\n return (\n <WithHeader header=\"Parent\">\n <SuggestParentsForEditableAccount\n value={value}\n onChange={this.onParentChange}\n disabled={!isDeveloper}\n allowRootAccount={true}\n />\n </WithHeader>\n );\n }\n\n renderAbcServiceId() {\n const {\n account: {\n abc: {id, slug},\n },\n isDeveloper,\n } = this.props;\n\n const control = UIFactory.renderControlAbcService({\n value: {id, slug},\n onChange: this.onAbcServiceChanged,\n placeholder: 'Select ABC service...',\n disabled: !isDeveloper,\n });\n\n return !control ? null : <WithHeader header=\"ABC Service\">{control}</WithHeader>;\n }\n\n onAbcServiceChanged = async (\n service?: AccountParsedData['abc'],\n {isOutsideClick}: {isOutsideClick?: boolean} = {},\n ) => {\n if (isOutsideClick) {\n this.forceUpdate();\n return;\n }\n\n const {id: abcServiceId, slug: value} = service ?? {};\n const {\n account: {name, abc: {slug, id} = {}},\n loadEditedAccount,\n } = this.props;\n if (abcServiceId === id && slug === value) {\n return;\n }\n await setAccountAbc(name, abcServiceId, value);\n loadEditedAccount(name);\n };\n\n render() {\n const {\n account: {parent},\n } = this.props;\n\n return (\n <React.Fragment>\n {this.renderAbcServiceId()}\n {this.renderParentAccount(parent)}\n </React.Fragment>\n );\n }\n}\n\nconst mapStateToProps = (state: RootState) => {\n return {\n cluster: getCluster(state),\n isDeveloper: isDeveloper(state),\n };\n};\n\nconst mapDispatchToProps = {\n loadEditedAccount,\n setAccountParent: setParentAccountAction,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(GeneralContent);\n","import map_ from 'lodash/map';\n\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../../store/reducers';\nimport {ACCOUNTS_DATA_FIELDS_ACTION} from '../../../constants/accounts';\nimport {parseAccountData} from '../../../utils/accounts/accounts-selector';\n\ntype AccountsThunkAction = ThunkAction<any, RootState, any, any>;\n\n/**\n * see persistentState from src/ui/store/reducers/accounts/accounts/index.js\n * TODO: Get rid of this interface when the file is Rewritten with typescript\n */\nexport interface AccountsStateDataFields {\n masterMemoryContentMode?: 'total' | 'detailed' | 'chunk_host' | 'per_cell';\n}\n\nexport function setAccountsStateDataFields(\n data: Partial<AccountsStateDataFields>,\n): AccountsThunkAction {\n return (dispatch) => {\n dispatch({type: ACCOUNTS_DATA_FIELDS_ACTION, data});\n };\n}\n\nexport function parseAccountsData(data: Array<unknown>) {\n return Promise.all(map_(data, (item) => Promise.resolve(parseAccountData(item))));\n}\n","import ypath from '../../../common/thor/ypath';\n\nimport filter_ from 'lodash/filter';\nimport map_ from 'lodash/map';\n\nimport {NAMESPACES, SettingName} from '../../../../shared/constants/settings';\n\nimport {setSetting} from '../../../store/actions/settings';\nimport {accountsTrackVisit} from '../../../store/actions/favourites';\nimport {setAccountParent} from '../../../utils/accounts/editor';\nimport {\n ACCOUNTS_TABLE_ID,\n CHANGE_CONTENT_MODE_FILTER,\n CHANGE_MEDIUM_TYPE_FILTER,\n CHANGE_NAME_FILTER,\n CLOSE_EDITOR_MODAL,\n FETCH_ACCOUNTS_NODES,\n FETCH_ACCOUNTS_RESOURCE,\n FETCH_ACCOUNTS_TOTAL_USAGE,\n FETCH_ACCOUNTS_USABLE,\n FILTER_USABLE_ACCOUNTS,\n OPEN_EDITOR_MODAL,\n ROOT_ACCOUNT_NAME,\n SET_ACCOUNTS_TREE_STATE,\n SET_ACTIVE_ACCOUNT,\n UPDATE_EDITABLE_ACCOUNT,\n} from '../../../constants/accounts/accounts';\nimport {ACCOUNTS_DATA_FIELDS_ACTION} from '../../../constants/accounts';\nimport {USE_CACHE, USE_MAX_SIZE} from '../../../../shared/constants/yt-api';\nimport {getCluster, getCurrentUserName} from '../../../store/selectors/global';\nimport {\n getAccountsDisabledCacheForNextFetch,\n getAccountsEditCounter,\n} from '../../../store/selectors/accounts/accounts-ts';\nimport {RumWrapper, YTApiId, ytApiV3Id} from '../../../rum/rum-wrap-api';\nimport {parseAccountsData} from './accounts-ts';\nimport Account from '../../../pages/accounts/selector';\nimport {RumMeasureTypes} from '../../../rum/rum-measure-types';\n\nconst attributesToLoad = [\n 'abc',\n 'diskSpaceLimit',\n 'parent_name',\n 'responsibles',\n 'totalDiskSpace',\n 'resource_limits',\n 'resource_usage',\n 'committed_resource_usage',\n 'recursive_resource_usage',\n 'recursive_committed_resource_usage',\n 'recursive_violated_resource_limits',\n 'allow_children_limit_overcommit',\n 'total_children_resource_limits',\n 'folder_id',\n];\n\nexport function fetchAccounts() {\n return (dispatch, getState) => {\n dispatch({\n type: FETCH_ACCOUNTS_RESOURCE.REQUEST,\n });\n\n const state = getState();\n const cluster = getCluster(state);\n const userName = getCurrentUserName(state);\n const disableCacheForNextFetch = getAccountsDisabledCacheForNextFetch(state);\n\n const cacheParams = disableCacheForNextFetch ? {} : USE_CACHE;\n\n const requests = [\n {\n command: 'list',\n parameters: {\n path: '//sys/accounts/',\n attributes: attributesToLoad,\n ...USE_MAX_SIZE,\n ...cacheParams,\n },\n },\n {\n command: 'get',\n parameters: {\n path: '//sys/accounts/@',\n attributes: ['total_resource_limits', 'total_resource_usage'],\n },\n },\n {\n command: 'get',\n parameters: {\n path: '//sys/cluster_nodes/@',\n attributes: [\n 'available_space_per_medium',\n 'io_statistics_per_medium',\n 'used_space_per_medium',\n ],\n },\n },\n {\n command: 'get',\n parameters: {\n path: '//sys/users/' + userName + '/@usable_accounts',\n },\n },\n ];\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.ACCOUNTS);\n return rumId\n .fetch(YTApiId.accountsData, ytApiV3Id.executeBatch(YTApiId.accountsData, {requests}))\n .then((batchData) => {\n dispatch({\n type: ACCOUNTS_DATA_FIELDS_ACTION,\n data: {disableCacheForNextFetch: false},\n });\n\n const [\n {error: accountsError, output: accounts},\n {error: resourceError, output: resources},\n {error: nodesError, output: nodes},\n {error: usableAccountsError, output: usableAccounts},\n ] = batchData;\n Promise.resolve(accountsError)\n .then((e) => {\n if (e) {\n throw e;\n }\n const items = filter_(\n ypath.getValue(accounts),\n (item) => ypath.getValue(item) !== ROOT_ACCOUNT_NAME,\n );\n return rumId\n .parse(YTApiId.accountsData, parseAccountsData(items))\n .then((res) => {\n dispatch({\n type: FETCH_ACCOUNTS_RESOURCE.SUCCESS,\n data: {\n accounts: map_(res, (item) => new Account(item)),\n },\n });\n });\n })\n .catch((error) => {\n dispatch({\n type: FETCH_ACCOUNTS_RESOURCE.FAILURE,\n data: {error},\n });\n });\n\n if (!resourceError) {\n dispatch({\n type: FETCH_ACCOUNTS_TOTAL_USAGE.SUCCESS,\n data: resources,\n });\n } else {\n dispatch({\n type: FETCH_ACCOUNTS_TOTAL_USAGE.FAILURE,\n data: {error: resourceError},\n });\n }\n\n if (!nodesError) {\n dispatch({\n type: FETCH_ACCOUNTS_NODES.SUCCESS,\n data: nodes,\n });\n } else {\n dispatch({\n type: FETCH_ACCOUNTS_NODES.FAILURE,\n data: {error: nodesError},\n });\n }\n\n if (!usableAccountsError) {\n dispatch({\n type: FETCH_ACCOUNTS_USABLE.SUCCESS,\n data: usableAccounts,\n });\n } else {\n dispatch({\n type: FETCH_ACCOUNTS_USABLE.FAILURE,\n data: {error: usableAccountsError},\n });\n }\n });\n };\n}\n\nexport function accountsIncreaseEditCounter() {\n return (dispatch, getState) => {\n const editCounter = getAccountsEditCounter(getState());\n return {\n type: ACCOUNTS_DATA_FIELDS_ACTION,\n data: {editCounter: editCounter + 1, disableCacheForNextFetch: true},\n };\n };\n}\n\nexport function loadEditedAccount(accountName) {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getCluster(state);\n dispatch({\n type: UPDATE_EDITABLE_ACCOUNT.REQUEST,\n });\n\n const rumId = new RumWrapper(cluster, RumMeasureTypes.ACCOUNTS);\n return rumId\n .fetch(\n YTApiId.accountsEditData,\n ytApiV3Id.get(YTApiId.accountsEditData, {\n path: '//sys/accounts/' + accountName + '/@',\n attributes: attributesToLoad,\n }),\n )\n .then((data) =>\n rumId.parse(\n YTApiId.accountsEditData,\n parseAccountsData([{$value: accountName, $attributes: data}]),\n ),\n )\n .then(([item]) => {\n dispatch({\n type: UPDATE_EDITABLE_ACCOUNT.SUCCESS,\n data: {\n account: new Account(item),\n cluster,\n },\n });\n })\n .catch(() => {\n dispatch({\n type: UPDATE_EDITABLE_ACCOUNT.FAILURE,\n });\n });\n };\n}\n\nexport function changeNameFilter(newFilter) {\n return (dispatch, getState) => {\n const {tables} = getState();\n const sortState = tables[ACCOUNTS_TABLE_ID];\n\n dispatch({\n type: CHANGE_NAME_FILTER,\n data: {newFilter, sortState},\n });\n };\n}\n\nexport function showEditorModal(account) {\n return {\n type: OPEN_EDITOR_MODAL,\n data: {account},\n };\n}\n\nexport function setActiveAccount(account) {\n return (dispatch) => {\n if (account) {\n dispatch(accountsTrackVisit(account));\n }\n return dispatch({\n type: SET_ACTIVE_ACCOUNT,\n data: {account},\n });\n };\n}\n\nexport function closeEditorModal() {\n return (dispatch) => {\n dispatch({\n type: CLOSE_EDITOR_MODAL,\n });\n return dispatch(fetchAccounts());\n };\n}\n\nexport function changeContentFilter(newFilter) {\n return {\n type: CHANGE_CONTENT_MODE_FILTER,\n data: {newFilter},\n };\n}\n\nexport function changeMediumFilter(newFilter) {\n return {\n type: CHANGE_MEDIUM_TYPE_FILTER,\n data: {newFilter},\n };\n}\n\nexport function filterUsableAccounts() {\n return (dispatch, getState) => {\n const {tables} = getState();\n const sortState = tables[ACCOUNTS_TABLE_ID];\n\n dispatch({\n type: FILTER_USABLE_ACCOUNTS,\n data: {sortState},\n });\n };\n}\n\nexport function setAccountsTreeState(treeState) {\n return {\n type: SET_ACCOUNTS_TREE_STATE,\n data: {treeState},\n };\n}\n\nexport function setParentAccountAction(name, parentName) {\n return async (dispatch) => {\n await setAccountParent(name, parentName);\n dispatch(fetchAccounts());\n await dispatch(loadEditedAccount(name));\n };\n}\n\nexport function setAccountsVisibilityModeOfDashboard(value) {\n return (dispatch) => {\n return dispatch(\n setSetting(SettingName.ACCOUNTS.DASHBOARD_VISIBILITY_MODE, NAMESPACES.ACCOUNTS, value),\n );\n };\n}\n\nexport function setAccountsVisibilityMode(value) {\n return (dispatch) => {\n return dispatch(\n setSetting(SettingName.ACCOUNTS.ACCOUNTS_VISIBILITY_MODE, NAMESPACES.ACCOUNTS, value),\n );\n };\n}\n\nexport function setAccountsAbcServiceFilter(id, slug) {\n return (dispatch) => {\n dispatch({\n type: ACCOUNTS_DATA_FIELDS_ACTION,\n data: {abcServiceFilter: {slug}},\n });\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 '../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 reduce_ from 'lodash/reduce';\n\nimport yt from '@ytsaurus/javascript-wrapper/lib/yt';\n\nimport {EDITOR_TABS} from '../../constants/accounts/editor';\nimport hammer from '../../common/hammer';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {IdmObjectType} from '../../constants/acl';\nimport {showErrorPopup} from '../../utils/utils';\nimport {updateAcl} from '../../utils/acl/acl-api';\n\nconst basePath = '//sys/accounts/';\n\nconst toaster = new Toaster();\n\nconst ERRRO_TOASTER_TIMEOUT = 10000;\nconst SUCCESS_TOASTER_TIMEOUT = 5000;\n\nexport function setResponsibleUsers(cluster, users, accountName) {\n const path = accountName;\n\n return updateAcl(cluster, path, {\n idmKind: IdmObjectType.ACCOUNT,\n responsible: users,\n });\n}\n\nexport function setAccountLimit(input, accountName, resourcePath) {\n const path = basePath + accountName + resourcePath;\n return yt.v3.set({path}, input);\n}\n\nexport function createAccountFromInfo(cluster, newAccountInfo) {\n return () => {\n const {abcService, account, parentAccount, responsibles, createHome} = newAccountInfo;\n\n return createAccount(account, parentAccount).then(() => {\n const {id, slug} = abcService || {};\n\n return Promise.all([\n setAccountAbc(account, id, slug).catch(() => {}),\n createHome ? createAccountHome(account).catch(() => {}) : Promise.resolve(),\n setResponsibleUsers(cluster, responsibles, account).catch(() => {}),\n ]);\n });\n };\n}\n\nfunction createAccount(accountName, parentName) {\n return yt.v3\n .create({\n type: 'account',\n attributes: {\n name: accountName,\n parent_name: parentName,\n },\n })\n .then((d) => {\n toaster.add({\n name: 'create account',\n timeout: SUCCESS_TOASTER_TIMEOUT,\n theme: 'success',\n title: `${accountName} successfully created`,\n });\n return d;\n })\n .catch((err) => {\n toaster.add({\n name: 'create account',\n timeout: ERRRO_TOASTER_TIMEOUT,\n theme: 'danger',\n title: `Failed to create account ${accountName}`,\n content: err.message,\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n return Promise.reject(err);\n });\n}\n\nexport function setAccountParent(accountName, parentName) {\n return yt.v3\n .set({path: basePath + accountName + '/@parent_name'}, parentName)\n .then((d) => {\n toaster.add({\n name: 'set parent for account',\n timeout: SUCCESS_TOASTER_TIMEOUT,\n theme: 'success',\n title: `${accountName}'s Parent updated successfully`,\n });\n return d;\n })\n .catch((err) => {\n toaster.add({\n name: 'set parent for account',\n timeout: ERRRO_TOASTER_TIMEOUT,\n theme: 'danger',\n title: `Failed to set Parent for ${accountName}`,\n content: err.message,\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n return Promise.reject(err);\n });\n}\n\nexport function setAccountAbc(accountName, abcId, abcSlug) {\n if (!abcId || !abcSlug) {\n return Promise.resolve();\n }\n return yt.v3\n .set({path: basePath + accountName + '/@abc'}, {id: abcId, slug: abcSlug})\n .then((d) => {\n toaster.add({\n name: 'account abc service',\n timeout: SUCCESS_TOASTER_TIMEOUT,\n theme: 'success',\n title: `${accountName}'s ABC Service updated successfully`,\n });\n return d;\n })\n .catch((err) => {\n toaster.add({\n name: 'account abc service',\n timeout: ERRRO_TOASTER_TIMEOUT,\n theme: 'danger',\n title: `Failed to set ABC for ${accountName}`,\n content: err.message,\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n return Promise.reject(err);\n });\n}\n\nexport function createAccountHome(accountName) {\n return yt.v3\n .set(\n {\n path: `//sys/accounts/${accountName}/@resource_limits/node_count`,\n },\n 1,\n )\n .then(() => {\n return yt.v3\n .create({\n type: 'map_node',\n path: '//home/' + accountName,\n attributes: {\n account: accountName,\n },\n })\n .then((d) => {\n toaster.add({\n name: 'account create home',\n timeout: SUCCESS_TOASTER_TIMEOUT,\n theme: 'success',\n title: `${accountName}'s home directory created successfully`,\n });\n return d;\n });\n })\n .catch((err) => {\n toaster.add({\n name: 'account create home',\n timeout: ERRRO_TOASTER_TIMEOUT,\n theme: 'danger',\n title: `Failed to create home for ${accountName}`,\n content: err.message,\n actions: [{label: ' view', onClick: () => showErrorPopup(err)}],\n });\n return Promise.reject(err);\n });\n}\n\nexport function deleteAccount(accountName) {\n return yt.v3.remove({\n path: '//sys/accounts/' + accountName,\n });\n}\n\nexport function parseNumber(input) {\n const result = input.trim();\n\n return Math.floor(Number(result));\n}\n\nexport const contentTabs = reduce_(\n EDITOR_TABS,\n (acc, value) => {\n acc.push({\n value,\n text: hammer.format['ReadableField'](value),\n show: true,\n });\n return acc;\n },\n [],\n);\n"],"names":["AttributesButton","_ref","_ref$view","view","_ref$size","size","rest","_objectWithoutProperties","_excluded","_jsx","Button","_objectSpread","children","Icon","awesome","block","cn","parseValue","rawValue","format","skipSpaces","replace","parseBytes","Number","formatValue","value","settings","undefined","res","hammer","NO_VALUE","toRawValue","NumberInputWithError","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","state","parsedValue","NaN","onChange","error","errorFromValue","props","formattedValue","setState","parsedError","onBlur","focused","onFocus","onKeyDown","e","keyCode","KeyCode","ENTER","onEnterKeyDown","_createClass","key","this","parseFn","_this$props","decimalPlaces","formatFn","digits","_this$props2","min","max","validator","defaultValue","_this$props3","showHint","showMin","isNaN","showMax","_jsxs","className","Tooltip","content","String","placement","_Fragment","_this$props4","hidePrettyValue","_this$props5","defaultValueClassName","TextInput","disabled","pin","bottomLineVisibility","_this$props6","propsValue","showDefaultValue","_this$state","getRestProps","hasClear","err","text","autoComplete","onUpdate","renderDefaultValue","isBottomLineVisible","React","renderPrettyValue","renderMinMaxHint","preciseInitialRawValue","formatted","v","_props$validator","integerOnly","_ref2","defaultProps","NumberInput","_React$Component2","_super2","_this2","_len2","_key2","_this$props7","_excluded2","QuotaEditor","_this$props$onEnterKe","onBytesChange","sourceAccount","limit","source","checkForError","onAccountChange","sourceSuggestTitle","renderSourceSuggest","limitInputTitle","sourceSuggestDisabled","getFreeFormatted","getLimit","getMinLimit","getMaxLimit","qa","prevLimit","info","calcLimitTotal","total","allowChildrenOverCommit","_info$totalChildrenLi","totalChildrenLimit","free","Math","maxValue","_this$props$prevLimit","itemLimit","_this$props$limit","itemNewLimit","getFreeImpl","account","getInfoByName","currentAccount","_getInfoByName","getFree","newLimit","srcAccount","maxLimit","QuotaEditorWithHide","onYes","_this$calcLimitTotal$","oldLimit","onSave","getDistributeAccount","showConfirm","onHide","onCancel","parentOfCurrentAccount","accountChanged","isReadyToSave","renderConfirmation","renderEditor","renderLimit","onClick","filter","Boolean","join","ClickableText","color","face","renderControl","save","ROOT_ACCOUNT_NAME","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","order","allowUnordered","withUndefined","nextSortOrderValue","label","hidden","icon","ReadableField","b","Suggest","PropTypes","counter","_Component","input","isClearClicked","isUnmounting","skipApplyForNextBlur","onTextUpdate","clear","loadSuggestions","showSuggestions","items","_this$props$onOpenCha","popupVisible","selectedIndex","onOpenChange","open","defaultText","prevItems","bind","_assertThisInitialized","hideSuggestions","clearSuggestions","_this$props$onFocus","_this$props$onBlur","_this$state$text","applySuggestion","evt","preventDefault","selectNextSuggestion","selectPrevSuggestion","applyOrClearSuggestion","_this$input$current","current","blur","_this$props$onOpenCha2","Promise","resolve","then","_this$input$current2","_this$input$current3","itemIndex","item","getItemIndex","getItemValue","onItemClick","_this$state2","prevIndex","getSelectedIndex","_this$state3","nextIndex","placeholder","autoFocus","controlRef","renderCounter","index","itemClassName","selected","_this$props8","template","renderItem","renderer","templates","get","__default__","renderSimpleItem","title","onMouseDown","offsetWidth","maxItems","isNumber_","slice","isObject_","totalAmount","groupPredicate","_partition_","partition_","_partition_2","_slicedToArray","positiveGroup","negativeGroup","positiveGroupMaxItems","round","_this3","listClassName","showNoItemsMsg","style","minWidth","getInputWidth","ReactList","itemRenderer","type","_this$props9","popupClassName","popupPlacement","restrictItems","Popup","anchorRef","onClose","renderSuggestions","renderInput","renderPopup","prevState","Component","disable","zIndexGroupLevel","Secondary","Bold","SecondaryBold","_ref3","Warning","_ref4","WarningLight","_ref5","NoWrap","_ref6","Escaped","_ref7","textNode","unipika","prettyprint","UNIPIKA_ESCAPED_SETTINGS","asHTML","dangerouslySetInnerHTML","__html","genAccountsUrl","cluster","Page","ACCOUNTS","AccountsTab","GENERAL","AccountLink","propsCluster","inline","currentCluster","useSelector","getCluster","ellipsis","ClipboardButton","Link","theme","routed","url","ROOT_ACCOUNT_TITLE","AccountSuggestImpl","allowRootAccount","_props$validate","validate","touched","options","map_","splice","empty","SelectSingle","width","hideClear","isEmpty","getDefaultValue","hasErrorRenderer","connect","getAccountNames","ASConnector","SuggestParentsForEditableAccount","getEditableAccountParentSuggests","AccountsSuggestWithLoading","_React$useState","_React$useState2","_React$useState2$","fetchFullList1M","YTApiId","listAccounts","path","USE_CACHE","ErrorBlock","Account","accountData","Object","assign","perMedium","masterMemoryResources","mediumType","recursive","data","GetDataPerMedium","committed","committedDiskSpace","uncommitted","uncommittedDiskSpace","totalDiskSpace","diskSpaceLimit","diskSpaceProgressTheme","progress","diskSpaceProgress","progressText","diskSpaceProgressText","hasRecursiveResources","recursiveResources","src","getResourceInfoSource","committedNodeCount","uncommittedNodeCount","totalNodeCount","nodeCountLimit","nodeCountProgressTheme","nodeCountProgress","nodeCountProgressText","committedChunkCount","uncommittedChunkCount","totalChunkCount","chunkCountLimit","chunkCountProgressTheme","chunkCountProgress","chunkCountProgressText","committedTabletCount","uncommittedTabletCount","totalTabletCount","tabletCountLimit","tabletCountProgressTheme","tabletCountProgress","tabletCountProgressText","committedTabletStaticMemory","uncommittedTabletStaticMemory","totalTabletStaticMemory","tabletStaticMemoryLimit","tabletStaticMemoryProgressTheme","tabletStaticMemoryProgress","tabletStaticMemoryProgressText","accountMemoryMediumToFieldName","sum","tmpLimit","computeProgress","abs","WithHeader","header","GeneralContent","abcId","abcTitle","responsibleKey","onParentChange","parentName","isOutsideClick","forceUpdate","_this$props$account","name","parent","setAccountParent","onAbcServiceChanged","_asyncToGenerator","_regeneratorRuntime","_callee","service","abcServiceId","_this$props2$account","_this$props2$account$","_this$props2$account$2","slug","id","loadEditedAccount","_args","_context","prev","next","abrupt","abc","setAccountAbc","stop","_x","isDeveloper","_this$props3$account$","control","UIFactory","renderControlAbcService","renderAbcServiceId","renderParentAccount","mapDispatchToProps","setParentAccountAction","setAccountsStateDataFields","dispatch","ACCOUNTS_DATA_FIELDS_ACTION","parseAccountsData","all","parseAccountData","attributesToLoad","fetchAccounts","getState","FETCH_ACCOUNTS_RESOURCE","REQUEST","userName","getCurrentUserName","cacheParams","getAccountsDisabledCacheForNextFetch","requests","command","parameters","attributes","USE_MAX_SIZE","rumId","RumWrapper","RumMeasureTypes","fetch","accountsData","ytApiV3Id","executeBatch","batchData","disableCacheForNextFetch","_batchData","_batchData$","accountsError","accounts","output","_batchData$2","resourceError","resources","_batchData$3","nodesError","nodes","_batchData$4","usableAccountsError","usableAccounts","filter_","ypath","getValue","parse","SUCCESS","FAILURE","FETCH_ACCOUNTS_TOTAL_USAGE","FETCH_ACCOUNTS_NODES","FETCH_ACCOUNTS_USABLE","accountsIncreaseEditCounter","editCounter","getAccountsEditCounter","accountName","UPDATE_EDITABLE_ACCOUNT","accountsEditData","$value","$attributes","changeNameFilter","newFilter","sortState","tables","ACCOUNTS_TABLE_ID","CHANGE_NAME_FILTER","showEditorModal","OPEN_EDITOR_MODAL","setActiveAccount","accountsTrackVisit","SET_ACTIVE_ACCOUNT","closeEditorModal","CLOSE_EDITOR_MODAL","changeContentFilter","CHANGE_CONTENT_MODE_FILTER","changeMediumFilter","CHANGE_MEDIUM_TYPE_FILTER","filterUsableAccounts","FILTER_USABLE_ACCOUNTS","setAccountsTreeState","treeState","SET_ACCOUNTS_TREE_STATE","setAccountsVisibilityModeOfDashboard","setSetting","SettingName","DASHBOARD_VISIBILITY_MODE","NAMESPACES","setAccountsVisibilityMode","ACCOUNTS_VISIBILITY_MODE","setAccountsAbcServiceFilter","abcServiceFilter","getChaosIsLoaded","chaos_cell_bundles","loaded","getChaosIsLoading","loading","getChaosBundlesSortState","bundlesSort","getChaosBundlesNameFilter","bundlesNameFilter","getChaosBundlesAccountFilter","bundlesAccountFilter","getChaosBundlesTagNodeFilter","bundlesTagNodeFilter","getChaosBundles","bundles","getChaosActiveBundle","activeBundle","getChaosBundlesTableMode","bundlesTableMode","getChaosActiveBundleData","createSelector","find_","bundle","getChaosBundlesTotal","aggregateTotal","COLUMNS_SORTABLE_AS_IS","Set","getChaosBundlesFiltered","nameFilter","accountFilter","tagNodeFilter","predicates","lowerNameFilter","toLowerCase","push","indexOf","lowerAccountFilter","changelog_account","snapshot_account","lowerTagNodeFilter","node_tag_filter","concatByAnd","getChaosBundlesSorted","column","sortTableBundles","columnsSortable","getChaosCells","cells","getChaosCellsSortState","cellsSort","getChaosCellsIdFilter","cellsIdFilter","getChaosCellsBundleFilter","cellsBundleFilter","getChaosCellsHostFilter","cellsHostFilter","getChaosCellsOfActiveAccount","getChaosCellsFiltered","idFilter","bundleFilter","hostFilter","peerAddress","filterChaosCellsByBundle","getChaosCellsSorted","sortArrayBySortState","getChaosCellsBundles","uniq_","sort","getChaosCellsHosts","getChaosCellsHostsOfActiveBundle","prepareHostsFromCells","prepareHost","getChaosBreadcrumbItems","href","tabletChaosBundleRootLink","tabletActiveChaosBundleLink","getChytListData","chyt","list","getChytListAvailableCreators","_data$items","map","creator","getChytListAvailableHealths","_data$items2","compact_","health","getChytListAvailableStates","_data$items3","getChytCurrentAlias","clique","currentClique","getChytListFilterAlias","listFilters","getChytListFilterHealth","getChytListFilterCreator","getChytListFilterState","CHYT_LIST_SELECTABLE_COLUMNS","instance_count","total_cpu","total_memory","creation_time","stage","yt_operation_start_time","yt_operation_finish_time","speclet_modification_time","strawberry_state_modification_time","pool","getChytListVisibleColumns","_getSettingsData$glob","getSettingsData","columns","userColumns","k","has","getChytListColumns","checked","keys","forEach","getChytListTableSortState","getChytListTableSortStateByName","reduce","acc","multisortIndex","getChytFilterPredicate","alias","_toConsumableArray","getChytListTableItems","predicate","_data$items4","filteredItems","multiSortBySortStateArray","getFavouriteAccounts","makeGetSetting","getAccountsNS","prepareFavourites","getLastVisitedAccounts","prepareLastVisited","getPopularAccounts","preparePopulars","isActiveAcountInFavourites","getActiveAccount","prepareIsInFavourites","getFavouriteChyt","getChytNS","getLastVisitedChyt","isActiveCliqueInFavourites","getFavouritePaths","getClusterNS","getLastVisitedPaths","getPopularPaths","isCurrentPathInFavourites","getPath","getFavouritePools","getSchedulingNS","isActivePoolInFavourites","getPool","getTree","tree","favourites","getFavouriteBundles","getBundlesNS","isActiveBundleInFavourites","getTabletsActiveBundle","getFavouriteChaosBundles","getChaosBundlesNS","isActiveChaosBundleInFavourites","getSetting","parentNS","LOCAL","FAVOURITES","sortBy_","settingGetter","LAST_VISITED","lastVisited","entry","count","basePath","toaster","Toaster","ERRRO_TOASTER_TIMEOUT","SUCCESS_TOASTER_TIMEOUT","setResponsibleUsers","users","updateAcl","idmKind","IdmObjectType","ACCOUNT","responsible","setAccountLimit","resourcePath","yt","set","createAccountFromInfo","newAccountInfo","abcService","parentAccount","responsibles","createHome","create","parent_name","d","add","timeout","message","actions","showErrorPopup","reject","createAccountHome","abcSlug","deleteAccount","remove","contentTabs","reduce_","EDITOR_TABS","show"],"sourceRoot":""}