@ytsaurus/ui 1.83.0 → 1.84.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +61 -61
- package/dist/public/build/css/{2209.ee64dbab.chunk.css → 2209.b618d964.chunk.css} +2 -2
- package/dist/public/build/css/2209.b618d964.chunk.css.map +1 -0
- package/dist/public/build/css/components.6375c10d.chunk.css +2 -0
- package/dist/public/build/css/components.6375c10d.chunk.css.map +1 -0
- package/dist/public/build/css/{navigation.d170ba80.chunk.css → navigation.b6f988cd.chunk.css} +2 -2
- package/dist/public/build/css/navigation.b6f988cd.chunk.css.map +1 -0
- package/dist/public/build/css/{query-tracker.94d91868.chunk.css → query-tracker.7c9d0851.chunk.css} +2 -2
- package/dist/public/build/css/{query-tracker.94d91868.chunk.css.map → query-tracker.7c9d0851.chunk.css.map} +1 -1
- package/dist/public/build/js/{1604.72f6d465.chunk.js → 1604.7b5c7976.chunk.js} +3 -3
- package/dist/public/build/js/1604.7b5c7976.chunk.js.map +1 -0
- package/dist/public/build/js/{1983.e3e6d5e8.chunk.js → 1983.034a4de9.chunk.js} +2 -2
- package/dist/public/build/js/1983.034a4de9.chunk.js.map +1 -0
- package/dist/public/build/js/{3724.f72a2691.chunk.js → 3724.1674ced1.chunk.js} +2 -2
- package/dist/public/build/js/3724.1674ced1.chunk.js.map +1 -0
- package/dist/public/build/js/3751.147f6dd9.chunk.js +2 -0
- package/dist/public/build/js/3751.147f6dd9.chunk.js.map +1 -0
- package/dist/public/build/js/4319.3407fde8.chunk.js +3 -0
- package/dist/public/build/js/4319.3407fde8.chunk.js.map +1 -0
- package/dist/public/build/js/5088.bee0a42a.chunk.js +2 -0
- package/dist/public/build/js/5088.bee0a42a.chunk.js.map +1 -0
- package/dist/public/build/js/{5653.45eec4e2.chunk.js → 5653.cff8909f.chunk.js} +2 -2
- package/dist/public/build/js/5653.cff8909f.chunk.js.map +1 -0
- package/dist/public/build/js/{acl.614f12c4.chunk.js → acl.f6256b52.chunk.js} +2 -2
- package/dist/public/build/js/{acl.614f12c4.chunk.js.map → acl.f6256b52.chunk.js.map} +1 -1
- package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js → app-navigation.e7dd869b.chunk.js} +2 -2
- package/dist/public/build/js/{app-navigation.7629fe5d.chunk.js.map → app-navigation.e7dd869b.chunk.js.map} +1 -1
- package/dist/public/build/js/cluster-menu.68f5e677.chunk.js +2 -0
- package/dist/public/build/js/{cluster-menu.381d4a48.chunk.js.map → cluster-menu.68f5e677.chunk.js.map} +1 -1
- package/dist/public/build/js/cluster-page-wrapper.e42322f0.chunk.js +2 -0
- package/dist/public/build/js/{cluster-page-wrapper.b70c30d4.chunk.js.map → cluster-page-wrapper.e42322f0.chunk.js.map} +1 -1
- package/dist/public/build/js/components.1ea8e03b.chunk.js +2 -0
- package/dist/public/build/js/components.1ea8e03b.chunk.js.map +1 -0
- package/dist/public/build/js/{dashboard.a63eef8c.chunk.js → dashboard.303faf7e.chunk.js} +2 -2
- package/dist/public/build/js/{dashboard.a63eef8c.chunk.js.map → dashboard.303faf7e.chunk.js.map} +1 -1
- package/dist/public/build/js/default-subject-link.f30c100a.chunk.js +2 -0
- package/dist/public/build/js/default-subject-link.f30c100a.chunk.js.map +1 -0
- package/dist/public/build/js/job.47f7b4c0.chunk.js +2 -0
- package/dist/public/build/js/job.47f7b4c0.chunk.js.map +1 -0
- package/dist/public/build/js/main.4f383c25.js +3 -0
- package/dist/public/build/js/main.4f383c25.js.map +1 -0
- package/dist/public/build/js/navigation.5512d9c6.chunk.js +2 -0
- package/dist/public/build/js/navigation.5512d9c6.chunk.js.map +1 -0
- package/dist/public/build/js/odin.96cec50a.chunk.js +2 -0
- package/dist/public/build/js/odin.96cec50a.chunk.js.map +1 -0
- package/dist/public/build/js/{operations.3535a692.chunk.js → operations.1a486c6e.chunk.js} +2 -2
- package/dist/public/build/js/operations.1a486c6e.chunk.js.map +1 -0
- package/dist/public/build/js/{query-tracker.d266354f.chunk.js → query-tracker.028a8ccf.chunk.js} +2 -2
- package/dist/public/build/js/query-tracker.028a8ccf.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.948c8e30.js → runtime.ad8a9439.js} +2 -2
- package/dist/public/build/js/{runtime.948c8e30.js.map → runtime.ad8a9439.js.map} +1 -1
- package/dist/public/build/js/{tablet.4e3852cc.chunk.js → tablet.68f185b6.chunk.js} +2 -2
- package/dist/public/build/js/{tablet.4e3852cc.chunk.js.map → tablet.68f185b6.chunk.js.map} +1 -1
- package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js → yt-df-dialog.bbf72b55.chunk.js} +2 -2
- package/dist/public/build/js/{yt-df-dialog.63cfd34a.chunk.js.map → yt-df-dialog.bbf72b55.chunk.js.map} +1 -1
- package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js +2 -0
- package/dist/public/build/js/yt-monaco-editor.72350aca.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +56 -56
- package/package.json +2 -2
- package/dist/public/build/css/2209.ee64dbab.chunk.css.map +0 -1
- package/dist/public/build/css/components.fd2fa23a.chunk.css +0 -2
- package/dist/public/build/css/components.fd2fa23a.chunk.css.map +0 -1
- package/dist/public/build/css/navigation.d170ba80.chunk.css.map +0 -1
- package/dist/public/build/js/1604.72f6d465.chunk.js.map +0 -1
- package/dist/public/build/js/1983.e3e6d5e8.chunk.js.map +0 -1
- package/dist/public/build/js/3724.f72a2691.chunk.js.map +0 -1
- package/dist/public/build/js/3745.aa320ee5.chunk.js +0 -2
- package/dist/public/build/js/3745.aa320ee5.chunk.js.map +0 -1
- package/dist/public/build/js/4319.20f80209.chunk.js +0 -3
- package/dist/public/build/js/4319.20f80209.chunk.js.map +0 -1
- package/dist/public/build/js/5088.91897d9a.chunk.js +0 -2
- package/dist/public/build/js/5088.91897d9a.chunk.js.map +0 -1
- package/dist/public/build/js/5653.45eec4e2.chunk.js.map +0 -1
- package/dist/public/build/js/cluster-menu.381d4a48.chunk.js +0 -2
- package/dist/public/build/js/cluster-page-wrapper.b70c30d4.chunk.js +0 -2
- package/dist/public/build/js/components.4b381a1a.chunk.js +0 -2
- package/dist/public/build/js/components.4b381a1a.chunk.js.map +0 -1
- package/dist/public/build/js/default-subject-link.17448a19.chunk.js +0 -2
- package/dist/public/build/js/default-subject-link.17448a19.chunk.js.map +0 -1
- package/dist/public/build/js/job.c5cdc8c6.chunk.js +0 -2
- package/dist/public/build/js/job.c5cdc8c6.chunk.js.map +0 -1
- package/dist/public/build/js/main.03147e02.js +0 -3
- package/dist/public/build/js/main.03147e02.js.map +0 -1
- package/dist/public/build/js/navigation.1f7a0ea4.chunk.js +0 -2
- package/dist/public/build/js/navigation.1f7a0ea4.chunk.js.map +0 -1
- package/dist/public/build/js/odin.45cc399f.chunk.js +0 -2
- package/dist/public/build/js/odin.45cc399f.chunk.js.map +0 -1
- package/dist/public/build/js/operations.3535a692.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.d266354f.chunk.js.map +0 -1
- package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js +0 -2
- package/dist/public/build/js/yt-monaco-editor.ba383e90.chunk.js.map +0 -1
- /package/dist/public/build/js/{1604.72f6d465.chunk.js.LICENSE.txt → 1604.7b5c7976.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{4319.20f80209.chunk.js.LICENSE.txt → 4319.3407fde8.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.03147e02.js.LICENSE.txt → main.4f383c25.js.LICENSE.txt} +0 -0
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[8261],{38226:(e,t,n)=>{n.d(t,{A:()=>A});var r,s=n(29121),i=n(12937),a=n(10785),o=n(26718),l=n(68175),c=n(77810),u=n(76872),d=n(64772),m=n(60620),h=n(34380),f=n(44458),v=n(64922),p=(0,u.A)("sort-icon"),g=(r={},(0,l.A)(r,"","sort"),(0,l.A)(r,"asc","sort-up"),(0,l.A)(r,"desc","sort-down"),(0,l.A)(r,"asc-undefined","arrow-to-bottom"),(0,l.A)(r,"desc-undefined","arrow-from-bottom"),(0,l.A)(r,"undefined-asc","arrow-from-top"),(0,l.A)(r,"undefined-desc","arrow-to-top"),r),A=function(e){(0,a.A)(n,e);var t=(0,o.A)(n);function n(){var e;(0,s.A)(this,n);for(var r=arguments.length,i=new Array(r),a=0;a<r;a++)i[a]=arguments[a];return(e=t.call.apply(t,[this].concat(i))).onClick=function(){var t=e.props,n=t.order,r=t.onChange,s=t.allowUnordered,i=t.withUndefined;r&&r((0,f.$N)(n,s,i))},e}return(0,i.A)(n,[{key:"render",value:function(){var e=this.props,t=e.className,n=e.label,r=e.order,s=e.hidden,i=g[r||""];return(0,v.jsxs)("span",{className:p({hidden:s},t),onClick:this.onClick,children:[n&&(0,v.jsx)("span",{className:p("label"),children:n}),(0,v.jsx)(h.m,{className:p("icon"),content:r?d.A.ReadableField(r):"Unordered",children:(0,v.jsx)(m.A,{awesome:i,face:"solid"})})]})}}]),n}(c.Component)},29241:(e,t,n)=>{n.d(t,{K$:()=>v,i:()=>g,Ay:()=>A,WS:()=>p,A4:()=>h,bU:()=>f,FF:()=>m,S5:()=>d});var r=n(74360),s=n(40319),i=(n(77810),n(3659)),a=n(76872),o=n(76426),l=n(73822),c=n(48971),u=n(64922);function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=(0,a.A)("elements-text");n=t.mix?n(!1,(0,a.A)(t.mix.block)(t.mix.elem,(0,s.A)({},t.mix.mods))):n();var r=function(e,t){var n={};return t?n.dangerouslySetInnerHTML={__html:e}:n.children=i.A.decode(String(e)),n}(e,t.asHTML),o=t.title||e;return(0,u.jsx)("span",(0,s.A)((0,s.A)({},r),{},{title:o,className:n}))}function m(e,t){var n=this.getColumn(t);return l.A.format.TimeDuration(n.get(e),{format:"milliseconds"})}function h(e,t){var n=this.getColumn(t);return(0,u.jsx)("span",{className:"elements-ellipsis",children:l.A.format.ReadableField(n.get(e))})}function f(e,t){var n=null!=this&&this.getColumn?this.getColumn(t).get(e):e[t];return(0,u.jsx)(v,{value:n})}function v(e){var t=e.value;return(0,u.jsx)("span",{className:"elements-ellipsis",children:l.A.format.DateTime(t,{format:"full"})})}function p(e){return"object"===(0,r.A)(e)?(0,u.jsx)(o.A,{theme:"ghost",onClick:function(){(0,c.eW)(e,{hideOopsMsg:!0})},children:"View"}):l.A.format.NO_VALUE}function g(e,t){return l.A.format.Number(e[t])}const A={__default__:function(e,t){return String(l.A.format.ValueOrDefault(e[t]))},_templates:{},add:function(e,t){this._templates[e]=function(e){return Object.keys(e).reduce((function(t,n){return t[n]=e[n],t}),{})}(t)},get:function(e){return this._templates[e]||{}}}},7489:(e,t,n)=>{n.r(t),n.d(t,{default:()=>G});var r=n(77810),s=n(15647),i=n(86673),a=n(76872),o=n(84162),l=n(87604),c=n(55682),u=n(26264),d=n(66324),m=n(97134),h=n(37330),f=(n(38881),n(64922)),v=(0,a.A)("cluster-menu"),p={updateViewMode:function(e){return{type:u.RN,data:e}},updateFilter:function(e){return{type:u.FR,data:e}}};const g=(0,s.Ng)((function(e){var t=e.clustersMenu;return{viewMode:t.viewMode,clusterFilter:t.clusterFilter,login:e.global.login}}),p)((function(e){var t=e.viewMode,n=e.updateViewMode,r=e.clusterFilter,s=e.updateFilter;return(0,f.jsx)("header",{className:v("header","elements-page__header"),children:(0,f.jsxs)("div",{className:v("header-inner"),children:[(0,f.jsx)("div",{className:v("filter"),children:(0,f.jsx)("div",{className:"elements-filter",children:(0,f.jsx)(o.A,{value:r,placeholder:"Filter clusters",onChange:s})})}),(0,f.jsx)("div",{className:v("view"),children:(0,f.jsx)(l.A,{size:"m",name:"cluster-menu-mode",value:t,onUpdate:function(e){return n(e)},items:[{value:"table",text:"",icon:{awesome:"list"}},{value:"dashboard",text:"",icon:{awesome:"table"}}]})}),(0,f.jsx)(m.V,{currentUrl:h.WZ.href})]})})}));var A=n(40319),x=n(29121),j=n(12937),y=n(10785),b=n(26718),N=n(87275),_=n(49214),w=n.n(_),C=n(39760),k=n.n(C),S=n(27528),U=n.n(S),F=n(75414),M=n.n(F);const V=e=>r.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"none",viewBox:"0 0 16 16"},e),r.createElement("path",{fill:"currentColor",fillRule:"evenodd",d:"M10.5 6V5a2.5 2.5 0 0 0-5 0v1h5ZM4 5v1a3 3 0 0 0-3 3v3a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3V5a4 4 0 0 0-8 0Zm6.5 2.5H12A1.5 1.5 0 0 1 13.5 9v3a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 12V9A1.5 1.5 0 0 1 4 7.5h6.5Zm-1.75 2a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2Z",clipRule:"evenodd"}));var E=n(12335),T=n.n(E),L=n(89700),O=n(19530),R=n(11394),B=n(31545),H=n(21778),D=n(33547),K=n(13542),q=(0,a.A)("cluster-menu"),I=function(e){(0,y.A)(n,e);var t=(0,b.A)(n);function n(){return(0,x.A)(this,n),t.apply(this,arguments)}return(0,j.A)(n,[{key:"componentDidMount",value:function(){var e=this.props,t=e.fetchClusterVersions,n=e.fetchClusterAvailability,r=e.fetchClusterAuthStatus;t(),r(),"localmode"!==D.YT.environment&&n()}},{key:"prepareGroups",value:function(e){function t(e,t){return e.name>t.name?1:-1}var n=M()(e,(function(e,t){var n=t.group||L.wK;return e[n]=e[n]||[],e[n].push(t),e}),{});return k()(n,(function(e){e.sort(t)})),n}},{key:"renderVersion",value:function(e){var t,n=e.loadState,r=e.access,s=e.version,i=e.status,a="—";return"loaded"===n?"granted"===r?(t="Current cluster version: ".concat(s),a=s):"none"===r&&"available"===i?(t="Please refer to Getting Started for more details",a="No access"):"none"===r&&"available"!==i&&(t="Could not load version, cluster is unavailable"):t="Please wait, loading cluster version",(0,f.jsx)("div",{className:q("item-version"),title:t,children:a})}},{key:"renderCluster",value:function(e,t){var n=e.status,r=e.access,s=e.id,i=e.name,a=e.environment,o=e.description,l=e.theme,c=e.authorized,u=q("item",{state:n,access:"available"===n&&r,size:t}),d=l?"cluster-color_theme_".concat(l):"cluster-color",m=(0,H.Lt)(s),h=m.iconbig,v=m.icon2x;return(0,f.jsx)(N.N_,{className:u,to:"/"+s,children:(0,f.jsxs)("div",{className:q("item-body"),children:[c?null:(0,f.jsx)("span",{className:q("item-auth-status"),children:(0,f.jsx)(V,{})}),(0,f.jsx)("div",{className:q("item-heading"),children:i}),(0,f.jsx)("div",{className:q("item-image-wrapper"),children:(0,f.jsx)("div",{className:q("item-image",d),style:{backgroundImage:"url("+(h||v)+")"}})}),(0,f.jsx)("div",{className:q("item-image-veil")}),this.renderVersion(e),(0,f.jsx)("div",{className:q("item-environment"),children:(0,f.jsx)("span",{children:T().ValueOrDefault(a)})}),(0,f.jsx)("div",{className:q("item-description","elements-multiline-ellipsis"),children:o})]})},s)}},{key:"renderDashboard",value:function(e){var t=this,n=this.prepareGroups(e),r=w()(Object.keys(n),(function(e){return!(e in L.wM)}));return(0,f.jsx)("main",{className:q(null,"elements-page__content"),children:U()(L.B_.concat(r),(function(e){var r,s=n[e],i=null!==(r=L.wM[e])&&void 0!==r?r:{caption:e},a=i.caption,o=i.size;return s&&s.length&&(0,f.jsxs)("div",{className:q("group"),children:[(0,f.jsx)("div",{className:q("heading",{position:"center",size:"l"},q("group-heading")),children:a}),(0,f.jsx)("div",{className:q("list"),children:U()(s,(function(e){return t.renderCluster(e,o)}))})]},e)}))},"body")}},{key:"renderTable",value:function(e){var t={css:"cluster-menu",theme:"light",striped:!0,tableId:B.K9,computeKey:function(e){return e.name},onItemClick:function(e){(0,K.Q)().push("/".concat(e.id))},columns:{items:{image:{align:"center",caption:"",sort:!1},name:{get:function(e){return e.name},sort:!0,align:"left"},environment:{get:function(e){return e.environment},sort:!0,align:"left"},version:{get:function(e){return[e.version,e.id]},sort:!0,align:"right"},status:{get:function(e){return[e.status,e.id]},sort:!0,align:"center"},access:{get:function(e){return[e.access,e.id]},sort:!0,align:"center"}},sets:{default:{items:["image","name","environment","version","status","access"]}},mode:"default"},templates:{key:"cluster-menu",data:{}}},n=this.props.sortState,r=Object.assign({},t,{items:O.W.sort(e,n,t.columns.items),columns:Object.assign({},t.columns)});return(0,f.jsx)("main",{className:q(null,"elements-page__content"),children:(0,f.jsx)("div",{className:q("table-wrapper"),children:(0,f.jsx)(R.A,(0,A.A)({},r))})},"body")}},{key:"renderEmptyContent",value:function(){var e=q("heading",{position:"center",size:"l"});return(0,f.jsx)("main",{className:q(null,"elements-page__content"),children:(0,f.jsx)("div",{className:q("message",e),children:"No clusters matching your selection"})},"body")}},{key:"render",value:function(){var e,t=this.props,n=t.viewMode,r=t.clusterFilter,s=t.clusters;try{e=new RegExp(r,"i")}catch(e){}var i=function(t){return"string"==typeof t&&(e?t.search(e)>-1:t.indexOf(r)>-1)},a=w()(s,(function(e){return[e.id,e.version,e.environment].some(i)}));return"dashboard"===n&&a.length?this.renderDashboard(a):"table"===n&&a.length?this.renderTable(a):a.length?null:this.renderEmptyContent()}}]),n}(r.Component),z={fetchClusterVersions:function(){return function(e){return c.A.request({method:"get",url:"/api/clusters/versions"}).then((function(t){var n=t.data;e({type:u.sk.SUCCESS,data:n})})).catch((function(){e({type:u.sk.FAILURE})}))}},fetchClusterAuthStatus:function(){return function(e){return c.A.request({method:"get",url:"/api/clusters/auth-status"}).then((function(t){var n=t.data;e({type:u._U.SUCCESS,data:n})})).catch((function(){e({type:u._U.FAILURE})}))}},fetchClusterAvailability:function(){return function(e){return(0,d.rq)().then((function(t){var n=t.data;e({type:u.oT.SUCCESS,data:n})})).catch((function(){e({type:u.oT.FAILURE})}))}}};const P=(0,s.Ng)((function(e){var t=e.clustersMenu;return{viewMode:t.viewMode,clusterFilter:t.clusterFilter,clusters:t.clusters,sortState:e.tables[B.K9]}}),z)(I);var Z=n(7787);function W(){var e=(0,s.d4)((function(e){return e.global.title}));return(0,f.jsxs)(r.Fragment,{children:[(0,f.jsx)(i.A,{title:e}),(0,f.jsx)(g,{}),(0,f.jsx)(P,{}),Z.Ay.renderAppFooter()]})}const G=r.memo(W)},97134:(e,t,n)=>{n.d(t,{V:()=>w,X:()=>k});var r=n(9736),s=n(40319),i=n(77810),a=n(76872),o=n(49214),l=n.n(o),c=n(39760),u=n.n(c),d=n(27528),m=n.n(d),h=n(90636),f=n.n(h),v=n(76426),p=(n(38881),n(55695)),g=n(2211),A=n(60620),x=n(37330),j=n(48971),y=n(64922),b=(0,a.A)("cluster-menu"),N={visibilityByHref:{},requestedHrefs:new Set};function _(e,t){switch(t.type){case"add-visible-items":return(0,s.A)((0,s.A)({},e),{},{visibilityByHref:(0,s.A)((0,s.A)({},e.visibilityByHref),t.data)});case"add-requested-hrefs":return u()(t.data,(function(t){return e.requestedHrefs.add(t)})),(0,s.A)({},e);default:return e}}function w(e){var t=e.currentUrl,n=e.showTitle,o=function(e){var t=i.useReducer(_,N),n=(0,r.A)(t,2),s=n[0],a=s.visibilityByHref,o=s.requestedHrefs,c=n[1],u=i.useMemo((function(){return f()(e,(function(e){return!e.getVisible||a[e.href]}))}),[e,a]),d=(0,r.A)(u,2),h=d[0],v=d[1];return i.useEffect((function(){var e=l()(v,(function(e){return!o.has(e.href)}));if(e.length){c({type:"add-requested-hrefs",data:m()(e,(function(e){return e.href}))});var t={};Promise.all(m()(e,(function(e){return function(e){return e.getVisible?(0,j.fI)(e.getVisible(),{toasterName:"link_item_visibility_"+e.href,skipSuccessToast:!0,errorContent:(0,y.jsxs)("span",{children:["Cannot get visibity for ",e.href,". "]})}).then((function(e){return e})).catch((function(){return!1})):Promise.resolve(!1)}(e).then((function(n){t[e.href]=n}))}))).then((function(){c({type:"add-visible-items",data:t})}))}}),[v]),h}(x.Pd),c=i.useMemo((function(){return f()(o,(function(e){return e.href!==t}))}),[o,t]),u=(0,r.A)(c,2),d=u[0],h=(0,r.A)(u[1],1)[0];return(0,y.jsxs)(i.Fragment,{children:[n&&Boolean(h)&&(0,y.jsx)("div",{className:b("page-name"),children:h.text}),(0,y.jsx)("div",{className:b("links",{theme:"expanded"}),children:(0,y.jsx)("ul",{className:b("links-list",(0,a.A)("elements-list")({type:"unstyled"})),children:m()(d,(function(e){return(0,y.jsx)("li",{children:(0,y.jsx)(v.A,{routed:e.routed,url:e.href,className:b("links-item"),children:e.text})},e.text)}))})}),(0,y.jsx)("div",{className:b("links",{theme:"collapsed"}),children:(0,y.jsx)(p.r,{popupProps:{className:b("popup")},switcher:(0,y.jsxs)(g.A,{children:["Links ",(0,y.jsx)(A.A,{awesome:"chevron-down"})]}),items:m()(o,(function(e){return(0,s.A)({action:function(){}},e)})),size:"l"})})]})}function C(e){var t=e.currentUrl,n=e.showTitle;return(0,y.jsx)("div",{className:b("header","elements-page__header"),children:(0,y.jsx)(w,{currentUrl:t,showTitle:n})})}var k=i.memo(C)},94544:(e,t,n)=>{n.d(t,{Af:()=>d,Ut:()=>l,Z3:()=>c});var r=n(13322),s=n(7787),i=n(26264),a=n(42265),o=n(44458);function l(e,t){return s.Ay.makeUrlForTabletCellBundleDashboard(e,t)}function c(e,t){var n=t?"/".concat(t,"/"):"";return"".concat(n).concat(i.YW.TABLET_CELL_BUNDLES,"/").concat(a.R_.TABLET_CELLS,"?id=").concat(e)}function u(e,t){return e.changelog_account===t.changelog_account&&e.snapshot_account===t.snapshot_account?0:e.changelog_account<t.changelog_account||e.snapshot_account<t.snapshot_account?-1:1}var d=function(e){var t=e.bundles,n=e.column,s=e.columnsSortable,i=e.order,a=[],l=(0,o.fA)(i),c=l.orderK,d=l.undefinedOrderK;if("changelog_account"===n)a=(0,r.A)(t).sort(u);else if("nodes"===n)a=(0,r.A)(t).sort((function(e,t){var n=e.nodes,r=void 0===n?[]:n,s=t.nodes,i=void 0===s?[]:s;return r.length-i.length}));else if(s.has(n))return(0,o.Uy)(t,[{key:n,orderK:c,undefinedOrderK:d}]);return i.includes("asc")?a:a.reverse()}},38881:()=>{}}]);
|
2
|
+
//# sourceMappingURL=cluster-menu.68f5e677.chunk.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/cluster-menu.381d4a48.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/ClustersMenuHeader.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/clusters-menu.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Lock.js","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/ClustersMenuBody.tsx","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/ClustersMenu.js","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/HeaderLinks.tsx","webpack://@ytsaurus/ui/./src/ui/utils/tablet_cell_bundles/index.ts"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport Filter from '../../components/Filter/Filter';\nimport RadioButton from '../../components/RadioButton/RadioButton';\nimport {updateFilter, updateViewMode} from '../../store/actions/clusters-menu';\nimport {HeaderLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {LINKS_ITEM_CLUSTERS} from '../../containers/ClustersMenu/header-links-items';\nimport {RootState} from '../../store/reducers';\n\nimport './ClusterMenuHeader.scss';\n\nconst b = block('cluster-menu');\n\nClustersMenuHeader.propTypes = {\n clusterFilter: PropTypes.string,\n viewMode: PropTypes.oneOf(['dashboard', 'table']).isRequired,\n updateFilter: PropTypes.func.isRequired,\n updateViewMode: PropTypes.func.isRequired,\n login: PropTypes.string,\n};\n\ntype Props = ConnectedProps<typeof connector>;\n\nfunction ClustersMenuHeader({viewMode, updateViewMode, clusterFilter, updateFilter}: Props) {\n return (\n <header className={b('header', 'elements-page__header')}>\n <div className={b('header-inner')}>\n <div className={b('filter')}>\n <div className=\"elements-filter\">\n <Filter\n value={clusterFilter}\n placeholder=\"Filter clusters\"\n onChange={updateFilter}\n />\n </div>\n </div>\n <div className={b('view')}>\n <RadioButton<'table' | 'dashboard'>\n size=\"m\"\n name=\"cluster-menu-mode\"\n value={viewMode}\n onUpdate={(value) => updateViewMode(value)}\n items={[\n {\n value: 'table',\n text: '',\n icon: {awesome: 'list'},\n },\n {\n value: 'dashboard',\n text: '',\n icon: {awesome: 'table'},\n },\n ]}\n />\n </div>\n\n <HeaderLinks currentUrl={LINKS_ITEM_CLUSTERS.href} />\n </div>\n </header>\n );\n}\n\nfunction mapStateToProps(state: RootState) {\n const {viewMode, clusterFilter} = state.clustersMenu;\n const {login} = state.global;\n return {\n viewMode,\n clusterFilter,\n login,\n };\n}\n\nconst mapDispatchToProps = {\n updateViewMode,\n updateFilter,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(ClustersMenuHeader);\n","import axios from 'axios';\nimport {\n CLUSTERS_MENU_UPDATE_FILTER,\n CLUSTERS_MENU_UPDATE_VIEWMODE,\n FETCH_CLUSTER_AUTH_STATUS,\n FETCH_CLUSTER_AVAILABILITY,\n FETCH_CLUSTER_VERSIONS,\n} from '../../constants/index';\nimport {fetchClustersAvailability} from '../../pages/odin/odin-utils';\nimport {\n ClustersMenuAction,\n ClustersMenuState,\n} from '../../store/reducers/clusters-menu/clusters-menu';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../store/reducers';\n\nexport function updateViewMode(viewMode: ClustersMenuState['viewMode']) {\n return {type: CLUSTERS_MENU_UPDATE_VIEWMODE, data: viewMode};\n}\n\nexport function updateFilter(clusterFilter: ClustersMenuState['clusterFilter']) {\n return {type: CLUSTERS_MENU_UPDATE_FILTER, data: clusterFilter};\n}\n\ntype ClusterMenuThunkAction = ThunkAction<void, RootState, unknown, ClustersMenuAction>;\n\nexport function fetchClusterVersions(): ClusterMenuThunkAction {\n return (dispatch) => {\n return axios\n .request({\n method: 'get',\n url: '/api/clusters/versions',\n })\n .then(({data}) => {\n dispatch({type: FETCH_CLUSTER_VERSIONS.SUCCESS, data});\n })\n .catch(() => {\n dispatch({type: FETCH_CLUSTER_VERSIONS.FAILURE});\n });\n };\n}\n\nexport function fetchClusterAuthStatus(): ClusterMenuThunkAction {\n return (dispatch) => {\n return axios\n .request({\n method: 'get',\n url: '/api/clusters/auth-status',\n })\n .then(({data}) => {\n dispatch({type: FETCH_CLUSTER_AUTH_STATUS.SUCCESS, data});\n })\n .catch(() => {\n dispatch({type: FETCH_CLUSTER_AUTH_STATUS.FAILURE});\n });\n };\n}\n\nexport function fetchClusterAvailability(): ClusterMenuThunkAction {\n return (dispatch) => {\n return fetchClustersAvailability()\n .then(({data}) => {\n dispatch({type: FETCH_CLUSTER_AVAILABILITY.SUCCESS, data});\n })\n .catch(() => {\n dispatch({type: FETCH_CLUSTER_AVAILABILITY.FAILURE});\n });\n };\n}\n","import * as React from 'react';\nconst Lock = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.5 6V5a2.5 2.5 0 0 0-5 0v1h5ZM4 5v1a3 3 0 0 0-3 3v3a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3V5a4 4 0 0 0-8 0Zm6.5 2.5H12A1.5 1.5 0 0 1 13.5 9v3a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 12V9A1.5 1.5 0 0 1 4 7.5h6.5Zm-1.75 2a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2Z\", clipRule: \"evenodd\" })));\nexport default Lock;\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport block from 'bem-cn-lite';\nimport {Link} from 'react-router-dom';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport {Lock} from '@gravity-ui/icons';\n\n// @ts-ignore\nimport format from '@ytsaurus/interface-helpers/lib/hammer/format';\n\nimport {CLUSTER_GROUPS, CLUSTER_GROUPS_ORDER, DEFAULT_GROUP} from '../../constants/cluster-menu';\nimport {utils} from '../../common/hammer/utils';\nimport ElementsTable from '../../components/ElementsTable/ElementsTable';\nimport {\n fetchClusterAuthStatus,\n fetchClusterAvailability,\n fetchClusterVersions,\n} from '../../store/actions/clusters-menu';\nimport {CLUSTER_MENU_TABLE_ID} from '../../constants/tables';\nimport {getClusterAppearance} from '../../appearance';\nimport YT from '../../config/yt-config';\nimport './ClusterMenuBody.scss';\nimport {RootState} from '../../store/reducers';\nimport {ClusterConfigWithStatus} from '../../store/reducers/clusters-menu/clusters-menu';\nimport {getAppBrowserHistory} from '../../store/window-store';\n\nconst b = block('cluster-menu');\n\ntype Props = ConnectedProps<typeof connector>;\n\nclass ClustersMenuBody extends React.Component<Props> {\n componentDidMount() {\n const {fetchClusterVersions, fetchClusterAvailability, fetchClusterAuthStatus} = this.props;\n\n fetchClusterVersions();\n fetchClusterAuthStatus();\n if (YT.environment !== 'localmode') {\n fetchClusterAvailability();\n }\n }\n\n prepareGroups(clusters: Array<ClusterConfigWithStatus>) {\n function sortByClusterName<T extends {name: string}>(clusterA: T, clusterB: T) {\n return clusterA.name > clusterB.name ? 1 : -1;\n }\n\n const groups = reduce_(\n clusters,\n (acc, cluster) => {\n const currentGroup = cluster.group || DEFAULT_GROUP;\n acc[currentGroup] = acc[currentGroup] || [];\n acc[currentGroup].push(cluster);\n return acc;\n },\n {} as Record<string, Array<ClusterConfigWithStatus>>,\n );\n\n forEach_(groups, (clusters) => {\n clusters.sort(sortByClusterName);\n });\n\n return groups;\n }\n\n renderVersion({loadState, access, version, status}: ClusterConfigWithStatus) {\n let title;\n let text: typeof version = '—';\n if (loadState === 'loaded') {\n if (access === 'granted') {\n title = `Current cluster version: ${version}`;\n text = version;\n } else if (access === 'none' && status === 'available') {\n title = 'Please refer to Getting Started for more details';\n text = 'No access';\n } else if (access === 'none' && status !== 'available') {\n title = 'Could not load version, cluster is unavailable';\n }\n } else {\n title = 'Please wait, loading cluster version';\n }\n return (\n <div className={b('item-version')} title={title}>\n {text}\n </div>\n );\n }\n\n renderCluster(cluster: ClusterConfigWithStatus, size?: 'l') {\n const {status, access, id, name, environment, description, theme, authorized} = cluster;\n const className = b('item', {\n state: status,\n access: status === 'available' && access,\n size,\n });\n\n const clusterTheme = theme ? `cluster-color_theme_${theme}` : 'cluster-color';\n const {iconbig, icon2x} = getClusterAppearance(id);\n\n return (\n <Link key={id} className={className} to={'/' + id}>\n <div className={b('item-body')}>\n {authorized ? null : (\n <span className={b('item-auth-status')}>\n <Lock />\n </span>\n )}\n <div className={b('item-heading')}>{name}</div>\n\n <div className={b('item-image-wrapper')}>\n <div\n className={b('item-image', clusterTheme)}\n style={{\n backgroundImage: 'url(' + (iconbig || icon2x) + ')',\n }}\n />\n </div>\n\n <div className={b('item-image-veil')} />\n\n {this.renderVersion(cluster)}\n\n <div className={b('item-environment')}>\n <span>{format['ValueOrDefault'](environment)}</span>\n </div>\n\n <div className={b('item-description', 'elements-multiline-ellipsis')}>\n {description}\n </div>\n </div>\n </Link>\n );\n }\n\n renderDashboard(clusters: Array<ClusterConfigWithStatus>) {\n const clusterGroups = this.prepareGroups(clusters);\n\n const unknown = filter_(\n Object.keys(clusterGroups),\n (groupName) => !(groupName in CLUSTER_GROUPS),\n );\n\n return (\n <main key=\"body\" className={b(null, 'elements-page__content')}>\n {map_(CLUSTER_GROUPS_ORDER.concat(unknown), (groupName) => {\n const clusters = clusterGroups[groupName];\n const {caption, size} = CLUSTER_GROUPS[groupName] ?? {caption: groupName};\n\n return (\n clusters &&\n clusters.length && (\n <div key={groupName} className={b('group')}>\n <div\n className={b(\n 'heading',\n {position: 'center', size: 'l'},\n b('group-heading'),\n )}\n >\n {caption}\n </div>\n <div className={b('list')}>\n {map_(clusters, (cluster) => this.renderCluster(cluster, size))}\n </div>\n </div>\n )\n );\n })}\n </main>\n );\n }\n\n renderTable(clusters: Array<ClusterConfigWithStatus>) {\n const tableSettings = {\n css: 'cluster-menu',\n theme: 'light',\n striped: true,\n tableId: CLUSTER_MENU_TABLE_ID,\n computeKey: function (item: {name: string}) {\n return item.name;\n },\n onItemClick: function (item: {id: string}) {\n getAppBrowserHistory().push(`/${item.id}`);\n },\n columns: {\n items: {\n image: {\n align: 'center',\n caption: '',\n sort: false,\n },\n name: {\n get: function (cluster: ClusterConfigWithStatus) {\n return cluster.name;\n },\n sort: true,\n align: 'left',\n },\n environment: {\n get: function (cluster: ClusterConfigWithStatus) {\n return cluster.environment;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get: function (cluster: ClusterConfigWithStatus) {\n return [cluster.version, cluster.id];\n },\n sort: true,\n align: 'right',\n },\n status: {\n get: function (cluster: ClusterConfigWithStatus) {\n return [cluster.status, cluster.id];\n },\n sort: true,\n align: 'center',\n },\n access: {\n get: function (cluster: ClusterConfigWithStatus) {\n return [cluster.access, cluster.id];\n },\n sort: true,\n align: 'center',\n },\n },\n sets: {\n default: {\n items: ['image', 'name', 'environment', 'version', 'status', 'access'],\n },\n },\n mode: 'default',\n },\n templates: {\n key: 'cluster-menu',\n data: {},\n },\n };\n\n const {sortState} = this.props;\n const table = Object.assign({}, tableSettings, {\n items: utils.sort(clusters, sortState, tableSettings.columns.items),\n columns: Object.assign({}, tableSettings.columns),\n });\n\n return (\n <main key=\"body\" className={b(null, 'elements-page__content')}>\n <div className={b('table-wrapper')}>\n <ElementsTable {...table} />\n </div>\n </main>\n );\n }\n\n renderEmptyContent() {\n const className = b('heading', {position: 'center', size: 'l'});\n return (\n <main key=\"body\" className={b(null, 'elements-page__content')}>\n <div className={b('message', className)}>No clusters matching your selection</div>\n </main>\n );\n }\n\n render() {\n const {viewMode, clusterFilter, clusters} = this.props;\n let regexp: RegExp | undefined;\n try {\n regexp = new RegExp(clusterFilter, 'i');\n } catch {}\n\n const filterByField = (field?: string) => {\n return (\n typeof field === 'string' &&\n (regexp ? field.search(regexp) > -1 : field.indexOf(clusterFilter) > -1)\n );\n };\n\n const filteredClusters = filter_(clusters, ({id, version, environment}) => {\n return [id, version, environment].some(filterByField);\n });\n\n if (viewMode === 'dashboard' && filteredClusters.length) {\n return this.renderDashboard(filteredClusters);\n } else if (viewMode === 'table' && filteredClusters.length) {\n return this.renderTable(filteredClusters);\n } else if (!filteredClusters.length) {\n return this.renderEmptyContent();\n }\n return null;\n }\n}\n\nfunction mapStateToProps(state: RootState) {\n const {viewMode, clusterFilter, clusters} = state.clustersMenu;\n return {\n viewMode,\n clusterFilter,\n clusters,\n sortState: state.tables[CLUSTER_MENU_TABLE_ID],\n };\n}\n\nconst mapDispatchToProps = {\n fetchClusterVersions,\n fetchClusterAuthStatus,\n fetchClusterAvailability,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(ClustersMenuBody);\n","import React, {Fragment} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport PageHead from '../../components/PageHead/PageHead';\n\nimport ClustersMenuHeader from './ClustersMenuHeader';\nimport ClustersMenuBody from './ClustersMenuBody';\nimport UIFactory from '../../UIFactory';\n\nfunction ClustersMenu() {\n const title = useSelector((state) => state.global.title);\n\n return (\n <Fragment>\n <PageHead title={title} />\n <ClustersMenuHeader />\n <ClustersMenuBody />\n {UIFactory.renderAppFooter()}\n </Fragment>\n );\n}\n\nexport default React.memo(ClustersMenu);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\n\nimport Link from '../../components/Link/Link';\nimport './ClusterMenuHeader.scss';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport Button from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\nimport {ALL_LINKS_ITEMS, HeaderLinkItem} from './header-links-items';\nimport {wrapApiPromiseByToaster} from '../../utils/utils';\nimport {ActionD} from '../../types';\n\nconst b = block('cluster-menu');\n\nHeaderLinks.propTypes = {\n currentUrl: PropTypes.string,\n showTitle: PropTypes.bool,\n};\n\ninterface Props {\n currentUrl?: string;\n showTitle?: boolean;\n}\n\nfunction getItemVisibilityOrFalse(item: HeaderLinkItem) {\n if (!item.getVisible) {\n return Promise.resolve(false);\n }\n\n return wrapApiPromiseByToaster(item.getVisible(), {\n toasterName: 'link_item_visibility_' + item.href,\n skipSuccessToast: true,\n errorContent: <span>Cannot get visibity for {item.href}. </span>,\n })\n .then((visible) => {\n return visible;\n })\n .catch(() => {\n return false;\n });\n}\n\ninterface LinksVisibilityState {\n visibilityByHref: {[href: string]: boolean};\n requestedHrefs: Set<string>;\n}\nconst linksVisibilityState: LinksVisibilityState = {\n visibilityByHref: {},\n requestedHrefs: new Set(),\n};\n\ntype LinksVisibilityAction =\n | ActionD<'add-visible-items', LinksVisibilityState['visibilityByHref']>\n | ActionD<'add-requested-hrefs', Array<string>>;\n\nfunction reducer(state: LinksVisibilityState, action: LinksVisibilityAction) {\n switch (action.type) {\n case 'add-visible-items':\n return {...state, visibilityByHref: {...state.visibilityByHref, ...action.data}};\n case 'add-requested-hrefs':\n forEach_(action.data, (href) => state.requestedHrefs.add(href));\n return {...state};\n default:\n return state;\n }\n}\n\nfunction useLinkItems(items: Array<HeaderLinkItem>) {\n const [{visibilityByHref, requestedHrefs}, dispatch] = React.useReducer(\n reducer,\n linksVisibilityState,\n );\n\n const [visible, rest] = React.useMemo(() => {\n return partition_(items, (item) => {\n return !item.getVisible || visibilityByHref[item.href];\n });\n }, [items, visibilityByHref]);\n\n React.useEffect(() => {\n const toRequest = filter_(rest, (item) => !requestedHrefs.has(item.href));\n\n if (!toRequest.length) {\n return;\n }\n\n dispatch({type: 'add-requested-hrefs', data: map_(toRequest, (item) => item.href)});\n const collected: typeof visibilityByHref = {};\n Promise.all(\n map_(toRequest, (item) => {\n return getItemVisibilityOrFalse(item).then((value) => {\n collected[item.href] = value;\n });\n }),\n ).then(() => {\n dispatch({type: 'add-visible-items', data: collected});\n });\n }, [rest]);\n\n return visible;\n}\n\nexport function HeaderLinks({currentUrl, showTitle}: Props) {\n const items = useLinkItems(ALL_LINKS_ITEMS);\n const [other, [current]] = React.useMemo(\n () => partition_(items, ({href}) => href !== currentUrl),\n [items, currentUrl],\n );\n\n return (\n <React.Fragment>\n {showTitle && Boolean(current) && <div className={b('page-name')}>{current.text}</div>}\n <div className={b('links', {theme: 'expanded'})}>\n <ul className={b('links-list', block('elements-list')({type: 'unstyled'}))}>\n {map_(other, (link) => (\n <li key={link.text}>\n <Link routed={link.routed} url={link.href} className={b('links-item')}>\n {link.text}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n <div className={b('links', {theme: 'collapsed'})}>\n <DropdownMenu\n popupProps={{className: b('popup')}}\n switcher={\n <Button>\n Links \n <Icon awesome={'chevron-down'} />\n </Button>\n }\n items={map_(items, (item) => {\n return {action() {}, ...item};\n })}\n size={'l'}\n />\n </div>\n </React.Fragment>\n );\n}\n\nHeaderImpl.propTypes = {\n // own Props\n currentUrl: PropTypes.string,\n};\n\nfunction HeaderImpl({currentUrl, showTitle}: {currentUrl?: string; showTitle?: boolean}) {\n return (\n <div className={b('header', 'elements-page__header')}>\n <HeaderLinks currentUrl={currentUrl} showTitle={showTitle} />\n </div>\n );\n}\n\nexport const HeaderWithLinks = React.memo(HeaderImpl);\n","import UIFactory from '../../UIFactory';\nimport {Page} from '../../constants';\nimport {TabletsTab} from '../../constants/tablets';\nimport {OrderType, multiSortWithUndefined, orderTypeToOrderK} from '../sort-helpers';\n\nexport function tabletCellBundleDashboardUrl(cluster: string, bundle: string) {\n return UIFactory.makeUrlForTabletCellBundleDashboard(cluster, bundle);\n}\n\nexport function genTabletCellBundlesCellUrl(cellId: string, cluster?: string) {\n const prefix = cluster ? `/${cluster}/` : '';\n return `${prefix}${Page.TABLET_CELL_BUNDLES}/${TabletsTab.TABLET_CELLS}?id=${cellId}`;\n}\n\nfunction compareBundlesByAccount<T extends Record<string, any>>(left: T, right: T) {\n if (\n left.changelog_account === right.changelog_account &&\n left.snapshot_account === right.snapshot_account\n ) {\n return 0;\n }\n\n return left.changelog_account < right.changelog_account\n ? -1\n : left.snapshot_account < right.snapshot_account\n ? -1\n : 1;\n}\n\nexport const sortTableBundles = <T extends Record<string, any>>({\n bundles,\n column,\n columnsSortable,\n order,\n}: {\n bundles: T[];\n column: keyof T;\n columnsSortable: Set<string>;\n order: OrderType;\n}) => {\n let sorted: T[] = [];\n\n const {orderK, undefinedOrderK} = orderTypeToOrderK(order);\n\n if (column === 'changelog_account') {\n sorted = [...bundles].sort(compareBundlesByAccount);\n } else if (column === 'nodes') {\n sorted = [...bundles].sort(({nodes: l = []}, {nodes: r = []}) => l.length - r.length);\n } else if (columnsSortable.has(column as string)) {\n return multiSortWithUndefined(bundles, [{key: column, orderK, undefinedOrderK}]);\n }\n\n return (order as string).includes('asc') ? sorted : sorted.reverse();\n};\n"],"names":["block","cn","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","onClick","_this$props","props","order","onChange","allowUnordered","withUndefined","nextSortOrderValue","_createClass","key","value","_this$props2","this","className","label","hidden","icon","_jsxs","children","_jsx","Tooltip","content","format","ReadableField","Icon","awesome","face","React","renderText","text","settings","undefined","mix","elem","_objectSpread","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","title","printColumnAsTimeDurationWithMs","item","columnName","column","getColumn","hammer","get","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","_ref","printColumnAsError","error","_typeof","Link","theme","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","wrapRenderMethods","b","mapDispatchToProps","updateViewMode","viewMode","type","CLUSTERS_MENU_UPDATE_VIEWMODE","data","updateFilter","clusterFilter","CLUSTERS_MENU_UPDATE_FILTER","connect","state","_state$clustersMenu","clustersMenu","login","global","Filter","placeholder","RadioButton","size","name","onUpdate","items","HeaderLinks","currentUrl","LINKS_ITEM_CLUSTERS","href","assign","xmlns","width","height","fill","viewBox","fillRule","d","clipRule","ClustersMenuBody","fetchClusterVersions","fetchClusterAvailability","fetchClusterAuthStatus","YT","environment","clusters","sortByClusterName","clusterA","clusterB","groups","reduce_","acc","cluster","currentGroup","group","DEFAULT_GROUP","push","forEach_","sort","loadState","access","version","status","id","description","authorized","clusterTheme","_getClusterAppearance","getClusterAppearance","iconbig","icon2x","to","Lock","style","backgroundImage","renderVersion","clusterGroups","prepareGroups","unknown","filter_","groupName","CLUSTER_GROUPS","map_","CLUSTER_GROUPS_ORDER","_CLUSTER_GROUPS$group","_ref2","caption","position","renderCluster","tableSettings","css","striped","tableId","CLUSTER_MENU_TABLE_ID","computeKey","onItemClick","getAppBrowserHistory","columns","image","align","sets","default","mode","sortState","table","utils","ElementsTable","regexp","RegExp","_unused","filterByField","field","search","indexOf","filteredClusters","_ref3","some","renderDashboard","renderTable","renderEmptyContent","dispatch","axios","request","method","url","then","FETCH_CLUSTER_VERSIONS","SUCCESS","FAILURE","FETCH_CLUSTER_AUTH_STATUS","fetchClustersAvailability","FETCH_CLUSTER_AVAILABILITY","tables","ClustersMenu","useSelector","Fragment","PageHead","ClustersMenuHeader","UIFactory","renderAppFooter","linksVisibilityState","visibilityByHref","requestedHrefs","Set","reducer","action","showTitle","_React$useReducer","_React$useReducer2","_slicedToArray","_React$useReducer2$","_React$useMemo","partition_","getVisible","_React$useMemo2","visible","rest","toRequest","has","collected","Promise","all","wrapApiPromiseByToaster","toasterName","skipSuccessToast","errorContent","resolve","getItemVisibilityOrFalse","useLinkItems","ALL_LINKS_ITEMS","_React$useMemo3","_React$useMemo4","other","current","Boolean","link","routed","DropdownMenu","popupProps","switcher","Button","HeaderImpl","HeaderWithLinks","tabletCellBundleDashboardUrl","bundle","makeUrlForTabletCellBundleDashboard","genTabletCellBundlesCellUrl","cellId","prefix","Page","TABLET_CELL_BUNDLES","TabletsTab","TABLET_CELLS","compareBundlesByAccount","left","right","changelog_account","snapshot_account","sortTableBundles","bundles","columnsSortable","sorted","_orderTypeToOrderK","orderTypeToOrderK","orderK","undefinedOrderK","_toConsumableArray","_ref2$nodes","nodes","l","_ref3$nodes","r","multiSortWithUndefined","includes","reverse"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/cluster-menu.68f5e677.chunk.js","mappings":"wQAUMA,GAAQC,EAAAA,EAAAA,GAAG,aAEXC,GAAYC,EAAA,IAAAC,EAAAA,EAAAA,GAAAD,EACb,GAAK,SAAMC,EAAAA,EAAAA,GAAAD,EAAC,MACR,YAASC,EAAAA,EAAAA,GAAAD,EAAC,OACT,cAAWC,EAAAA,EAAAA,GAAAD,EACjB,gBAAiB,oBAAiBC,EAAAA,EAAAA,GAAAD,EAClC,iBAAkB,sBAAmBC,EAAAA,EAAAA,GAAAD,EACrC,gBAAiB,mBAAgBC,EAAAA,EAAAA,GAAAD,EACjC,iBAAkB,gBAAcA,GAafE,EAAQ,SAAAC,IAAAC,EAAAA,EAAAA,GAAAF,EAAAC,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAAJ,GAAA,SAAAA,IAAA,IAAAK,GAAAC,EAAAA,EAAAA,GAAA,KAAAN,GAAA,QAAAO,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GASvB,OATuBP,EAAAF,EAAAU,KAAAC,MAAAX,EAAA,OAAAY,OAAAL,KACzBM,QAAU,WACN,IAAAC,EAAyDZ,EAAKa,MAAvDC,EAAKF,EAALE,MAAOC,EAAQH,EAARG,SAAUC,EAAcJ,EAAdI,eAAgBC,EAAaL,EAAbK,cACnCF,GAKLA,GADkBG,EAAAA,EAAAA,IAAmBJ,EAAOE,EAAgBC,GAEhE,EAACjB,CAAC,CAiBD,OAjBAmB,EAAAA,EAAAA,GAAAxB,EAAA,EAAAyB,IAAA,SAAAC,MAED,WACI,IAAAC,EAA0CC,KAAKV,MAAxCW,EAASF,EAATE,UAAWC,EAAKH,EAALG,MAAOX,EAAKQ,EAALR,MAAOY,EAAMJ,EAANI,OAC1BC,EAAOnC,EAAasB,GAAS,IAEnC,OACIc,EAAAA,EAAAA,MAAA,QAAMJ,UAAWlC,EAAM,CAACoC,OAAAA,GAASF,GAAYb,QAASY,KAAKZ,QAAQkB,SAAA,CAC9DJ,IAASK,EAAAA,EAAAA,KAAA,QAAMN,UAAWlC,EAAM,SAASuC,SAAEJ,KAC5CK,EAAAA,EAAAA,KAACC,EAAAA,EAAO,CACJP,UAAWlC,EAAM,QACjB0C,QAASlB,EAAQmB,EAAAA,EAAOC,cAAcpB,GAAS,YAAYe,UAE3DC,EAAAA,EAAAA,KAACK,EAAAA,EAAI,CAACC,QAAST,EAAMU,KAAK,cAI1C,KAAC1C,CAAA,CA1BwB,CAAS2C,EAAAA,U,wMCS/B,SAASC,EAAWC,GAAsB,IAAhBC,EAAQtC,UAAAC,OAAA,QAAAsC,IAAAvC,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrCqB,GAAYlC,EAAAA,EAAAA,GAAM,iBAGlBkC,EADAiB,EAASE,IACGnB,GACR,GACAlC,EAAAA,EAAAA,GAAMmD,EAASE,IAAIrD,MAAnBA,CAA0BmD,EAASE,IAAIC,MAAIC,EAAAA,EAAAA,GAAA,GACpCJ,EAASE,IAAIG,QAIZtB,IAGhB,IAAMuB,EA3BV,SAA0BP,EAAMQ,GAC5B,IAAMnC,EAAQ,CAAC,EASf,OAPImC,EAEAnC,EAAMoC,wBAA0B,CAACC,OAAQV,GAEzC3B,EAAMgB,SAAWsB,EAAAA,EAAQC,OAAOC,OAAOb,IAGpC3B,CACX,CAgBsByC,CAAiBd,EAAMC,EAASO,QAE5CO,EAAQd,EAASc,OAASf,EAEhC,OAAOV,EAAAA,EAAAA,KAAA,QAAAe,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAUE,GAAS,IAAEQ,MAAOA,EAAO/B,UAAWA,IACzD,CAYO,SAASgC,EAAgCC,EAAMC,GAClD,IAAMC,EAASpC,KAAKqC,UAAUF,GAC9B,OAAOG,EAAAA,EAAO5B,OAAqB,aAAE0B,EAAOG,IAAIL,GAAO,CACnDxB,OAAQ,gBAEhB,CAEO,SAAS8B,EAA2BN,EAAMC,GAC7C,IAAMC,EAASpC,KAAKqC,UAAUF,GAC9B,OACI5B,EAAAA,EAAAA,KAAA,QAAMN,UAAU,oBAAmBK,SAC9BgC,EAAAA,EAAO5B,OAAsB,cAAE0B,EAAOG,IAAIL,KAGvD,CAEO,SAASO,EAAkBP,EAAMC,GACpC,IAAMrC,EAAQE,YAAAA,KAAMqC,UAAYrC,KAAKqC,UAAUF,GAAYI,IAAIL,GAAQA,EAAKC,GAC5E,OAAO5B,EAAAA,EAAAA,KAACmC,EAAY,CAAC5C,MAAOA,GAChC,CAEO,SAAS4C,EAAYC,GAAW,IAAT7C,EAAK6C,EAAL7C,MAC1B,OACIS,EAAAA,EAAAA,KAAA,QAAMN,UAAU,oBAAmBK,SAC9BgC,EAAAA,EAAO5B,OAAiB,SAAEZ,EAAO,CAACY,OAAQ,UAGvD,CAEO,SAASkC,EAAmBC,GAI/B,MAAwB,YAAjBC,EAAAA,EAAAA,GAAOD,IACVtC,EAAAA,EAAAA,KAACwC,EAAAA,EAAI,CAACC,MAAM,QAAQ5D,QAJN,YACd6D,EAAAA,EAAAA,IAAeJ,EAAO,CAACK,aAAa,GACxC,EAE2C5C,SAAC,SAIxCgC,EAAAA,EAAO5B,OAAOyC,QAEtB,CAOO,SAASC,EAASlB,EAAMC,GAC3B,OAAOG,EAAAA,EAAO5B,OAAe,OAAEwB,EAAKC,GACxC,CAEA,SACIkB,YApGJ,SAAyBnB,EAAMC,GAC3B,OAAOL,OAAOQ,EAAAA,EAAO5B,OAAuB,eAAEwB,EAAKC,IACvD,EAmGImB,WAAY,CAAC,EACbC,IAAK,SAAUC,EAAYC,GACvBzD,KAAKsD,WAAWE,GApHxB,SAA2BC,GACvB,OAAOC,OAAOC,KAAKF,GAAWG,QAAO,SAACC,EAAchE,GAGhD,OAFAgE,EAAahE,GAAO4D,EAAU5D,GAEvBgE,CACX,GAAG,CAAC,EACR,CA8GsCC,CAAkBL,EACpD,EACAlB,IAAK,SAAUiB,GACX,OAAOxD,KAAKsD,WAAWE,IAAe,CAAC,CAC3C,E,kMCrHEO,GAAIhG,EAAAA,EAAAA,GAAM,gBA8DViG,EAAqB,CACvBC,eC7DG,SAAwBC,GAC3B,MAAO,CAACC,KAAMC,EAAAA,GAA+BC,KAAMH,EACvD,ED4DII,aC1DG,SAAsBC,GACzB,MAAO,CAACJ,KAAMK,EAAAA,GAA6BH,KAAME,EACrD,GD6DA,SAFkBE,EAAAA,EAAAA,KAflB,SAAyBC,GACrB,IAAAC,EAAkCD,EAAME,aAExC,MAAO,CACHV,SAHWS,EAART,SAIHK,cAJ0BI,EAAbJ,cAKbM,MAJYH,EAAMI,OAAfD,MAMX,GAO2Cb,EAE3C,EAzDA,SAA2BrB,GAAkE,IAAhEuB,EAAQvB,EAARuB,SAAUD,EAActB,EAAdsB,eAAgBM,EAAa5B,EAAb4B,cAAeD,EAAY3B,EAAZ2B,aAClE,OACI/D,EAAAA,EAAAA,KAAA,UAAQN,UAAW8D,EAAE,SAAU,yBAAyBzD,UACpDD,EAAAA,EAAAA,MAAA,OAAKJ,UAAW8D,EAAE,gBAAgBzD,SAAA,EAC9BC,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,UAAUzD,UACxBC,EAAAA,EAAAA,KAAA,OAAKN,UAAU,kBAAiBK,UAC5BC,EAAAA,EAAAA,KAACwE,EAAAA,EAAM,CACHjF,MAAOyE,EACPS,YAAY,kBACZxF,SAAU8E,SAItB/D,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,QAAQzD,UACtBC,EAAAA,EAAAA,KAAC0E,EAAAA,EAAW,CACRC,KAAK,IACLC,KAAK,oBACLrF,MAAOoE,EACPkB,SAAU,SAACtF,GAAK,OAAKmE,EAAenE,EAAM,EAC1CuF,MAAO,CACH,CACIvF,MAAO,QACPmB,KAAM,GACNb,KAAM,CAACS,QAAS,SAEpB,CACIf,MAAO,YACPmB,KAAM,GACNb,KAAM,CAACS,QAAS,gBAMhCN,EAAAA,EAAAA,KAAC+E,EAAAA,EAAW,CAACC,WAAYC,EAAAA,GAAoBC,WAI7D,I,sJE/DA,MAEA,EAFcnG,GAAW,gBAAoB,MAAOoE,OAAOgC,OAAO,CAAEC,MAAO,6BAA8BC,MAAO,GAAIC,OAAQ,GAAIC,KAAM,OAAQC,QAAS,aAAezG,GAClK,gBAAoB,OAAQ,CAAEwG,KAAM,eAAgBE,SAAU,UAAWC,EAAG,sRAAuRC,SAAU,a,qGC4B3WnC,GAAIhG,EAAAA,EAAAA,GAAM,gBAIVoI,EAAgB,SAAA9H,IAAAC,EAAAA,EAAAA,GAAA6H,EAAA9H,GAAA,IAAAE,GAAAC,EAAAA,EAAAA,GAAA2H,GAAA,SAAAA,IAAA,OAAAzH,EAAAA,EAAAA,GAAA,KAAAyH,GAAA5H,EAAAW,MAAA,KAAAN,UAAA,CAmQjB,OAnQiBgB,EAAAA,EAAAA,GAAAuG,EAAA,EAAAtG,IAAA,oBAAAC,MAClB,WACI,IAAAT,EAAiFW,KAAKV,MAA/E8G,EAAoB/G,EAApB+G,qBAAsBC,EAAwBhH,EAAxBgH,yBAA0BC,EAAsBjH,EAAtBiH,uBAEvDF,IACAE,IACuB,cAAnBC,EAAAA,GAAGC,aACHH,GAER,GAAC,CAAAxG,IAAA,gBAAAC,MAED,SAAc2G,GACV,SAASC,EAA4CC,EAAaC,GAC9D,OAAOD,EAASxB,KAAOyB,EAASzB,KAAO,GAAK,CAChD,CAEA,IAAM0B,EAASC,IACXL,GACA,SAACM,EAAKC,GACF,IAAMC,EAAeD,EAAQE,OAASC,EAAAA,GAGtC,OAFAJ,EAAIE,GAAgBF,EAAIE,IAAiB,GACzCF,EAAIE,GAAcG,KAAKJ,GAChBD,CACX,GACA,CAAC,GAOL,OAJAM,IAASR,GAAQ,SAACJ,GACdA,EAASa,KAAKZ,EAClB,IAEOG,CACX,GAAC,CAAAhH,IAAA,gBAAAC,MAED,SAAA6C,GAA8E,IACtEX,EADOuF,EAAS5E,EAAT4E,UAAWC,EAAM7E,EAAN6E,OAAQC,EAAO9E,EAAP8E,QAASC,EAAM/E,EAAN+E,OAEnCzG,EAAuB,IAc3B,MAbkB,WAAdsG,EACe,YAAXC,GACAxF,EAAK,4BAAA7C,OAA+BsI,GACpCxG,EAAOwG,GACW,SAAXD,GAAgC,cAAXE,GAC5B1F,EAAQ,mDACRf,EAAO,aACW,SAAXuG,GAAgC,cAAXE,IAC5B1F,EAAQ,kDAGZA,EAAQ,wCAGRzB,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,gBAAiB/B,MAAOA,EAAM1B,SAC3CW,GAGb,GAAC,CAAApB,IAAA,gBAAAC,MAED,SAAckH,EAAkC9B,GAC5C,IAAOwC,EAAyEV,EAAzEU,OAAQF,EAAiER,EAAjEQ,OAAQG,EAAyDX,EAAzDW,GAAIxC,EAAqD6B,EAArD7B,KAAMqB,EAA+CQ,EAA/CR,YAAaoB,EAAkCZ,EAAlCY,YAAa5E,EAAqBgE,EAArBhE,MAAO6E,EAAcb,EAAda,WAC5D5H,EAAY8D,EAAE,OAAQ,CACxBW,MAAOgD,EACPF,OAAmB,cAAXE,GAA0BF,EAClCtC,KAAAA,IAGE4C,EAAe9E,EAAK,uBAAA7D,OAA0B6D,GAAU,gBAC9D+E,GAA0BC,EAAAA,EAAAA,IAAqBL,GAAxCM,EAAOF,EAAPE,QAASC,EAAMH,EAANG,OAEhB,OACI3H,EAAAA,EAAAA,KAACwC,EAAAA,GAAI,CAAU9C,UAAWA,EAAWkI,GAAI,IAAMR,EAAGrH,UAC9CD,EAAAA,EAAAA,MAAA,OAAKJ,UAAW8D,EAAE,aAAazD,SAAA,CAC1BuH,EAAa,MACVtH,EAAAA,EAAAA,KAAA,QAAMN,UAAW8D,EAAE,oBAAoBzD,UACnCC,EAAAA,EAAAA,KAAC6H,EAAI,OAGb7H,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,gBAAgBzD,SAAE6E,KAEpC5E,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,sBAAsBzD,UACpCC,EAAAA,EAAAA,KAAA,OACIN,UAAW8D,EAAE,aAAc+D,GAC3BO,MAAO,CACHC,gBAAiB,QAAUL,GAAWC,GAAU,UAK5D3H,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,qBAEjB/D,KAAKuI,cAAcvB,IAEpBzG,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,oBAAoBzD,UAClCC,EAAAA,EAAAA,KAAA,QAAAD,SAAOI,IAAAA,eAAyB8F,QAGpCjG,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,mBAAoB,+BAA+BzD,SAChEsH,QA3BFD,EAgCnB,GAAC,CAAA9H,IAAA,kBAAAC,MAED,SAAgB2G,GAA2C,IAADhI,EAAA,KAChD+J,EAAgBxI,KAAKyI,cAAchC,GAEnCiC,EAAUC,IACZjF,OAAOC,KAAK6E,IACZ,SAACI,GAAS,QAAOA,KAAaC,EAAAA,GAAe,IAGjD,OACItI,EAAAA,EAAAA,KAAA,QAAiBN,UAAW8D,EAAE,KAAM,0BAA0BzD,SACzDwI,IAAKC,EAAAA,GAAqB5J,OAAOuJ,IAAU,SAACE,GAAe,IAADI,EACjDvC,EAAW+B,EAAcI,GAC/BK,EAAiD,QAAjDD,EAAwBH,EAAAA,GAAeD,UAAU,IAAAI,EAAAA,EAAI,CAACE,QAASN,GAAxDM,EAAOD,EAAPC,QAAShE,EAAI+D,EAAJ/D,KAEhB,OACIuB,GACAA,EAAS5H,SACLwB,EAAAA,EAAAA,MAAA,OAAqBJ,UAAW8D,EAAE,SAASzD,SAAA,EACvCC,EAAAA,EAAAA,KAAA,OACIN,UAAW8D,EACP,UACA,CAACoF,SAAU,SAAUjE,KAAM,KAC3BnB,EAAE,kBACJzD,SAED4I,KAEL3I,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,QAAQzD,SACrBwI,IAAKrC,GAAU,SAACO,GAAO,OAAKvI,EAAK2K,cAAcpC,EAAS9B,EAAK,QAX5D0D,EAgBtB,KAxBM,OA2BlB,GAAC,CAAA/I,IAAA,cAAAC,MAED,SAAY2G,GACR,IAAM4C,EAAgB,CAClBC,IAAK,eACLtG,MAAO,QACPuG,SAAS,EACTC,QAASC,EAAAA,GACTC,WAAY,SAAUxH,GAClB,OAAOA,EAAKiD,IAChB,EACAwE,YAAa,SAAUzH,IACnB0H,EAAAA,EAAAA,KAAuBxC,KAAK,IAADjI,OAAK+C,EAAKyF,IACzC,EACAkC,QAAS,CACLxE,MAAO,CACHyE,MAAO,CACHC,MAAO,SACPb,QAAS,GACT5B,MAAM,GAEVnC,KAAM,CACF5C,IAAK,SAAUyE,GACX,OAAOA,EAAQ7B,IACnB,EACAmC,MAAM,EACNyC,MAAO,QAEXvD,YAAa,CACTjE,IAAK,SAAUyE,GACX,OAAOA,EAAQR,WACnB,EACAc,MAAM,EACNyC,MAAO,QAEXtC,QAAS,CACLlF,IAAK,SAAUyE,GACX,MAAO,CAACA,EAAQS,QAAST,EAAQW,GACrC,EACAL,MAAM,EACNyC,MAAO,SAEXrC,OAAQ,CACJnF,IAAK,SAAUyE,GACX,MAAO,CAACA,EAAQU,OAAQV,EAAQW,GACpC,EACAL,MAAM,EACNyC,MAAO,UAEXvC,OAAQ,CACJjF,IAAK,SAAUyE,GACX,MAAO,CAACA,EAAQQ,OAAQR,EAAQW,GACpC,EACAL,MAAM,EACNyC,MAAO,WAGfC,KAAM,CACFC,QAAS,CACL5E,MAAO,CAAC,QAAS,OAAQ,cAAe,UAAW,SAAU,YAGrE6E,KAAM,WAEVzG,UAAW,CACP5D,IAAK,eACLwE,KAAM,CAAC,IAIR8F,EAAanK,KAAKV,MAAlB6K,UACDC,EAAQ1G,OAAOgC,OAAO,CAAC,EAAG2D,EAAe,CAC3ChE,MAAOgF,EAAAA,EAAM/C,KAAKb,EAAU0D,EAAWd,EAAcQ,QAAQxE,OAC7DwE,QAASnG,OAAOgC,OAAO,CAAC,EAAG2D,EAAcQ,WAG7C,OACItJ,EAAAA,EAAAA,KAAA,QAAiBN,UAAW8D,EAAE,KAAM,0BAA0BzD,UAC1DC,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,iBAAiBzD,UAC/BC,EAAAA,EAAAA,KAAC+J,EAAAA,GAAahJ,EAAAA,EAAAA,GAAA,GAAK8I,OAFjB,OAMlB,GAAC,CAAAvK,IAAA,qBAAAC,MAED,WACI,IAAMG,EAAY8D,EAAE,UAAW,CAACoF,SAAU,SAAUjE,KAAM,MAC1D,OACI3E,EAAAA,EAAAA,KAAA,QAAiBN,UAAW8D,EAAE,KAAM,0BAA0BzD,UAC1DC,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,UAAW9D,GAAWK,SAAC,yCADnC,OAIlB,GAAC,CAAAT,IAAA,SAAAC,MAED,WACI,IACIyK,EADJxK,EAA4CC,KAAKV,MAA1C4E,EAAQnE,EAARmE,SAAUK,EAAaxE,EAAbwE,cAAekC,EAAQ1G,EAAR0G,SAEhC,IACI8D,EAAS,IAAIC,OAAOjG,EAAe,IACvC,CAAE,MAAAkG,GAAO,CAET,IAAMC,EAAgB,SAACC,GACnB,MACqB,iBAAVA,IACNJ,EAASI,EAAMC,OAAOL,IAAW,EAAII,EAAME,QAAQtG,IAAkB,EAE9E,EAEMuG,EAAmBnC,IAAQlC,GAAU,SAAAsE,GACvC,MAAO,CADoCA,EAAFpD,GAAWoD,EAAPtD,QAAoBsD,EAAXvE,aACpBwE,KAAKN,EAC3C,IAEA,MAAiB,cAAbxG,GAA4B4G,EAAiBjM,OACtCmB,KAAKiL,gBAAgBH,GACR,UAAb5G,GAAwB4G,EAAiBjM,OACzCmB,KAAKkL,YAAYJ,GAChBA,EAAiBjM,OAGtB,KAFImB,KAAKmL,oBAGpB,KAAChF,CAAA,CAnQiB,CAASpF,EAAAA,WAgRzBiD,EAAqB,CACvBoC,qBFzRG,WACH,OAAO,SAACgF,GACJ,OAAOC,EAAAA,EACFC,QAAQ,CACLC,OAAQ,MACRC,IAAK,2BAERC,MAAK,SAAA9I,GAAa,IAAX0B,EAAI1B,EAAJ0B,KACJ+G,EAAS,CAACjH,KAAMuH,EAAAA,GAAuBC,QAAStH,KAAAA,GACpD,IAAE,OACK,WACH+G,EAAS,CAACjH,KAAMuH,EAAAA,GAAuBE,SAC3C,GACR,CACJ,EE4QItF,uBF1QG,WACH,OAAO,SAAC8E,GACJ,OAAOC,EAAAA,EACFC,QAAQ,CACLC,OAAQ,MACRC,IAAK,8BAERC,MAAK,SAAAxC,GAAa,IAAX5E,EAAI4E,EAAJ5E,KACJ+G,EAAS,CAACjH,KAAM0H,EAAAA,GAA0BF,QAAStH,KAAAA,GACvD,IAAE,OACK,WACH+G,EAAS,CAACjH,KAAM0H,EAAAA,GAA0BD,SAC9C,GACR,CACJ,EE6PIvF,yBF3PG,WACH,OAAO,SAAC+E,GACJ,OAAOU,EAAAA,EAAAA,MACFL,MAAK,SAAAV,GAAa,IAAX1G,EAAI0G,EAAJ1G,KACJ+G,EAAS,CAACjH,KAAM4H,EAAAA,GAA2BJ,QAAStH,KAAAA,GACxD,IAAE,OACK,WACH+G,EAAS,CAACjH,KAAM4H,EAAAA,GAA2BH,SAC/C,GACR,CACJ,GEsPA,SAFkBnH,EAAAA,EAAAA,KAhBlB,SAAyBC,GACrB,IAAAC,EAA4CD,EAAME,aAClD,MAAO,CACHV,SAFWS,EAART,SAGHK,cAH0BI,EAAbJ,cAIbkC,SAJoC9B,EAAR8B,SAK5B0D,UAAWzF,EAAMsH,OAAOvC,EAAAA,IAEhC,GAQ2CzF,EAE3C,CAAyBmC,G,cCjTzB,SAAS8F,IACL,IAAMjK,GAAQkK,EAAAA,EAAAA,KAAY,SAACxH,GAAK,OAAKA,EAAMI,OAAO9C,KAAK,IAEvD,OACI3B,EAAAA,EAAAA,MAAC8L,EAAAA,SAAQ,CAAA7L,SAAA,EACLC,EAAAA,EAAAA,KAAC6L,EAAAA,EAAQ,CAACpK,MAAOA,KACjBzB,EAAAA,EAAAA,KAAC8L,EAAkB,KACnB9L,EAAAA,EAAAA,KAAC4F,EAAgB,IAChBmG,EAAAA,GAAUC,oBAGvB,CAEA,QAAexL,EAAAA,KAAWkL,E,iQCJpBlI,GAAIhG,EAAAA,EAAAA,GAAM,gBAkCVyO,EAA6C,CAC/CC,iBAAkB,CAAC,EACnBC,eAAgB,IAAIC,KAOxB,SAASC,EAAQlI,EAA6BmI,GAC1C,OAAQA,EAAO1I,MACX,IAAK,oBACD,OAAA7C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAWoD,GAAK,IAAE+H,kBAAgBnL,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAMoD,EAAM+H,kBAAqBI,EAAOxI,QAC9E,IAAK,sBAED,OADAgD,IAASwF,EAAOxI,MAAM,SAACoB,GAAI,OAAKf,EAAMgI,eAAenJ,IAAIkC,EAAK,KAC9DnE,EAAAA,EAAAA,GAAA,GAAWoD,GACf,QACI,OAAOA,EAEnB,CAqCO,SAASY,EAAW3C,GAAkC,IAAhC4C,EAAU5C,EAAV4C,WAAYuH,EAASnK,EAATmK,UAC/BzH,EApCV,SAAsBA,GAClB,IAAA0H,EAAuDhM,EAAAA,WACnD6L,EACAJ,GACHQ,GAAAC,EAAAA,EAAAA,GAAAF,EAAA,GAAAG,EAAAF,EAAA,GAHOP,EAAgBS,EAAhBT,iBAAkBC,EAAcQ,EAAdR,eAAiBtB,EAAQ4B,EAAA,GAKnDG,EAAwBpM,EAAAA,SAAc,WAClC,OAAOqM,IAAW/H,GAAO,SAACnD,GACtB,OAAQA,EAAKmL,YAAcZ,EAAiBvK,EAAKuD,KACrD,GACJ,GAAG,CAACJ,EAAOoH,IAAkBa,GAAAL,EAAAA,EAAAA,GAAAE,EAAA,GAJtBI,EAAOD,EAAA,GAAEE,EAAIF,EAAA,GA0BpB,OApBAvM,EAAAA,WAAgB,WACZ,IAAM0M,EAAY9E,IAAQ6E,GAAM,SAACtL,GAAI,OAAMwK,EAAegB,IAAIxL,EAAKuD,KAAK,IAExE,GAAKgI,EAAU5O,OAAf,CAIAuM,EAAS,CAACjH,KAAM,sBAAuBE,KAAMyE,IAAK2E,GAAW,SAACvL,GAAI,OAAKA,EAAKuD,IAAI,MAChF,IAAMkI,EAAqC,CAAC,EAC5CC,QAAQC,IACJ/E,IAAK2E,GAAW,SAACvL,GACb,OAlEhB,SAAkCA,GAC9B,OAAKA,EAAKmL,YAIHS,EAAAA,EAAAA,IAAwB5L,EAAKmL,aAAc,CAC9CU,YAAa,wBAA0B7L,EAAKuD,KAC5CuI,kBAAkB,EAClBC,cAAc5N,EAAAA,EAAAA,MAAA,QAAAC,SAAA,CAAM,2BAAyB4B,EAAKuD,KAAK,UAEtDgG,MAAK,SAAC8B,GACH,OAAOA,CACX,IAAE,OACK,WACH,OAAO,CACX,IAbOK,QAAQM,SAAQ,EAc/B,CAkDuBC,CAAyBjM,GAAMuJ,MAAK,SAAC3L,GACxC6N,EAAUzL,EAAKuD,MAAQ3F,CAC3B,GACJ,KACF2L,MAAK,WACHL,EAAS,CAACjH,KAAM,oBAAqBE,KAAMsJ,GAC/C,GAZA,CAaJ,GAAG,CAACH,IAEGD,CACX,CAGkBa,CAAaC,EAAAA,IAC3BC,EAA2BvN,EAAAA,SACvB,kBAAMqM,IAAW/H,GAAO,SAAA4D,GAAM,OAAAA,EAAJxD,OAAmBF,CAAU,GAAC,GACxD,CAACF,EAAOE,IACXgJ,GAAAtB,EAAAA,EAAAA,GAAAqB,EAAA,GAHME,EAAKD,EAAA,GAAGE,GAAHxB,EAAAA,EAAAA,GAAAsB,EAAA,MAAU,GAKtB,OACIlO,EAAAA,EAAAA,MAACU,EAAAA,SAAc,CAAAT,SAAA,CACVwM,GAAa4B,QAAQD,KAAYlO,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,aAAazD,SAAEmO,EAAQxN,QAC3EV,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,QAAS,CAACf,MAAO,aAAa1C,UAC5CC,EAAAA,EAAAA,KAAA,MAAIN,UAAW8D,EAAE,cAAchG,EAAAA,EAAAA,GAAM,gBAANA,CAAuB,CAACoG,KAAM,cAAc7D,SACtEwI,IAAK0F,GAAO,SAACG,GAAI,OACdpO,EAAAA,EAAAA,KAAA,MAAAD,UACIC,EAAAA,EAAAA,KAACwC,EAAAA,EAAI,CAAC6L,OAAQD,EAAKC,OAAQpD,IAAKmD,EAAKlJ,KAAMxF,UAAW8D,EAAE,cAAczD,SACjEqO,EAAK1N,QAFL0N,EAAK1N,KAIT,SAIjBV,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,QAAS,CAACf,MAAO,cAAc1C,UAC7CC,EAAAA,EAAAA,KAACsO,EAAAA,EAAY,CACTC,WAAY,CAAC7O,UAAW8D,EAAE,UAC1BgL,UACI1O,EAAAA,EAAAA,MAAC2O,EAAAA,EAAM,CAAA1O,SAAA,CAAC,UAEJC,EAAAA,EAAAA,KAACK,EAAAA,EAAI,CAACC,QAAS,oBAGvBwE,MAAOyD,IAAKzD,GAAO,SAACnD,GAChB,OAAAZ,EAAAA,EAAAA,GAAA,CAAQuL,OAAM,WAAI,GAAM3K,EAC5B,IACAgD,KAAM,UAK1B,CAOA,SAAS+J,EAAUlE,GAAuE,IAArExF,EAAUwF,EAAVxF,WAAYuH,EAAS/B,EAAT+B,UAC7B,OACIvM,EAAAA,EAAAA,KAAA,OAAKN,UAAW8D,EAAE,SAAU,yBAAyBzD,UACjDC,EAAAA,EAAAA,KAAC+E,EAAW,CAACC,WAAYA,EAAYuH,UAAWA,KAG5D,CAEO,IAAMoC,EAAkBnO,EAAAA,KAAWkO,E,gHC5JnC,SAASE,EAA6BnI,EAAiBoI,GAC1D,OAAO9C,EAAAA,GAAU+C,oCAAoCrI,EAASoI,EAClE,CAEO,SAASE,EAA4BC,EAAgBvI,GACxD,IAAMwI,EAASxI,EAAO,IAAA7H,OAAO6H,EAAO,KAAM,GAC1C,MAAM,GAAN7H,OAAUqQ,GAAMrQ,OAAGsQ,EAAAA,GAAKC,oBAAmB,KAAAvQ,OAAIwQ,EAAAA,GAAWC,aAAY,QAAAzQ,OAAOoQ,EACjF,CAEA,SAASM,EAAuDC,EAASC,GACrE,OACID,EAAKE,oBAAsBD,EAAMC,mBACjCF,EAAKG,mBAAqBF,EAAME,iBAEzB,EAGJH,EAAKE,kBAAoBD,EAAMC,mBAEhCF,EAAKG,iBAAmBF,EAAME,kBAD7B,EAGC,CACZ,CAEO,IAAMC,EAAmB,SAAHvN,GAUtB,IATHwN,EAAOxN,EAAPwN,QACA/N,EAAMO,EAANP,OACAgO,EAAezN,EAAfyN,gBACA7Q,EAAKoD,EAALpD,MAOI8Q,EAAc,GAElBC,GAAkCC,EAAAA,EAAAA,IAAkBhR,GAA7CiR,EAAMF,EAANE,OAAQC,EAAeH,EAAfG,gBAEf,GAAe,sBAAXrO,EACAiO,GAASK,EAAAA,EAAAA,GAAIP,GAAS7I,KAAKuI,QACxB,GAAe,UAAXzN,EACPiO,GAASK,EAAAA,EAAAA,GAAIP,GAAS7I,MAAK,SAAA2B,EAAA8B,GAAA,IAAA4F,EAAA1H,EAAE2H,MAAOC,OAAC,IAAAF,EAAG,GAAEA,EAAAG,EAAA/F,EAAI6F,MAAOG,OAAC,IAAAD,EAAG,GAAEA,EAAA,OAAMD,EAAEhS,OAASkS,EAAElS,MAAM,SACjF,GAAIuR,EAAgB1C,IAAItL,GAC3B,OAAO4O,EAAAA,EAAAA,IAAuBb,EAAS,CAAC,CAACtQ,IAAKuC,EAAQoO,OAAAA,EAAQC,gBAAAA,KAGlE,OAAQlR,EAAiB0R,SAAS,OAASZ,EAASA,EAAOa,SAC/D,C","sources":["webpack://@ytsaurus/ui/./src/ui/components/SortIcon/SortIcon.tsx","webpack://@ytsaurus/ui/./src/ui/components/templates/utils.js","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/ClustersMenuHeader.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/clusters-menu.ts","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/Lock.js","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/ClustersMenuBody.tsx","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/ClustersMenu.js","webpack://@ytsaurus/ui/./src/ui/containers/ClustersMenu/HeaderLinks.tsx","webpack://@ytsaurus/ui/./src/ui/utils/tablet_cell_bundles/index.ts"],"sourcesContent":["import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport format from '../../common/hammer/format';\nimport Icon from '../../components/Icon/Icon';\nimport {Tooltip} from '../../components/Tooltip/Tooltip';\nimport {OrderType, nextSortOrderValue} from '../../utils/sort-helpers';\n\nimport './SortIcon.scss';\n\nconst block = cn('sort-icon');\n\nconst ICON_BY_TYPE = {\n ['']: 'sort',\n asc: 'sort-up',\n desc: 'sort-down',\n 'asc-undefined': 'arrow-to-bottom',\n 'desc-undefined': 'arrow-from-bottom',\n 'undefined-asc': 'arrow-from-top',\n 'undefined-desc': 'arrow-to-top',\n} as const;\n\ninterface Props {\n className?: string;\n label?: string;\n onChange?: (nextOrder: OrderType) => void;\n order?: OrderType;\n hidden?: boolean;\n allowUnordered?: boolean;\n withUndefined?: boolean;\n}\n\nexport default class SortIcon extends React.Component<Props> {\n onClick = () => {\n const {order, onChange, allowUnordered, withUndefined} = this.props;\n if (!onChange) {\n return;\n }\n\n const nextOrder = nextSortOrderValue(order, allowUnordered, withUndefined);\n onChange(nextOrder);\n };\n\n render() {\n const {className, label, order, hidden} = this.props;\n const icon = ICON_BY_TYPE[order || ''];\n\n return (\n <span className={block({hidden}, className)} onClick={this.onClick}>\n {label && <span className={block('label')}>{label}</span>}\n <Tooltip\n className={block('icon')}\n content={order ? format.ReadableField(order) : 'Unordered'}\n >\n <Icon awesome={icon} face=\"solid\" />\n </Tooltip>\n </span>\n );\n }\n}\n","import React from 'react';\nimport unipika from '../../common/thor/unipika';\nimport block from 'bem-cn-lite';\n\nimport Link from '../../components/Link/Link';\n\nimport hammer from '../../common/hammer';\nimport {showErrorPopup} from '../../utils/utils';\n\nimport './utils.scss';\n\nfunction wrapRenderMethods(templates) {\n return Object.keys(templates).reduce((newTemplates, key) => {\n newTemplates[key] = templates[key];\n\n return newTemplates;\n }, {});\n}\n\n/**\n * Template must be a scoped function, because they are bound to elements-table component instance\n * @param {ViewModel} item\n * @param {String} columnName\n */\nfunction defaultTemplate(item, columnName) {\n return String(hammer.format['ValueOrDefault'](item[columnName]));\n}\n\nfunction prepareTextProps(text, asHTML) {\n const props = {};\n\n if (asHTML) {\n // Need to render html strings\n props.dangerouslySetInnerHTML = {__html: text};\n } else {\n props.children = unipika.decode(String(text));\n }\n\n return props;\n}\n\nexport function renderText(text, settings = {}) {\n let className = block('elements-text');\n\n if (settings.mix) {\n className = className(\n false,\n block(settings.mix.block)(settings.mix.elem, {\n ...settings.mix.mods,\n }),\n );\n } else {\n className = className();\n }\n\n const textProps = prepareTextProps(text, settings.asHTML);\n\n const title = settings.title || text;\n\n return <span {...textProps} title={title} className={className} />;\n}\n\nexport function printColumnAsBytes(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Bytes'](column.get(item));\n}\n\nexport function printColumnAsNumber(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['Number'](column.get(item));\n}\n\nexport function printColumnAsTimeDurationWithMs(item, columnName) {\n const column = this.getColumn(columnName);\n return hammer.format['TimeDuration'](column.get(item), {\n format: 'milliseconds',\n });\n}\n\nexport function printColumnAsReadableField(item, columnName) {\n const column = this.getColumn(columnName);\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['ReadableField'](column.get(item))}\n </span>\n );\n}\n\nexport function printColumnAsTime(item, columnName) {\n const value = this?.getColumn ? this.getColumn(columnName).get(item) : item[columnName];\n return <ColumnAsTime value={value} />;\n}\n\nexport function ColumnAsTime({value}) {\n return (\n <span className=\"elements-ellipsis\">\n {hammer.format['DateTime'](value, {format: 'full'})}\n </span>\n );\n}\n\nexport function printColumnAsError(error) {\n const showError = () => {\n showErrorPopup(error, {hideOopsMsg: true});\n };\n return typeof error === 'object' ? (\n <Link theme=\"ghost\" onClick={showError}>\n View\n </Link>\n ) : (\n hammer.format.NO_VALUE\n );\n}\n\n// Using prepared table data\nexport function asBytes(item, columnName) {\n return hammer.format['Bytes'](item[columnName]);\n}\n\nexport function asNumber(item, columnName) {\n return hammer.format['Number'](item[columnName]);\n}\n\nexport default {\n __default__: defaultTemplate,\n _templates: {},\n add: function (templateId, templates) {\n this._templates[templateId] = wrapRenderMethods(templates);\n },\n get: function (templateId) {\n return this._templates[templateId] || {};\n },\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\nimport {ConnectedProps, connect} from 'react-redux';\n\nimport Filter from '../../components/Filter/Filter';\nimport RadioButton from '../../components/RadioButton/RadioButton';\nimport {updateFilter, updateViewMode} from '../../store/actions/clusters-menu';\nimport {HeaderLinks} from '../../containers/ClustersMenu/HeaderLinks';\nimport {LINKS_ITEM_CLUSTERS} from '../../containers/ClustersMenu/header-links-items';\nimport {RootState} from '../../store/reducers';\n\nimport './ClusterMenuHeader.scss';\n\nconst b = block('cluster-menu');\n\nClustersMenuHeader.propTypes = {\n clusterFilter: PropTypes.string,\n viewMode: PropTypes.oneOf(['dashboard', 'table']).isRequired,\n updateFilter: PropTypes.func.isRequired,\n updateViewMode: PropTypes.func.isRequired,\n login: PropTypes.string,\n};\n\ntype Props = ConnectedProps<typeof connector>;\n\nfunction ClustersMenuHeader({viewMode, updateViewMode, clusterFilter, updateFilter}: Props) {\n return (\n <header className={b('header', 'elements-page__header')}>\n <div className={b('header-inner')}>\n <div className={b('filter')}>\n <div className=\"elements-filter\">\n <Filter\n value={clusterFilter}\n placeholder=\"Filter clusters\"\n onChange={updateFilter}\n />\n </div>\n </div>\n <div className={b('view')}>\n <RadioButton<'table' | 'dashboard'>\n size=\"m\"\n name=\"cluster-menu-mode\"\n value={viewMode}\n onUpdate={(value) => updateViewMode(value)}\n items={[\n {\n value: 'table',\n text: '',\n icon: {awesome: 'list'},\n },\n {\n value: 'dashboard',\n text: '',\n icon: {awesome: 'table'},\n },\n ]}\n />\n </div>\n\n <HeaderLinks currentUrl={LINKS_ITEM_CLUSTERS.href} />\n </div>\n </header>\n );\n}\n\nfunction mapStateToProps(state: RootState) {\n const {viewMode, clusterFilter} = state.clustersMenu;\n const {login} = state.global;\n return {\n viewMode,\n clusterFilter,\n login,\n };\n}\n\nconst mapDispatchToProps = {\n updateViewMode,\n updateFilter,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(ClustersMenuHeader);\n","import axios from 'axios';\nimport {\n CLUSTERS_MENU_UPDATE_FILTER,\n CLUSTERS_MENU_UPDATE_VIEWMODE,\n FETCH_CLUSTER_AUTH_STATUS,\n FETCH_CLUSTER_AVAILABILITY,\n FETCH_CLUSTER_VERSIONS,\n} from '../../constants/index';\nimport {fetchClustersAvailability} from '../../pages/odin/odin-utils';\nimport {\n ClustersMenuAction,\n ClustersMenuState,\n} from '../../store/reducers/clusters-menu/clusters-menu';\nimport {ThunkAction} from 'redux-thunk';\nimport {RootState} from '../../store/reducers';\n\nexport function updateViewMode(viewMode: ClustersMenuState['viewMode']) {\n return {type: CLUSTERS_MENU_UPDATE_VIEWMODE, data: viewMode};\n}\n\nexport function updateFilter(clusterFilter: ClustersMenuState['clusterFilter']) {\n return {type: CLUSTERS_MENU_UPDATE_FILTER, data: clusterFilter};\n}\n\ntype ClusterMenuThunkAction = ThunkAction<void, RootState, unknown, ClustersMenuAction>;\n\nexport function fetchClusterVersions(): ClusterMenuThunkAction {\n return (dispatch) => {\n return axios\n .request({\n method: 'get',\n url: '/api/clusters/versions',\n })\n .then(({data}) => {\n dispatch({type: FETCH_CLUSTER_VERSIONS.SUCCESS, data});\n })\n .catch(() => {\n dispatch({type: FETCH_CLUSTER_VERSIONS.FAILURE});\n });\n };\n}\n\nexport function fetchClusterAuthStatus(): ClusterMenuThunkAction {\n return (dispatch) => {\n return axios\n .request({\n method: 'get',\n url: '/api/clusters/auth-status',\n })\n .then(({data}) => {\n dispatch({type: FETCH_CLUSTER_AUTH_STATUS.SUCCESS, data});\n })\n .catch(() => {\n dispatch({type: FETCH_CLUSTER_AUTH_STATUS.FAILURE});\n });\n };\n}\n\nexport function fetchClusterAvailability(): ClusterMenuThunkAction {\n return (dispatch) => {\n return fetchClustersAvailability()\n .then(({data}) => {\n dispatch({type: FETCH_CLUSTER_AVAILABILITY.SUCCESS, data});\n })\n .catch(() => {\n dispatch({type: FETCH_CLUSTER_AVAILABILITY.FAILURE});\n });\n };\n}\n","import * as React from 'react';\nconst Lock = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M10.5 6V5a2.5 2.5 0 0 0-5 0v1h5ZM4 5v1a3 3 0 0 0-3 3v3a3 3 0 0 0 3 3h8a3 3 0 0 0 3-3V9a3 3 0 0 0-3-3V5a4 4 0 0 0-8 0Zm6.5 2.5H12A1.5 1.5 0 0 1 13.5 9v3a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 12V9A1.5 1.5 0 0 1 4 7.5h6.5Zm-1.75 2a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0v-2Z\", clipRule: \"evenodd\" })));\nexport default Lock;\n","import React from 'react';\nimport {ConnectedProps, connect} from 'react-redux';\nimport block from 'bem-cn-lite';\nimport {Link} from 'react-router-dom';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport reduce_ from 'lodash/reduce';\nimport {Lock} from '@gravity-ui/icons';\n\n// @ts-ignore\nimport format from '@ytsaurus/interface-helpers/lib/hammer/format';\n\nimport {CLUSTER_GROUPS, CLUSTER_GROUPS_ORDER, DEFAULT_GROUP} from '../../constants/cluster-menu';\nimport {utils} from '../../common/hammer/utils';\nimport ElementsTable from '../../components/ElementsTable/ElementsTable';\nimport {\n fetchClusterAuthStatus,\n fetchClusterAvailability,\n fetchClusterVersions,\n} from '../../store/actions/clusters-menu';\nimport {CLUSTER_MENU_TABLE_ID} from '../../constants/tables';\nimport {getClusterAppearance} from '../../appearance';\nimport {YT} from '../../config/yt-config';\nimport './ClusterMenuBody.scss';\nimport {RootState} from '../../store/reducers';\nimport {ClusterConfigWithStatus} from '../../store/reducers/clusters-menu/clusters-menu';\nimport {getAppBrowserHistory} from '../../store/window-store';\n\nconst b = block('cluster-menu');\n\ntype Props = ConnectedProps<typeof connector>;\n\nclass ClustersMenuBody extends React.Component<Props> {\n componentDidMount() {\n const {fetchClusterVersions, fetchClusterAvailability, fetchClusterAuthStatus} = this.props;\n\n fetchClusterVersions();\n fetchClusterAuthStatus();\n if (YT.environment !== 'localmode') {\n fetchClusterAvailability();\n }\n }\n\n prepareGroups(clusters: Array<ClusterConfigWithStatus>) {\n function sortByClusterName<T extends {name: string}>(clusterA: T, clusterB: T) {\n return clusterA.name > clusterB.name ? 1 : -1;\n }\n\n const groups = reduce_(\n clusters,\n (acc, cluster) => {\n const currentGroup = cluster.group || DEFAULT_GROUP;\n acc[currentGroup] = acc[currentGroup] || [];\n acc[currentGroup].push(cluster);\n return acc;\n },\n {} as Record<string, Array<ClusterConfigWithStatus>>,\n );\n\n forEach_(groups, (clusters) => {\n clusters.sort(sortByClusterName);\n });\n\n return groups;\n }\n\n renderVersion({loadState, access, version, status}: ClusterConfigWithStatus) {\n let title;\n let text: typeof version = '—';\n if (loadState === 'loaded') {\n if (access === 'granted') {\n title = `Current cluster version: ${version}`;\n text = version;\n } else if (access === 'none' && status === 'available') {\n title = 'Please refer to Getting Started for more details';\n text = 'No access';\n } else if (access === 'none' && status !== 'available') {\n title = 'Could not load version, cluster is unavailable';\n }\n } else {\n title = 'Please wait, loading cluster version';\n }\n return (\n <div className={b('item-version')} title={title}>\n {text}\n </div>\n );\n }\n\n renderCluster(cluster: ClusterConfigWithStatus, size?: 'l') {\n const {status, access, id, name, environment, description, theme, authorized} = cluster;\n const className = b('item', {\n state: status,\n access: status === 'available' && access,\n size,\n });\n\n const clusterTheme = theme ? `cluster-color_theme_${theme}` : 'cluster-color';\n const {iconbig, icon2x} = getClusterAppearance(id);\n\n return (\n <Link key={id} className={className} to={'/' + id}>\n <div className={b('item-body')}>\n {authorized ? null : (\n <span className={b('item-auth-status')}>\n <Lock />\n </span>\n )}\n <div className={b('item-heading')}>{name}</div>\n\n <div className={b('item-image-wrapper')}>\n <div\n className={b('item-image', clusterTheme)}\n style={{\n backgroundImage: 'url(' + (iconbig || icon2x) + ')',\n }}\n />\n </div>\n\n <div className={b('item-image-veil')} />\n\n {this.renderVersion(cluster)}\n\n <div className={b('item-environment')}>\n <span>{format['ValueOrDefault'](environment)}</span>\n </div>\n\n <div className={b('item-description', 'elements-multiline-ellipsis')}>\n {description}\n </div>\n </div>\n </Link>\n );\n }\n\n renderDashboard(clusters: Array<ClusterConfigWithStatus>) {\n const clusterGroups = this.prepareGroups(clusters);\n\n const unknown = filter_(\n Object.keys(clusterGroups),\n (groupName) => !(groupName in CLUSTER_GROUPS),\n );\n\n return (\n <main key=\"body\" className={b(null, 'elements-page__content')}>\n {map_(CLUSTER_GROUPS_ORDER.concat(unknown), (groupName) => {\n const clusters = clusterGroups[groupName];\n const {caption, size} = CLUSTER_GROUPS[groupName] ?? {caption: groupName};\n\n return (\n clusters &&\n clusters.length && (\n <div key={groupName} className={b('group')}>\n <div\n className={b(\n 'heading',\n {position: 'center', size: 'l'},\n b('group-heading'),\n )}\n >\n {caption}\n </div>\n <div className={b('list')}>\n {map_(clusters, (cluster) => this.renderCluster(cluster, size))}\n </div>\n </div>\n )\n );\n })}\n </main>\n );\n }\n\n renderTable(clusters: Array<ClusterConfigWithStatus>) {\n const tableSettings = {\n css: 'cluster-menu',\n theme: 'light',\n striped: true,\n tableId: CLUSTER_MENU_TABLE_ID,\n computeKey: function (item: {name: string}) {\n return item.name;\n },\n onItemClick: function (item: {id: string}) {\n getAppBrowserHistory().push(`/${item.id}`);\n },\n columns: {\n items: {\n image: {\n align: 'center',\n caption: '',\n sort: false,\n },\n name: {\n get: function (cluster: ClusterConfigWithStatus) {\n return cluster.name;\n },\n sort: true,\n align: 'left',\n },\n environment: {\n get: function (cluster: ClusterConfigWithStatus) {\n return cluster.environment;\n },\n sort: true,\n align: 'left',\n },\n version: {\n get: function (cluster: ClusterConfigWithStatus) {\n return [cluster.version, cluster.id];\n },\n sort: true,\n align: 'right',\n },\n status: {\n get: function (cluster: ClusterConfigWithStatus) {\n return [cluster.status, cluster.id];\n },\n sort: true,\n align: 'center',\n },\n access: {\n get: function (cluster: ClusterConfigWithStatus) {\n return [cluster.access, cluster.id];\n },\n sort: true,\n align: 'center',\n },\n },\n sets: {\n default: {\n items: ['image', 'name', 'environment', 'version', 'status', 'access'],\n },\n },\n mode: 'default',\n },\n templates: {\n key: 'cluster-menu',\n data: {},\n },\n };\n\n const {sortState} = this.props;\n const table = Object.assign({}, tableSettings, {\n items: utils.sort(clusters, sortState, tableSettings.columns.items),\n columns: Object.assign({}, tableSettings.columns),\n });\n\n return (\n <main key=\"body\" className={b(null, 'elements-page__content')}>\n <div className={b('table-wrapper')}>\n <ElementsTable {...table} />\n </div>\n </main>\n );\n }\n\n renderEmptyContent() {\n const className = b('heading', {position: 'center', size: 'l'});\n return (\n <main key=\"body\" className={b(null, 'elements-page__content')}>\n <div className={b('message', className)}>No clusters matching your selection</div>\n </main>\n );\n }\n\n render() {\n const {viewMode, clusterFilter, clusters} = this.props;\n let regexp: RegExp | undefined;\n try {\n regexp = new RegExp(clusterFilter, 'i');\n } catch {}\n\n const filterByField = (field?: string) => {\n return (\n typeof field === 'string' &&\n (regexp ? field.search(regexp) > -1 : field.indexOf(clusterFilter) > -1)\n );\n };\n\n const filteredClusters = filter_(clusters, ({id, version, environment}) => {\n return [id, version, environment].some(filterByField);\n });\n\n if (viewMode === 'dashboard' && filteredClusters.length) {\n return this.renderDashboard(filteredClusters);\n } else if (viewMode === 'table' && filteredClusters.length) {\n return this.renderTable(filteredClusters);\n } else if (!filteredClusters.length) {\n return this.renderEmptyContent();\n }\n return null;\n }\n}\n\nfunction mapStateToProps(state: RootState) {\n const {viewMode, clusterFilter, clusters} = state.clustersMenu;\n return {\n viewMode,\n clusterFilter,\n clusters,\n sortState: state.tables[CLUSTER_MENU_TABLE_ID],\n };\n}\n\nconst mapDispatchToProps = {\n fetchClusterVersions,\n fetchClusterAuthStatus,\n fetchClusterAvailability,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default connector(ClustersMenuBody);\n","import React, {Fragment} from 'react';\nimport {useSelector} from 'react-redux';\n\nimport PageHead from '../../components/PageHead/PageHead';\n\nimport ClustersMenuHeader from './ClustersMenuHeader';\nimport ClustersMenuBody from './ClustersMenuBody';\nimport UIFactory from '../../UIFactory';\n\nfunction ClustersMenu() {\n const title = useSelector((state) => state.global.title);\n\n return (\n <Fragment>\n <PageHead title={title} />\n <ClustersMenuHeader />\n <ClustersMenuBody />\n {UIFactory.renderAppFooter()}\n </Fragment>\n );\n}\n\nexport default React.memo(ClustersMenu);\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport block from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\nimport partition_ from 'lodash/partition';\n\nimport Link from '../../components/Link/Link';\nimport './ClusterMenuHeader.scss';\nimport {DropdownMenu} from '@gravity-ui/uikit';\nimport Button from '../../components/Button/Button';\nimport Icon from '../../components/Icon/Icon';\nimport {ALL_LINKS_ITEMS, HeaderLinkItem} from './header-links-items';\nimport {wrapApiPromiseByToaster} from '../../utils/utils';\nimport {ActionD} from '../../types';\n\nconst b = block('cluster-menu');\n\nHeaderLinks.propTypes = {\n currentUrl: PropTypes.string,\n showTitle: PropTypes.bool,\n};\n\ninterface Props {\n currentUrl?: string;\n showTitle?: boolean;\n}\n\nfunction getItemVisibilityOrFalse(item: HeaderLinkItem) {\n if (!item.getVisible) {\n return Promise.resolve(false);\n }\n\n return wrapApiPromiseByToaster(item.getVisible(), {\n toasterName: 'link_item_visibility_' + item.href,\n skipSuccessToast: true,\n errorContent: <span>Cannot get visibity for {item.href}. </span>,\n })\n .then((visible) => {\n return visible;\n })\n .catch(() => {\n return false;\n });\n}\n\ninterface LinksVisibilityState {\n visibilityByHref: {[href: string]: boolean};\n requestedHrefs: Set<string>;\n}\nconst linksVisibilityState: LinksVisibilityState = {\n visibilityByHref: {},\n requestedHrefs: new Set(),\n};\n\ntype LinksVisibilityAction =\n | ActionD<'add-visible-items', LinksVisibilityState['visibilityByHref']>\n | ActionD<'add-requested-hrefs', Array<string>>;\n\nfunction reducer(state: LinksVisibilityState, action: LinksVisibilityAction) {\n switch (action.type) {\n case 'add-visible-items':\n return {...state, visibilityByHref: {...state.visibilityByHref, ...action.data}};\n case 'add-requested-hrefs':\n forEach_(action.data, (href) => state.requestedHrefs.add(href));\n return {...state};\n default:\n return state;\n }\n}\n\nfunction useLinkItems(items: Array<HeaderLinkItem>) {\n const [{visibilityByHref, requestedHrefs}, dispatch] = React.useReducer(\n reducer,\n linksVisibilityState,\n );\n\n const [visible, rest] = React.useMemo(() => {\n return partition_(items, (item) => {\n return !item.getVisible || visibilityByHref[item.href];\n });\n }, [items, visibilityByHref]);\n\n React.useEffect(() => {\n const toRequest = filter_(rest, (item) => !requestedHrefs.has(item.href));\n\n if (!toRequest.length) {\n return;\n }\n\n dispatch({type: 'add-requested-hrefs', data: map_(toRequest, (item) => item.href)});\n const collected: typeof visibilityByHref = {};\n Promise.all(\n map_(toRequest, (item) => {\n return getItemVisibilityOrFalse(item).then((value) => {\n collected[item.href] = value;\n });\n }),\n ).then(() => {\n dispatch({type: 'add-visible-items', data: collected});\n });\n }, [rest]);\n\n return visible;\n}\n\nexport function HeaderLinks({currentUrl, showTitle}: Props) {\n const items = useLinkItems(ALL_LINKS_ITEMS);\n const [other, [current]] = React.useMemo(\n () => partition_(items, ({href}) => href !== currentUrl),\n [items, currentUrl],\n );\n\n return (\n <React.Fragment>\n {showTitle && Boolean(current) && <div className={b('page-name')}>{current.text}</div>}\n <div className={b('links', {theme: 'expanded'})}>\n <ul className={b('links-list', block('elements-list')({type: 'unstyled'}))}>\n {map_(other, (link) => (\n <li key={link.text}>\n <Link routed={link.routed} url={link.href} className={b('links-item')}>\n {link.text}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n <div className={b('links', {theme: 'collapsed'})}>\n <DropdownMenu\n popupProps={{className: b('popup')}}\n switcher={\n <Button>\n Links \n <Icon awesome={'chevron-down'} />\n </Button>\n }\n items={map_(items, (item) => {\n return {action() {}, ...item};\n })}\n size={'l'}\n />\n </div>\n </React.Fragment>\n );\n}\n\nHeaderImpl.propTypes = {\n // own Props\n currentUrl: PropTypes.string,\n};\n\nfunction HeaderImpl({currentUrl, showTitle}: {currentUrl?: string; showTitle?: boolean}) {\n return (\n <div className={b('header', 'elements-page__header')}>\n <HeaderLinks currentUrl={currentUrl} showTitle={showTitle} />\n </div>\n );\n}\n\nexport const HeaderWithLinks = React.memo(HeaderImpl);\n","import UIFactory from '../../UIFactory';\nimport {Page} from '../../constants';\nimport {TabletsTab} from '../../constants/tablets';\nimport {OrderType, multiSortWithUndefined, orderTypeToOrderK} from '../sort-helpers';\n\nexport function tabletCellBundleDashboardUrl(cluster: string, bundle: string) {\n return UIFactory.makeUrlForTabletCellBundleDashboard(cluster, bundle);\n}\n\nexport function genTabletCellBundlesCellUrl(cellId: string, cluster?: string) {\n const prefix = cluster ? `/${cluster}/` : '';\n return `${prefix}${Page.TABLET_CELL_BUNDLES}/${TabletsTab.TABLET_CELLS}?id=${cellId}`;\n}\n\nfunction compareBundlesByAccount<T extends Record<string, any>>(left: T, right: T) {\n if (\n left.changelog_account === right.changelog_account &&\n left.snapshot_account === right.snapshot_account\n ) {\n return 0;\n }\n\n return left.changelog_account < right.changelog_account\n ? -1\n : left.snapshot_account < right.snapshot_account\n ? -1\n : 1;\n}\n\nexport const sortTableBundles = <T extends Record<string, any>>({\n bundles,\n column,\n columnsSortable,\n order,\n}: {\n bundles: T[];\n column: keyof T;\n columnsSortable: Set<string>;\n order: OrderType;\n}) => {\n let sorted: T[] = [];\n\n const {orderK, undefinedOrderK} = orderTypeToOrderK(order);\n\n if (column === 'changelog_account') {\n sorted = [...bundles].sort(compareBundlesByAccount);\n } else if (column === 'nodes') {\n sorted = [...bundles].sort(({nodes: l = []}, {nodes: r = []}) => l.length - r.length);\n } else if (columnsSortable.has(column as string)) {\n return multiSortWithUndefined(bundles, [{key: column, orderK, undefinedOrderK}]);\n }\n\n return (order as string).includes('asc') ? sorted : sorted.reverse();\n};\n"],"names":["block","cn","ICON_BY_TYPE","_ICON_BY_TYPE","_defineProperty","SortIcon","_React$Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","concat","onClick","_this$props","props","order","onChange","allowUnordered","withUndefined","nextSortOrderValue","_createClass","key","value","_this$props2","this","className","label","hidden","icon","_jsxs","children","_jsx","Tooltip","content","format","ReadableField","Icon","awesome","face","React","renderText","text","settings","undefined","mix","elem","_objectSpread","mods","textProps","asHTML","dangerouslySetInnerHTML","__html","unipika","decode","String","prepareTextProps","title","printColumnAsTimeDurationWithMs","item","columnName","column","getColumn","hammer","get","printColumnAsReadableField","printColumnAsTime","ColumnAsTime","_ref","printColumnAsError","error","_typeof","Link","theme","showErrorPopup","hideOopsMsg","NO_VALUE","asNumber","__default__","_templates","add","templateId","templates","Object","keys","reduce","newTemplates","wrapRenderMethods","b","mapDispatchToProps","updateViewMode","viewMode","type","CLUSTERS_MENU_UPDATE_VIEWMODE","data","updateFilter","clusterFilter","CLUSTERS_MENU_UPDATE_FILTER","connect","state","_state$clustersMenu","clustersMenu","login","global","Filter","placeholder","RadioButton","size","name","onUpdate","items","HeaderLinks","currentUrl","LINKS_ITEM_CLUSTERS","href","assign","xmlns","width","height","fill","viewBox","fillRule","d","clipRule","ClustersMenuBody","fetchClusterVersions","fetchClusterAvailability","fetchClusterAuthStatus","YT","environment","clusters","sortByClusterName","clusterA","clusterB","groups","reduce_","acc","cluster","currentGroup","group","DEFAULT_GROUP","push","forEach_","sort","loadState","access","version","status","id","description","authorized","clusterTheme","_getClusterAppearance","getClusterAppearance","iconbig","icon2x","to","Lock","style","backgroundImage","renderVersion","clusterGroups","prepareGroups","unknown","filter_","groupName","CLUSTER_GROUPS","map_","CLUSTER_GROUPS_ORDER","_CLUSTER_GROUPS$group","_ref2","caption","position","renderCluster","tableSettings","css","striped","tableId","CLUSTER_MENU_TABLE_ID","computeKey","onItemClick","getAppBrowserHistory","columns","image","align","sets","default","mode","sortState","table","utils","ElementsTable","regexp","RegExp","_unused","filterByField","field","search","indexOf","filteredClusters","_ref3","some","renderDashboard","renderTable","renderEmptyContent","dispatch","axios","request","method","url","then","FETCH_CLUSTER_VERSIONS","SUCCESS","FAILURE","FETCH_CLUSTER_AUTH_STATUS","fetchClustersAvailability","FETCH_CLUSTER_AVAILABILITY","tables","ClustersMenu","useSelector","Fragment","PageHead","ClustersMenuHeader","UIFactory","renderAppFooter","linksVisibilityState","visibilityByHref","requestedHrefs","Set","reducer","action","showTitle","_React$useReducer","_React$useReducer2","_slicedToArray","_React$useReducer2$","_React$useMemo","partition_","getVisible","_React$useMemo2","visible","rest","toRequest","has","collected","Promise","all","wrapApiPromiseByToaster","toasterName","skipSuccessToast","errorContent","resolve","getItemVisibilityOrFalse","useLinkItems","ALL_LINKS_ITEMS","_React$useMemo3","_React$useMemo4","other","current","Boolean","link","routed","DropdownMenu","popupProps","switcher","Button","HeaderImpl","HeaderWithLinks","tabletCellBundleDashboardUrl","bundle","makeUrlForTabletCellBundleDashboard","genTabletCellBundlesCellUrl","cellId","prefix","Page","TABLET_CELL_BUNDLES","TabletsTab","TABLET_CELLS","compareBundlesByAccount","left","right","changelog_account","snapshot_account","sortTableBundles","bundles","columnsSortable","sorted","_orderTypeToOrderK","orderTypeToOrderK","orderK","undefinedOrderK","_toConsumableArray","_ref2$nodes","nodes","l","_ref3$nodes","r","multiSortWithUndefined","includes","reverse"],"sourceRoot":""}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
"use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[8367],{477:(e,t,n)=>{n.d(t,{A:()=>i}),n(77810);var r=n(76872),a=n(64922),s=(0,r.A)("cluster-icon");function i(e){var t=e.icon,n=e.className,r=e.forwardRef,i=e.name,o=i?i.substring(0,2).toUpperCase():"YT";return(0,a.jsx)("div",{className:s("wrapper",n),ref:r,children:t?(0,a.jsx)("img",{src:t}):(0,a.jsx)("span",{className:s("placeholder"),children:o})})}},46493:(e,t,n)=>{n.d(t,{A:()=>j});var r=n(92547),a=n(29121),s=n(12937),i=n(10785),o=n(26718),c=n(77810),u=n(76872),l="undefined"!=typeof window?window:null,p=null===l,d=p?void 0:l.document,f="addEventListener",h="removeEventListener",m="getBoundingClientRect",A="_a",v="_b",T="_c",N="horizontal",S=function(){return!1},E=p?"calc":["","-webkit-","-moz-","-o-"].filter((function(e){var t=d.createElement("div");return t.style.cssText="width:"+e+"calc(9px)",!!t.style.length})).shift()+"calc",g=function(e){return"string"==typeof e||e instanceof String},I=function(e){if(g(e)){var t=d.querySelector(e);if(!t)throw new Error("Selector "+e+" did not match a DOM element");return t}return e},x=function(e,t,n){var r=e[t];return void 0!==r?r:n},C=function(e,t,n,r){if(t){if("end"===r)return 0;if("center"===r)return e/2}else if(n){if("start"===r)return 0;if("center"===r)return e/2}return e},y=function(e,t){var n=d.createElement("div");return n.className="gutter gutter-"+t,n},O=function(e,t,n){var r={};return g(t)?r[e]=t:r[e]=E+"("+t+"% - "+n+"px)",r},_=function(e,t){var n;return(n={})[e]=t+"px",n};const w=function(e,t){if(void 0===t&&(t={}),p)return{};var n,r,a,s,i,o,c=e;Array.from&&(c=Array.from(c));var u=I(c[0]).parentNode,E=getComputedStyle?getComputedStyle(u):null,g=E?E.flexDirection:null,w=x(t,"sizes")||c.map((function(){return 100/c.length})),b=x(t,"minSize",100),R=Array.isArray(b)?b:c.map((function(){return b})),k=x(t,"maxSize",1/0),j=Array.isArray(k)?k:c.map((function(){return k})),P=x(t,"expandToMin",!1),z=x(t,"gutterSize",10),L=x(t,"gutterAlign","center"),B=x(t,"snapOffset",30),D=Array.isArray(B)?B:c.map((function(){return B})),U=x(t,"dragInterval",1),V=x(t,"direction",N),G=x(t,"cursor",V===N?"col-resize":"row-resize"),M=x(t,"gutter",y),Y=x(t,"elementStyle",O),W=x(t,"gutterStyle",_);function q(e,t,r,a){var s=Y(n,t,r,a);Object.keys(s).forEach((function(t){e.style[t]=s[t]}))}function F(){return o.map((function(e){return e.size}))}function H(e){return"touches"in e?e.touches[0][r]:e[r]}function Z(e){var t=o[this.a],n=o[this.b],r=t.size+n.size;t.size=e/this.size*r,n.size=r-e/this.size*r,q(t.element,t.size,this[v],t.i),q(n.element,n.size,this[T],n.i)}function K(e){var n,r=o[this.a],a=o[this.b];this.dragging&&(n=H(e)-this.start+(this[v]-this.dragOffset),U>1&&(n=Math.round(n/U)*U),n<=r.minSize+r.snapOffset+this[v]?n=r.minSize+this[v]:n>=this.size-(a.minSize+a.snapOffset+this[T])&&(n=this.size-(a.minSize+this[T])),n>=r.maxSize-r.snapOffset+this[v]?n=r.maxSize+this[v]:n<=this.size-(a.maxSize-a.snapOffset+this[T])&&(n=this.size-(a.maxSize+this[T])),Z.call(this,n),x(t,"onDrag",S)(F()))}function Q(){var e=o[this.a].element,t=o[this.b].element,r=e[m](),i=t[m]();this.size=r[n]+i[n]+this[v]+this[T],this.start=r[a],this.end=r[s]}function X(e){var t=function(e){if(!getComputedStyle)return null;var t=getComputedStyle(e);if(!t)return null;var n=e[i];return 0===n?null:n-=V===N?parseFloat(t.paddingLeft)+parseFloat(t.paddingRight):parseFloat(t.paddingTop)+parseFloat(t.paddingBottom)}(u);if(null===t)return e;if(R.reduce((function(e,t){return e+t}),0)>t)return e;var n=0,r=[],a=e.map((function(a,s){var i=t*a/100,o=C(z,0===s,s===e.length-1,L),c=R[s]+o;return i<c?(n+=c-i,r.push(0),c):(r.push(i-c),i)}));return 0===n?e:a.map((function(e,a){var s=e;if(n>0&&r[a]-n>0){var i=Math.min(n,r[a]-n);n-=i,s=e-i}return s/t*100}))}function J(){var e=this,n=o[e.a].element,r=o[e.b].element;e.dragging&&x(t,"onDragEnd",S)(F()),e.dragging=!1,l[h]("mouseup",e.stop),l[h]("touchend",e.stop),l[h]("touchcancel",e.stop),l[h]("mousemove",e.move),l[h]("touchmove",e.move),e.stop=null,e.move=null,n[h]("selectstart",S),n[h]("dragstart",S),r[h]("selectstart",S),r[h]("dragstart",S),n.style.userSelect="",n.style.webkitUserSelect="",n.style.MozUserSelect="",n.style.pointerEvents="",r.style.userSelect="",r.style.webkitUserSelect="",r.style.MozUserSelect="",r.style.pointerEvents="",e.gutter.style.cursor="",e.parent.style.cursor="",d.body.style.cursor=""}function $(e){if(!("button"in e)||0===e.button){var n=this,r=o[n.a].element,a=o[n.b].element;n.dragging||x(t,"onDragStart",S)(F()),e.preventDefault(),n.dragging=!0,n.move=K.bind(n),n.stop=J.bind(n),l[f]("mouseup",n.stop),l[f]("touchend",n.stop),l[f]("touchcancel",n.stop),l[f]("mousemove",n.move),l[f]("touchmove",n.move),r[f]("selectstart",S),r[f]("dragstart",S),a[f]("selectstart",S),a[f]("dragstart",S),r.style.userSelect="none",r.style.webkitUserSelect="none",r.style.MozUserSelect="none",r.style.pointerEvents="none",a.style.userSelect="none",a.style.webkitUserSelect="none",a.style.MozUserSelect="none",a.style.pointerEvents="none",n.gutter.style.cursor=G,n.parent.style.cursor=G,d.body.style.cursor=G,Q.call(n),n.dragOffset=H(e)-n.end}}V===N?(n="width",r="clientX",a="left",s="right",i="clientWidth"):"vertical"===V&&(n="height",r="clientY",a="top",s="bottom",i="clientHeight"),w=X(w);var ee=[];function te(e){var t=e.i===ee.length,n=t?ee[e.i-1]:ee[e.i];Q.call(n);var r=t?n.size-e.minSize-n[T]:e.minSize+n[v];Z.call(n,r)}return(o=c.map((function(e,t){var r,a={element:I(e),size:w[t],minSize:R[t],maxSize:j[t],snapOffset:D[t],i:t};if(t>0&&((r={a:t-1,b:t,dragging:!1,direction:V,parent:u})[v]=C(z,t-1==0,!1,L),r[T]=C(z,!1,t===c.length-1,L),"row-reverse"===g||"column-reverse"===g)){var s=r.a;r.a=r.b,r.b=s}if(t>0){var i=M(t,V,a.element);!function(e,t,r){var a=W(n,t,r);Object.keys(a).forEach((function(t){e.style[t]=a[t]}))}(i,z,t),r[A]=$.bind(r),i[f]("mousedown",r[A]),i[f]("touchstart",r[A]),u.insertBefore(i,a.element),r.gutter=i}return q(a.element,a.size,C(z,0===t,t===c.length-1,L),t),t>0&&ee.push(r),a}))).forEach((function(e){var t=e.element[m]()[n];t<e.minSize&&(P?te(e):e.minSize=t)})),{setSizes:function(e){var t=X(e);t.forEach((function(e,n){if(n>0){var r=ee[n-1],a=o[r.a],s=o[r.b];a.size=t[n-1],s.size=e,q(a.element,a.size,r[v],a.i),q(s.element,s.size,r[T],s.i)}}))},getSizes:F,collapse:function(e){te(o[e])},destroy:function(e,t){ee.forEach((function(r){if(!0!==t?r.parent.removeChild(r.gutter):(r.gutter[h]("mousedown",r[A]),r.gutter[h]("touchstart",r[A])),!0!==e){var a=Y(n,r.a.size,r[v]);Object.keys(a).forEach((function(e){o[r.a].element.style[e]="",o[r.b].element.style[e]=""}))}}))},parent:u,pairs:ee}};var b=n(64922),R=(0,u.A)("flex-split"),k=function(e){(0,i.A)(n,e);var t=(0,o.A)(n);function n(){var e;(0,a.A)(this,n);for(var r=arguments.length,s=new Array(r),i=0;i<r;i++)s[i]=arguments[i];return(e=t.call.apply(t,[this].concat(s)))._ref=function(t){e.pane=t},e._refFirst=function(t){e.paneFirst=t},e._refSecond=function(t){e.paneSecond=t},e}return(0,s.A)(n,[{key:"componentDidMount",value:function(){this.checkSplit()}},{key:"componentDidUpdate",value:function(){this.checkSplit()}},{key:"componentWillUnmount",value:function(){this.destroySplit()}},{key:"checkSplit",value:function(){this.paneFirst&&this.paneSecond&&this.paneFirst.children.length&&this.paneSecond.children.length?this.split():this.destroySplit()}},{key:"getInitialSizes",value:function(){var e=this.props.getInitialSizes;if("function"==typeof e){var t=e();return Array.isArray(t)&&Math.abs(t.reduce((function(e,t){return e+t}),0)-100)<1?t:void 0}}},{key:"split",value:function(){var e=this,t=this.props,n=t.direction,r=t.minSize,a=t.onSplit;this.splitInstance||(this.splitInstance=w([this.paneFirst,this.paneSecond],{direction:n,sizes:this.getInitialSizes(),minSize:r,snapOffset:0,elementStyle:function(e,t,n){return{"flex-basis":"calc(".concat(t,"% - ").concat(n,"px)")}},gutterStyle:function(e,t){return{"flex-basis":"".concat(t,"px")}},onDrag:this.props.onResize,onDragEnd:function(){"function"==typeof e.props.onResizeEnd&&e.props.onResizeEnd(e.splitInstance.getSizes())}}),"function"==typeof a&&a())}},{key:"destroySplit",value:function(){var e=this.props.onUnSplit;this.splitInstance&&(this.splitInstance.destroy(),this.splitInstance=null,"function"==typeof e&&e())}},{key:"render",value:function(){var e=this.props,t=e.direction,n=e.id,a=e.paneClassNames,s=void 0===a?[]:a,i=(0,r.A)(this.props.children),o=i[0],c=i.slice(1);return(0,b.jsxs)("div",{ref:this._ref,className:R({direction:t},this.props.className),children:[(0,b.jsx)("div",{ref:this._refFirst,className:R("pane",s[0]),children:o}),(0,b.jsx)("div",{className:R("pane",s[1]),ref:this._refSecond,id:n,children:c})]})}}]),n}(c.Component);k.defaultProps={onSplit:null,onUnSplit:null},k.VERTICAL="vertical",k.HORIZONTAL="horizontal";const j=k},82560:(e,t,n)=>{n.d(t,{X:()=>h});var r=n(29121),a=n(12937),s=n(10785),i=n(26718),o=n(77810),c=n(64196),u=n(31229),l=n(64922),p=u.mH.trackerBaseUrl,d=/(https?:\/\/\S+[^?.,!\s]|\[A-Z\]{2,}-\d+)/,f=/^[A-Z]{2,}-\d+$/,h=function(e){(0,s.A)(n,e);var t=(0,i.A)(n);function n(){return(0,r.A)(this,n),t.apply(this,arguments)}return(0,a.A)(n,[{key:"render",value:function(){var e=this.props,t=e.text,r=e.className;return(0,l.jsx)("span",{className:r,children:n.renderText(t,d)})}}],[{key:"renderText",value:function(){for(var e=arguments.length>1?arguments[1]:void 0,t=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split(e),n=t.slice(),r=1;r<t.length;r+=2){var a=(s=t[r],p&&f.test(s)?"".concat(p,"/").concat(s):s);n[r]=(0,l.jsx)(c.N,{target:"_blank",href:a,children:t[r]},r)}var s;return n}}]),n}(o.PureComponent)},95664:(e,t,n)=>{n.d(t,{R:()=>a});var r=n(7787);function a(e){return r.Ay.renderSubjectCard(e)}},17777:(e,t,n)=>{n.d(t,{K:()=>A,A:()=>T});var r=n(68175),a=n(77810),s=n(76872),i=n(15647),o=n(64965),c=n(45033),u=n(76426),l=n(52797),p=n(64209),d=n(19314),f=n(64922),h=(0,s.A)("top-row-section"),m=(0,r.A)({},d.YW.CHAOS_CELL_BUNDLES,{name:"Bundles"});function A(e){var t=e.page,n=e.name,r=e.className,a=e.children,s=e.showSplitter,o=e.urlParams,d=(0,i.d4)(l.dB),A=(0,i.d4)(c.PX)[t]||m[t],v=n||(null==A?void 0:A.name),T=(0,p.RK)("/".concat(d,"/").concat(t),o);return(0,f.jsxs)("div",{className:h(null,r),children:[v&&(0,f.jsx)("h1",{className:h("name"),children:(0,f.jsx)(u.A,{routed:!0,theme:"primary",url:T,children:v})}),s&&(0,f.jsx)("div",{className:h("spacer")}),a]})}var v=a.memo(A);function T(e){var t=e.className,n=e.children,r=(0,o.W5)().params.page;return(0,f.jsx)(v,{className:t,page:r,children:n})}},3844:(e,t,n)=>{n.d(t,{O:()=>i});var r=n(76872),a=n(33547),s=(0,r.A)("cluster-color");function i(e){var t=(a.YT.clusters[null!=e?e:""]||{}).theme;return s({theme:t})}},27529:(e,t,n)=>{n.d(t,{d:()=>i}),n(77810);var r=n(76872),a=n(64922),s=(0,r.A)("yt-head-spacer"),i=function(){return(0,a.jsx)("div",{className:s()})}},62879:(e,t,n)=>{n.r(t),n.d(t,{default:()=>An});var r=n(29121),a=n(12937),s=n(10785),i=n(26718),o=n(77810),c=n(64965),u=n(27528),l=n.n(u),p=n(9736),d=n(15647),f=n(76872),h=n(33882),m=(0,h.A)(o.lazy((function(){return n.e(1606).then(n.bind(n,43618))}))),A=n(28407),v=n(70232),T=n.n(v);function N(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(177),n.e(5292),n.e(8),n.e(8638),n.e(5242),n.e(590),n.e(5695),n.e(1394),n.e(8427),n.e(8460),n.e(343),n.e(1983),n.e(5179)]).then(n.bind(n,42744))}var S=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N();case 2:return e.t0=e.sent.Components,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),E=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,N();case 2:return e.t0=e.sent.ComponentsTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),g=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(2209),n.e(7970),n.e(6756),n.e(3266),n.e(480),n.e(5222),n.e(8678),n.e(8976),n.e(4568),n.e(8632),n.e(3719),n.e(5695),n.e(1394),n.e(3990),n.e(3751),n.e(7453)]).then(n.bind(n,45200)));case 1:case"end":return e.stop()}}),e)})))));function I(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(2209),n.e(177),n.e(5292),n.e(6756),n.e(3266),n.e(2640),n.e(8),n.e(6277),n.e(8678),n.e(937),n.e(6652),n.e(6052),n.e(4136),n.e(6980),n.e(5695),n.e(1394),n.e(3990),n.e(3724),n.e(9558),n.e(8427),n.e(7959),n.e(8390),n.e(1260),n.e(3543)]).then(n.bind(n,94103))}var x=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I();case 2:return e.t0=e.sent.Accounts,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),C=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,I();case 2:return e.t0=e.sent.AccountsTopRowContent,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");function y(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(2209),n.e(7970),n.e(6756),n.e(3266),n.e(2640),n.e(480),n.e(5222),n.e(8678),n.e(8976),n.e(937),n.e(6052),n.e(4568),n.e(8632),n.e(3719),n.e(6980),n.e(5695),n.e(1394),n.e(3990),n.e(3724),n.e(9558),n.e(7959),n.e(3751),n.e(1260),n.e(945)]).then(n.bind(n,62016))}var O=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y();case 2:return e.t0=e.sent.Dashboard,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),_=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,y();case 2:return e.t0=e.sent.DashboardTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");function w(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(7540),n.e(5292),n.e(7970),n.e(5242),n.e(590),n.e(430),n.e(5695),n.e(1394),n.e(8460),n.e(1983),n.e(7204)]).then(n.bind(n,99499))}var b=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,w();case 2:return e.t0=e.sent.System,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),R=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,w();case 2:return e.t0=e.sent.SystemTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");function k(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(2209),n.e(177),n.e(5292),n.e(3266),n.e(2640),n.e(7954),n.e(480),n.e(8),n.e(6277),n.e(8678),n.e(4108),n.e(7916),n.e(7164),n.e(8638),n.e(5242),n.e(3776),n.e(7700),n.e(5423),n.e(4136),n.e(2494),n.e(9641),n.e(2140),n.e(1745),n.e(6560),n.e(5152),n.e(9536),n.e(6733),n.e(1394),n.e(3990),n.e(3724),n.e(3735),n.e(8427),n.e(8356),n.e(5653),n.e(8390),n.e(1604),n.e(6521)]).then(n.bind(n,99880))}var j=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k();case 2:return e.t0=e.sent.Navigation,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),P=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k();case 2:return e.t0=e.sent.NavigationTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),z=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([n.e(8096),n.e(4177)]).then(n.bind(n,2675));case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})))));function L(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(177),n.e(2640),n.e(480),n.e(7916),n.e(8638),n.e(3776),n.e(5152),n.e(5695),n.e(1394),n.e(343),n.e(5088),n.e(8403)]).then(n.bind(n,41380))}var B=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,L();case 2:return e.t0=e.sent.Tablet,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),D=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,L();case 2:return e.t0=e.sent.TabletTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");function U(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(2436),n.e(177),n.e(5292),n.e(6756),n.e(2640),n.e(6277),n.e(937),n.e(5242),n.e(6052),n.e(2494),n.e(1051),n.e(5695),n.e(3724),n.e(9558),n.e(7959),n.e(8460),n.e(6582)]).then(n.bind(n,19899))}var V=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,U();case 2:return e.t0=e.sent.TabletCellBundles,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),G=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,U();case 2:return e.t0=e.sent.TabletCellBundlesTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),M=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,U();case 2:return e.t0=e.sent.ChaosCellBundlesTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),Y=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([n.e(4724),n.e(6030),n.e(7408),n.e(5292),n.e(8632),n.e(914),n.e(5695),n.e(8778),n.e(583)]).then(n.bind(n,2164));case 2:return e.t0=e.sent.GroupsPage,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),W=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(7408),n.e(5292),n.e(914),n.e(7315),n.e(5695),n.e(8778),n.e(8809)]).then(n.bind(n,58562));case 2:return e.t0=e.sent.UsersPage,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))));function q(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(177),n.e(6756),n.e(6277),n.e(7916),n.e(8638),n.e(5695),n.e(1394),n.e(3724),n.e(9558),n.e(343),n.e(3784),n.e(1069)]).then(n.bind(n,27430))}var F=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,q();case 2:return e.t0=e.sent.Scheduling,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),H=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,q();case 2:return e.t0=e.sent.SchedulingTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");function Z(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(2209),n.e(7970),n.e(3266),n.e(7954),n.e(8),n.e(5222),n.e(7916),n.e(7164),n.e(6652),n.e(3872),n.e(3716),n.e(7700),n.e(628),n.e(8787),n.e(6560),n.e(5695),n.e(1394),n.e(3990),n.e(3735),n.e(8427),n.e(8356),n.e(4300),n.e(5653),n.e(4319),n.e(5670)]).then(n.bind(n,140))}var K=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Z();case 2:return e.t0=e.sent.QueryTracker,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),Q=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Z();case 2:return e.t0=e.sent.QueryTrackerTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),X=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(164),n.e(1524),n.e(2436),n.e(7540),n.e(7970),n.e(7954),n.e(5222),n.e(8678),n.e(4108),n.e(8976),n.e(5423),n.e(4568),n.e(5695),n.e(1394),n.e(5684)]).then(n.bind(n,86015)));case 1:case"end":return e.stop()}}),e)})))));function J(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(7408),n.e(2436),n.e(177),n.e(5292),n.e(6756),n.e(8),n.e(6277),n.e(7916),n.e(4136),n.e(5695),n.e(3724),n.e(9558),n.e(8427),n.e(8390),n.e(1721)]).then(n.bind(n,48142))}var $=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,J();case 2:return e.t0=e.sent.ChytPage,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)}))))),ee=(0,h.A)(o.lazy((0,A.A)(T().mark((function e(){return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,J();case 2:return e.t0=e.sent.ChytPageTopRow,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),te=n(52797),ne=n(16618),re=n(26264),ae=n(17777),se=n(7787),ie=n(64922),oe=n(39716),ce=n(29081);function ue(){var e,t=(0,d.d4)(te.fF),n=(0,d.d4)(ne.Bv);return t!==re.EG.LOADED?null:(0,ie.jsxs)(c.dO,{children:[(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.SYSTEM),component:R}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.NAVIGATION),component:P}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.SCHEDULING),component:H}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.ACCOUNTS),component:C}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.TABLET,"/:id"),component:D}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.TABLET_CELL_BUNDLES),component:G}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.CHAOS_CELL_BUNDLES),component:M}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.DASHBOARD),component:_}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.COMPONENTS),component:E}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.CHYT),component:ee}),n&&(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.QUERIES),component:(0,h.A)(Q)}),(0,ce.CW)()&&(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(oe.m.pageId),component:oe.m.topRowComponent}),(e=[],se.Ay.getExtaClusterPages().forEach((function(t,n){var r=t.pageId,a=t.topRowComponent;a&&e.push((0,ie.jsx)(c.qh,{path:"/:cluster/".concat(r),component:a},n))})),e),(0,ie.jsx)(c.qh,{path:"/:cluster/:page",component:ae.A})]})}var le=n(40319),pe=n(13322),de=n(68175),fe=n(49214),he=n.n(fe),me=n(96843),Ae=n.n(me),ve=n(75414),Te=n.n(ve),Ne=n(17239),Se=n.n(Ne),Ee=n(65692),ge=n(33547),Ie=n(21778),xe=n(477),Ce=n(89700),ye=n(45033),Oe=n(79329),_e=n(3844),we=n(76426),be=n(60620),Re=(0,f.A)("clusters-panel");function ke(e){e.stopPropagation(),e.preventDefault()}function je(e){var t=e.className,n=e.onSelectCluster,r=o.useState(""),a=(0,p.A)(r,2),s=a[0],i=a[1],c=o.useCallback((function(e){i(e)}),[i]),u=o.useCallback((function(e){n(e)}),[n]),f=o.useCallback((function(e){null==e||e.focus()}),[]),h=(null==s?void 0:s.toLowerCase())||"",m=(0,d.d4)(ye.zy),A=(0,d.d4)(Oe.xS),v=o.useMemo((function(){var e=m.recent,t=m.rest;if(A&&(null!=e&&e.length||null!=t&&t.length))return De(h,(0,de.A)({recent:e},Ce.wK,t));var n=(0,ge.s)();return De(h,n)}),[h,A,m]),T=o.useCallback((function(e){var t;if("Enter"===e.key){var n=(0,pe.A)(Ce.B_);Se()(n,(function(e){return!(!v[e]||!v[e].length||(t=v[e][0],0))})),t&&u(t.id)}}),[v,u]),N=(0,d.d4)(te.dB),S=window.location,E=S.pathname,g=S.search,I="";return N&&E.startsWith("/".concat(N,"/"))&&(I=E.substr(N.length+1)+g),(0,ie.jsxs)("div",{className:Re(null,t),onClick:ke,children:[(0,ie.jsx)("div",{className:Re("input"),children:(0,ie.jsx)(Ee.k,{controlRef:f,onKeyDown:T,placeholder:"Cluster search",onUpdate:c,value:s,autoFocus:!0})}),(0,ie.jsx)("div",{className:Re("groups"),children:Ae()(v)?(0,ie.jsx)("div",{className:Re("no-items"),children:"No matching clusters"}):l()(Ce.wM,(function(e,t){var n=e.caption;return v[t]?(0,ie.jsx)(Pe,{name:n,items:v[t],onClusterClick:u,clusterState:I},t):null}))})]})}function Pe(e){var t=e.name,n=e.items,r=e.onClusterClick,a=e.clusterState;return n.length?(0,ie.jsxs)("div",{className:Re("group"),children:[(0,ie.jsx)("div",{className:Re("group-name"),children:t}),l()(n,(function(e){return(0,ie.jsx)(Le,(0,le.A)((0,le.A)({className:Re("group-item"),onClick:r},e),{},{clusterState:a}),e.id)}))]}):null}var ze={production:"prod",testing:"test",development:"dev",prestable:"pre",localmode:void 0};function Le(e){var t=e.forwardImageRef,n=e.className,r=e.id,a=e.name,s=e.environment,i=e.onClick,c=void 0===i?function(){}:i,u=e.shortEnv,l=e.clusterState,p=!u,d=o.useCallback((function(){c(r)}),[c,r]);return(0,ie.jsxs)("div",{className:Re("cluster",n),onClick:d,children:[(0,ie.jsx)(Be,{cluster:r,name:a,forwardRef:t}),(0,ie.jsx)("div",{className:Re("cluster-name"),children:a}),(0,ie.jsx)("div",{className:Re("cluster-env"),children:u?ze[s]:s}),p&&(0,ie.jsx)(we.A,{className:Re("link"),url:"".concat(location.origin,"/").concat(r).concat(l||""),onClick:function(e){e.stopPropagation()},children:(0,ie.jsx)(be.A,{awesome:"external-link"})})]})}function Be(e){var t=e.cluster,n=e.name,r=e.forwardRef,a=(0,Ie.Lt)(t),s=(0,_e.O)(t);return(0,ie.jsx)(xe.A,{className:Re("cluster-image",s),icon:a.icon2x,name:n,forwardRef:r})}function De(e,t){return e?Te()(t,(function(t,n,r){var a=e?he()(n,(function(t){var n=t.name,r=t.environment;return-1!==n.toLowerCase().indexOf(e)||-1!==r.toLowerCase().indexOf(e)})):n;return a.length&&(t[r]=a),t}),{}):t}var Ue=n(55740),Ve=n(92547),Ge=n(64209),Me=n(13542),Ye=(0,f.A)("cluster-page-header"),We=function(e){var t=e.clusterConfig,n=o.useState(!1),r=(0,p.A)(n,2),a=r[0],s=r[1],i=(0,o.useCallback)((function(){s((function(e){return!e}))}),[s]),c=(0,o.useCallback)((function(){s(!1)}),[s]),u=(0,o.useCallback)((function(e){var t=function(e){var t=(0,Ge.RK)(window.location.pathname).split("/"),n=(0,Ve.A)(t),r=n[0],a=n[1],s=n.slice(2);return a===e?null:[r,e].concat((0,pe.A)(s)).join("/")}(e);t&&(0,Me.Q)().push(t),c()}),[c]),l=o.useRef(null);return(0,ie.jsxs)("div",{className:Ye("cluster"),onClick:i,children:[(0,ie.jsx)(Le,(0,le.A)((0,le.A)({forwardImageRef:l},t),{},{shortEnv:!0})),(0,ie.jsx)(be.A,{awesome:"chevron-down",size:"l"}),(0,ie.jsx)(Ue.z,{className:Ye("popup"),placement:["bottom-start","top-start"],anchorRef:l,open:a,onClose:c,offset:[0,5],children:a&&(0,ie.jsx)(je,{className:Ye("popup-content"),onSelectCluster:u})})]})},qe=n(27529),Fe=n(41655),He=n.n(Fe),Ze=n(82053),Ke=n.n(Ze),Qe=n(95664),Xe=n(1880),Je=n.n(Xe),$e=n(53246),et=n(53332);function tt(){var e=(0,d.wA)();return o.useEffect((function(){return e((0,$e.mw)()),function(){e((0,$e.Lo)())}})),null}var nt=n(2211),rt=n(82560),at=n(31229),st=(0,f.A)("maintenance"),it={ISSUE:"issue",MAINTENANCE:"maintenance"},ot=function(e){(0,s.A)(n,e);var t=(0,i.A)(n);function n(){return(0,r.A)(this,n),t.apply(this,arguments)}return(0,a.A)(n,[{key:"title",get:function(){switch(this.props.maintenancePageEvent.type){case"maintenance":return"Maintenance is under way";case"issue":return"Cluster experiences problems";default:return"Oops! Something went wrong"}}},{key:"renderTimeLine",value:function(e){var t=e.startTime,n=e.finishTime;if([it.ISSUE,it.MAINTENANCE].indexOf(e.type)>-1){var r=n&&He()(n).format("D MMM YYYY H:mm"),a=He()(t).format("D MMM YYYY H:mm");return r?(0,ie.jsxs)("p",{className:st("time-line"),children:[(0,ie.jsx)("time",{children:a}),"—",(0,ie.jsx)("time",{children:r})]}):(0,ie.jsx)("p",{className:st("time-line"),children:(0,ie.jsx)("time",{children:a})})}return null}},{key:"render",value:function(){var e=this.props,t=e.maintenancePageEvent,n=e.onProceed;if(!t)return null;var r=t.severity,a=t.title,s=t.description,i=t.createdBy,o=at.mH.announcesMailListUrl;return(0,ie.jsxs)("div",{className:st(),children:[(0,ie.jsx)(tt,{}),(0,ie.jsxs)("div",{className:st("content"),children:[(0,ie.jsxs)("div",{className:st("info"),children:[(0,ie.jsx)("h2",{className:st("title"),children:this.title}),(0,ie.jsxs)("div",{className:st("severity",{type:r}),children:[(0,ie.jsx)(be.A,{awesome:"exclamation-triangle"}),(0,ie.jsx)("span",{children:Ke().format.Readable(r)})]}),(0,ie.jsx)("h3",{className:st("user-title"),children:a}),(0,ie.jsx)("div",{className:st("user-description"),children:(0,ie.jsx)(rt.X,{text:s})}),this.renderTimeLine(t),(0,ie.jsx)(Qe.R,{className:st("author"),name:i}),(0,ie.jsxs)("ul",{className:st("links"),children:[o&&(0,ie.jsx)("li",{className:st("link"),children:(0,ie.jsx)(nt.A,{href:o,target:"_blank",view:"action",size:"m",children:"Subscribe to YT announces"})}),(0,ie.jsx)("li",{className:st("link"),children:(0,ie.jsx)(nt.A,{size:"m",onClick:n,children:"Proceed to cluster anyway"})})]})]}),(0,ie.jsx)("div",{className:st("illustration")})]})]})}}]),n}(o.Component),ct=n(59117),ut=n.n(ct),lt=function(e){return"override_".concat(e,"_maintenance")},pt=n(18472),dt=n(43739),ft=(0,pt.Mz)([dt.dB,function(e){return e.global.ongoingEvents}],(function(e,t){var n;if(null!=t&&null!==(n=t.events)&&void 0!==n&&n.length&&e===t.cluster)return t.events.find((function(e){try{var t=JSON.parse(e.meta);return t&&t.show_maintenance_page}catch(e){return console.error("Failed to parse notification meta",e),null}}))}));function ht(e){var t=e.cluster,n=e.children,r=e.emptyMaintenance,a=o.useState(0),s=(0,p.A)(a,2),i=s[0],c=s[1],u=(0,d.d4)(ft);if(u){var l=function(e){var t=lt(e);return ut().get(t)===e}(t);if(!l)return r?null:(0,ie.jsx)(ot,{cluster:t,maintenancePageEvent:u,onProceed:function(){!function(e){var t=lt(e);ut().set(t,e,{expires:He()().add(3,"hours").toDate()})}(t),c(i+1)}})}return n}var mt=(0,f.A)("cluster-page-header");function At(e){var t=e.cluster,n=(0,te.lt)(t);return(0,ie.jsxs)("div",{className:mt(),children:[(0,ie.jsx)(We,{cluster:t,clusterConfig:n}),(0,ie.jsx)(qe.d,{}),(0,ie.jsx)(ht,{cluster:t,emptyMaintenance:!0,children:(0,ie.jsx)(ue,{})})]})}const vt=o.memo(At);var Tt=n(59028),Nt=n(28269),St=n(19314),Et=n(21594);function gt(e){return{cluster:St.dK.LAST_VISITED_CLUSTER,page:St.dK.LAST_VISITED_PAGE}[e]}function It(e){var t=e+"s";return function(n,r){var a=r(),s=(0,ye.zy)(a),i=(0,ye.WK)(a),o=r().settings.data;n({type:re.qG,data:{collectionName:t,items:"pages"===t?i.all:s.all,getLastVisitedSetting:function(t){return function(e,t){var n=gt(e);return(0,Et.Yn)(t,n)}(e,t.id)},settings:o,currentTime:He()().unix()}})}}function xt(e){return{type:re.eV,data:e}}function Ct(e,t){return function(n){var r=gt(e),a=He()().unix();n((0,Tt.ZC)(t,r,a)),n(It(e))}}var yt=function(e){(0,s.A)(n,e);var t=(0,i.A)(n);function n(){var e;(0,r.A)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return(e=t.call.apply(t,[this].concat(s))).getPage=function(e){return e.params.page},e.getTab=function(e){return e.params.tab},e.render=function(){return null},e}return(0,a.A)(n,[{key:"componentDidMount",value:function(){var e=this.props,t=e.match,n=e.trackPageVisit,r=e.trackTabVisit,a=this.getPage(t),s=this.getTab(t);n(a),s&&r(a,s)}},{key:"componentDidUpdate",value:function(e){var t=this.props,n=t.match,r=t.trackPageVisit,a=t.trackTabVisit,s=this.getPage(n),i=this.getPage(e.match),o=this.getTab(n),c=this.getTab(e.match);i!==s&&r(s),o&&c!==o&&a(s,o)}}]),n}(o.Component),Ot={trackPageVisit:function(e){return function(t,n){var r=n(),a=(0,te.dB)(r),s=(0,te.ID)(r),i=(0,ye.ex)(r);t(Ct("page",e)),t((0,$e.ar)({page:i[e]})),t((0,$e.Dw)()),window.setTimeout((function(){Nt.A.countHit({page:e,cluster:a,login:s})}),200)}},trackTabVisit:function(e,t){return function(n,r){var a=r(),s=(0,Oe.sX)(a),i=(0,Oe.R9)(a),o=(0,le.A)((0,le.A)({},i),{},(0,de.A)({},e,t));n((0,Tt.ZC)(St.Ou.LOCAL.LAST_VISITED_TAB,s,o))}}};const _t=(0,d.Ng)(null,Ot)(yt);var wt=n(86673),bt=n(46493),Rt=n(82060),kt=n(48971),jt=n(93209),Pt=n(83189),zt=(0,f.A)("yt-preload-error");const Lt=(Bt=function(){var e=(0,Pt.x)(),t=(0,d.d4)(te.QU),n=(0,d.d4)(te._F),r=function(e){var t=e.cluster;switch(e.errorType){case re.NZ.CONNECTION:return{title:"".concat(t.toUpperCase()," couldn’t be reached"),message:"Failed to fetch version of the cluster. Usually it means UI cannot establish connection to the cluster’s proxy."};case re.NZ.AUTHENTICATION:return{title:"Error",message:"Could not fetch the XSRF token, therefore preventing further operations. Sometimes token fetching fails due to the network issues. If the problem persists, please report it."};case re.NZ.GENERAL:default:return{title:"Error",message:"An error occurred while fetching the necessary information about the cluster."}}}({errorType:n,cluster:e}),a=r.title,s=r.message;return(0,ie.jsxs)("section",{className:zt("error"),children:[(0,ie.jsx)("h2",{className:zt("title"),children:a}),(0,ie.jsxs)("p",{className:zt("text"),children:[s,(0,ie.jsxs)(jt.S,{className:zt("details"),onClick:function(){return(0,kt.eW)(t)},children:[" ","Details"]})]}),se.Ay.renderCustomPreloaderError({cluster:e,errorType:n,error:t})]})},(Dt=function(e){(0,s.A)(n,e);var t=(0,i.A)(n);function n(){return(0,r.A)(this,n),t.apply(this,arguments)}return(0,a.A)(n,[{key:"render",value:function(){return(0,ie.jsxs)(o.Fragment,{children:[(0,ie.jsx)(tt,{}),(0,ie.jsx)(Bt,(0,le.A)({},this.props))]})}}]),n}(o.Component)).displayName="WithBlockedNavigation(".concat((0,et.Mn)(Bt),")"),Ut=Dt,Je()(Ut,Bt),(0,d.Ng)(null,{addNavigationBlocker:$e.mw,removeNavigationBlocker:$e.Lo})(Ut));var Bt,Dt,Ut,Vt=n(55682),Gt=n(84092),Mt=n.n(Gt),Yt=n(29746),Wt=n(77575),qt=n(36581),Ft=n(12680),Ht=n(78894),Zt=n(64714),Kt=n(11896),Qt=n(62250);function Xt(e){var t=e&&e.code;if(t===Mt().codes.USER_IS_BANNED)(0,Me.ai)().dispatch({type:re.q8});else if(t===Mt().codes.USER_EXCEEDED_RPS)(0,Me.ai)().dispatch({type:re.W6});else if(t==Mt().codes.XSRF_TOKEN_EXPIRED){var n="Your CSRF-token '".concat(function(){var e=ge.YT.cluster,t=e&&(0,et.fc)(e);return t&&ut().get(t)}(),"' has expired. Please reaload the page");console.log(n),(new Ht.I).add({name:"xsrf-expired",theme:"info",autoHiding:!1,title:"CSRF-toke expired",content:n})}}function Jt(e,t,n){(0,Ft.N1)({level:"warn",type:n,message:"".concat(e," cannot be loaded, some ui features might be not available"),block:e},t)}var $t=new Ht.I;function en(e){return function(t,n){!function(e){var t=ge.YT.clusters,n=(0,et.Jc)(t,e);Mt().setup.setGlobalOption("suppressAccessTracking",!0),Mt().setup.setGlobalOption("useEncodedParameters",!0),Mt().setup.setGlobalOption("proxy",(0,te.v9)(n)),!(0,at.FG)().ytApiUseCORS&&(n.secure="https:"===window.location.protocol),Mt().setup.setGlobalOption("useHeavyProxy",!1),Mt().setup.setGlobalOption("xsrf",!0),Mt().setup.setGlobalOption("xsrfCookieName",(0,et.fc)(n.id)),"boolean"==typeof n.secure?Mt().setup.setGlobalOption("secure",n.secure):Mt().setup.setGlobalOption("secure",!0),Mt().setup.setGlobalOption("authentication",{type:n.authentication||"none"}),Mt().subscribe("error",Xt)}(e),t({type:re.Vk.REQUEST});var r=(0,te.ID)(n()),a=new Zt.CT(e,Kt.c.CLUSTER_PARAMS);return(0,kt.fI)(a.fetch(Zt.Vu.clusterParams,Vt.A.request({url:"/api/cluster-params/"+e,method:"GET"})),{skipSuccessToast:!0,toasterName:"cluster_initialization_failure",errorTitle:"Cluster initialization failure",errorContent:"An error occured"}).then((function(n){var s=n.data,i=s.mediumList,o=s.schedulerVersion,c=s.masterVersion,u=s.uiConfig,l=s.uiDevConfig,d=(0,kt.$7)([i],"Cluster initialization failure");if(d)throw d;var f=function(e,t){return e.error&&e.error.code!==Mt().codes.NODE_DOES_NOT_EXIST&&(Jt("//sys/@ui_config",e.error),$t.add({name:"get-ui_config",theme:"danger",autoHiding:!1,title:"Failed to load //sys/@ui_config",content:"Some UI features might be not available. Try to reload the page. If the problem persists please report it via Bug Reporter."})),t.error&&t.error.code!==Mt().codes.NODE_DOES_NOT_EXIST&&Jt("//sys/@ui_config_dev_overrides",t.error),[e.output||{},t.output||{}]}(u,l),h=(0,p.A)(f,2),m=h[0],A=h[1];return t({type:re.Vk.SUCCESS,data:{cluster:e,mediumList:Yt.Ay.getValue(i.output),isDeveloper:!1,clusterUiConfig:m,schedulerVersion:o.output,masterVersion:c.output}}),a.fetch(Zt.Vu.clusterParamsIsDeveloper,(0,Wt.h)(r,void 0,Zt.Vu[Zt.Vu.clusterParamsIsDeveloper])).then((function(e){if(e){var n=e?Object.assign({},m,A):m;t({type:Qt.wV,data:{isDeveloper:e,clusterUiConfig:n}})}})).catch((function(e){console.error("Failed to check if current user is admin",e)}))})).catch((function(e){t({type:re.Vk.FAILURE,data:e})}))}}var tn=0,nn=n(13685),rn=n(76365),an=new rn.A;function sn(){var e=(0,d.wA)(),t=(0,d.d4)(te.dB),n=o.useCallback((function(){e((function(e,t){var n=(0,te.dB)(t());if(n)return e({type:Qt.ZH}),Zt.X8.getSupportedFeatures({},an.removeAllAndSave).then((function(t){var r=t.features;e({type:Qt.Lb,data:{featuresCluster:n,features:r}})})).catch((function(t){(0,rn.m)(t)||e({type:Qt.qI,data:{error:t}})}))}))}),[t,e]);return(0,nn.Tt)(n,{timeout:6e5}),null}const on=o.memo(sn);var cn=n(22636),un=(0,f.A)("cluster-page"),ln=o.memo(hn),pn=function(e){(0,s.A)(n,e);var t=(0,i.A)(n);function n(){var e;(0,r.A)(this,n);for(var a=arguments.length,s=new Array(a),i=0;i<a;i++)s[i]=arguments[i];return(e=t.call.apply(t,[this].concat(s))).state={width:"large"},e.contentPaneRef=o.createRef(),e.onResize=function(){var t=e.props.splitScreen,n=document.querySelector("#elements-toolbar");if(t.isSplit&&n){var r=document.getElementById(re.g).clientWidth+10;n.style.right="".concat(r,"px")}else n&&(n.style.right="0");window.dispatchEvent(new Event("resize"))},e.handleSplit=function(){e.onResize(),window.dispatchEvent(new Event("scroll")),e.updateWidthModifier()},e.onResizeEnd=function(t){e.props.setSetting(St.Ou.NAVIGATION.CLUSTER_PAGE_PANE_SIZES,St.dK.NAVIGATION,t),e.updateWidthModifier()},e.getInitialSizes=function(){return e.props.clusterPagePaneSizes},e}return(0,a.A)(n,[{key:"componentDidMount",value:function(){var e=this.props.cluster;this.props.updateCluster(e)}},{key:"getSnapshotBeforeUpdate",value:function(e){return e.splitScreen.isSplit!==this.props.splitScreen.isSplit?this.props.splitScreen.isSplit?window.pageYOffset:this.contentPaneRef.current.scrollTop:null}},{key:"componentDidUpdate",value:function(e,t,n){null!==n&&(this.props.splitScreen.isSplit&&(this.contentPaneRef.current.scrollTop=n),window.scrollBy(0,n));var r=e.cluster,a=this.props.cluster;a!==r&&this.props.updateCluster(a)}},{key:"componentWillUnmount",value:function(){this.props.updateTitle({path:"",page:""}),this.props.unmountCluster()}},{key:"updateWidthModifier",value:function(){var e,t=(null===(e=this.contentPaneRef.current)||void 0===e?void 0:e.clientWidth)||1/0;t<=720?this.setState({width:"small"}):t<=1024?this.setState({width:"medium"}):this.setState({width:"large"})}},{key:"isParamsLoading",value:function(){var e=this.props;return e.cluster!==e.paramsCluster}},{key:"renderContent",value:function(e){var t,n=this.props,r=n.cluster,a=n.startingPage,s=n.isLoaded,i=n.hasError,u=n.paramsError,l=n.allowChyt,p=n.allowQueryTracker,d=n.allowStartPageRedirect;return s&&!this.isParamsLoading()?(0,ie.jsxs)(o.Fragment,{children:[(0,ie.jsx)(on,{}),(0,ie.jsx)(ln,{to:"/".concat(r,"/").concat(re.YW.BAN)}),(0,ie.jsxs)(c.dO,{children:[(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.BAN),component:m}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.COMPONENTS),component:S}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.OPERATIONS),component:g}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.JOB),component:X}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.DASHBOARD),component:O}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.SYSTEM),component:b}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.ACCOUNTS),component:x}),(0,ie.jsx)(c.qh,{path:["/:cluster/".concat(re.YW.TABLET_CELL_BUNDLES),"/:cluster/".concat(re.YW.CHAOS_CELL_BUNDLES)],component:V}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.NAVIGATION),component:j}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.PATH_VIEWER),component:z}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.TABLET),component:B}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.USERS),component:W}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.GROUPS),component:Y}),(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.SCHEDULING),component:F}),l&&(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.CHYT),component:$}),p&&(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(re.YW.QUERIES),component:K}),(0,ce.CW)()&&(0,ie.jsx)(c.qh,{path:"/:cluster/".concat(oe.m.pageId),component:oe.m.reactComponent}),(0,ie.jsx)(c.rd,{from:"/:cluster/".concat(re.YW.VERSIONS),to:"/:cluster/".concat(re.YW.COMPONENTS,"/versions")}),(t=[],se.Ay.getExtaClusterPages().forEach((function(e,n){var r=e.pageId,a=e.reactComponent;t.push((0,ie.jsx)(c.qh,{path:"/:cluster/".concat(r),component:a},n))})),t),d&&(0,ie.jsx)(c.rd,{from:"/".concat(r,"/"),to:"/".concat(r,"/").concat(a)})]}),(0,ie.jsx)(c.qh,{path:"/:cluster/:page/:tab?",component:_t})]}):(0,ie.jsxs)(o.Fragment,{children:[(0,ie.jsx)("div",{className:un("preloader"),children:i?(0,ie.jsx)(Lt,{}):(0,ie.jsxs)("p",{className:un("loading-text"),children:["Loading ",null==e?void 0:e.id,"..."]})}),(0,ie.jsx)("div",{className:un("error"),children:u&&(0,ie.jsx)(Rt.A,{error:u})})]})}},{key:"render",value:function(){var e=this.props,t=e.cluster,n=e.splitScreen,r=e.clusters,a=se.Ay.renderAppFooter(),s=(0,et.Jc)(r,t);return(0,ie.jsxs)(o.Fragment,{children:[(0,ie.jsx)(mn,{}),(0,ie.jsx)(wt.J,{cluster:t}),(0,ie.jsx)(vt,{cluster:t}),(0,ie.jsxs)(bt.A,{className:un("panes-wrapper",{"with-pane":n.isSplit,"with-footer":Boolean(a)}),paneClassNames:n.paneClassNames,direction:bt.A.HORIZONTAL,onResize:this.onResize,onResizeEnd:this.onResizeEnd,onSplit:this.handleSplit,onUnSplit:this.handleSplit,minSize:600,getInitialSizes:this.getInitialSizes,id:re.g,children:[(0,ie.jsx)("div",{ref:this.contentPaneRef,className:un("content-pane",{split:n.isSplit&&"yes",width:this.state.width}),children:(0,ie.jsx)(ht,{cluster:t,children:this.renderContent(s)})}),null]}),a]})}}]),n}(o.Component),dn={setSetting:Tt.ZC,trackVisit:Ct,splitMenuItemsAction:It,joinMenuItemsAction:xt,updateTitle:$e.ar,updateCluster:function(e){return function(t,n){var r=function(e){var n;e instanceof Error&&console.error(e),t({type:re.pw.FAILURE,data:{error:(null==e||null===(n=e.response)||void 0===n?void 0:n.data)||e}})};return t({type:re.pw.REQUEST}),new Zt.CT(e,Kt.c.CLUSTER_PARAMS).fetch(Zt.Vu.ui_clusterInfo,Vt.A.request({url:"/api/cluster-info/"+e,method:"GET"})).then((function(a){var s,i=a.data,o=i.token,c=i.tokenError,u=i.version,l=i.versionError;if(tn++&&t({type:qt.A4,data:{shouldUsePreserveState:(0,Oe.qP)(n())}}),!u||l)t({type:re.pw.FAILURE,data:{errorType:re.NZ.CONNECTION,error:l}});else{if(t({type:re.pw.SUCCESS,data:{version:u}}),ge.YT.parameters.version=u,ge.YT.cluster=e,null!=o&&o.csrf_token&&!c){var p=o.login,d=o.csrf_token;return ge.YT.parameters.login=p,t({type:Qt.wV,data:{login:p}}),ut().set((0,et.fc)(e),d),t((s={cluster:e,login:p},function(){var e=(0,A.A)(T().mark((function e(t,n){var r;return T().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t(en(s.cluster));case 2:return e.next=4,t((0,$e.ar)({cluster:s.cluster,path:"",page:""}));case 4:return e.next=6,t((0,Tt.qP)(s.login));case 6:r=n(),(0,Oe.pt)(r)||(t((0,Tt.ZC)(St.Ou.DEVELOPMENT.REDIRECT_TO_BETA_SWITCHED,St.dK.DEVELOPMENT,!0)),t((0,Tt.ZC)(St.Ou.DEVELOPMENT.REDIRECT_TO_BETA,St.dK.DEVELOPMENT,!0))),(0,Oe.xS)(r)?t(It("cluster")):t(xt("clusters")),(0,Oe.AT)(r)?t(It("page")):t(xt("pages")),t(Ct("cluster",s.cluster));case 11:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}())).then((function(){return t({type:re.pw.FINAL_SUCCESS})})).catch(r)}ut().remove((0,et.fc)(e)),t({type:re.pw.FAILURE,data:{errorType:re.NZ.AUTHENTICATION,error:c||new Error("Failed to get CSRF-token")}})}return Promise.resolve()})).catch(r)}},unmountCluster:function(){return function(e){ge.YT.parameters.version="",ge.YT.cluster="",e({type:Qt.wV,data:{cluster:void 0}})}}};const fn=(0,d.Ng)((function(e){var t=e.global,n=t.login,r=t.splitScreen,a=t.loadState,s=t.error,i=t.paramsCluster,o=t.paramsLoading,c=t.paramsError;return{clusters:e.clustersMenu.clusters,isLoaded:!o&&a===re.EG.LOADED,hasError:a===re.EG.ERROR,error:s,paramsError:c,login:n,splitScreen:r,clusterPagePaneSizes:(0,Oe.uE)(e),startingPage:(0,Oe.WC)(e),paramsCluster:i,allowQueryTracker:(0,ne.Bv)(e),allowChyt:Boolean((0,te.jU)(e).chyt_controller_base_url),allowStartPageRedirect:(0,ne.MP)(e)}}),dn)(pn);function hn(e){var t=e.to,n=(0,d.d4)((function(e){return e.global})),r=n.blocked,a=n.banned,s=(0,c.zy)().pathname;return!a&&!r||s.endsWith("/ban")?null:(0,ie.jsx)(c.rd,{to:t})}function mn(){var e=(0,d.d4)((function(e){return e.global.loadState})),t=(0,d.d4)((function(e){return e.global.paramsLoading})),n=e===re.EG.ERROR||!t&&e===re.EG.LOADED,r=(0,Pt.x)();return(0,cn.gj)({type:Kt.c.CLUSTER_PARAMS,subPage:"ui.".concat(r),allowStop:function(e){return!(0,p.A)(e,1)[0]},startDeps:[n]}),(0,cn.ol)({type:Kt.c.CLUSTER_PARAMS,allowStop:function(e){return(0,p.A)(e,1)[0]},stopDeps:[n]}),null}var An=function(e){(0,s.A)(n,e);var t=(0,i.A)(n);function n(){return(0,r.A)(this,n),t.apply(this,arguments)}return(0,a.A)(n,[{key:"render",value:function(){return(0,ie.jsxs)(c.dO,{children:[l()(se.Ay.getExtraRootPages(),(function(e,t){var n=e.pageId,r=e.reactComponent;return r?(0,ie.jsx)(c.qh,{path:"/".concat(n),component:r},t):null})),(0,ce.CW)()&&(0,ie.jsx)(c.qh,{path:"/".concat(oe.V.pageId),component:oe.V.reactComponent}),(0,ie.jsx)(c.qh,{path:"/:cluster/",render:function(e){var t=e.match.params.cluster;return(0,ie.jsx)(fn,{cluster:t},t)}})]})}}]),n}(o.PureComponent)},13685:(e,t,n)=>{n.d(t,{rN:()=>T,Tt:()=>A,Bx:()=>v});var r=n(13322),a=n(77810),s=n(15647),i=n(31470),o=n.n(i),c=n(28407),u=n(29121),l=n(12937),p=n(70232),d=n.n(p),f=function(){function e(t,n,r){var a=this;(0,u.A)(this,e),this.callback=void 0,this.timeout=void 0,this.options=void 0,this.inProgress=!1,this.lastCallTime=0,this.frozen=!1,this.timerId=void 0,this.onVisibilityChange=function(){document.hidden?a.freeze():a.unfreeze()},this.freeze=function(){a.frozen=!0},this.unfreeze=function(){a.frozen=!1,!a.inProgress&&Date.now()-a.lastCallTime>=a.timeout&&a.repeat()},this.repeat=(0,c.A)(d().mark((function e(){var t,n;return d().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(window.clearTimeout(a.timerId),!a.frozen){e.next=3;break}return e.abrupt("return");case 3:if(e.prev=3,a.inProgress=!0,0!==a.lastCallTime&&null!==(t=a.options)&&void 0!==t&&t.getSkipNextCall()){e.next=8;break}return e.next=8,null===(n=a.callback)||void 0===n?void 0:n.call(a);case 8:return e.prev=8,a.inProgress=!1,a.lastCallTime=Date.now(),a.timerId=window.setTimeout(a.repeat,a.timeout),e.finish(8);case 13:case"end":return e.stop()}}),e,null,[[3,,8,13]])}))),this.callback=t,this.timeout=Math.max(3e3,n),this.options=r,document.addEventListener("visibilitychange",this.onVisibilityChange),this.repeat()}return(0,l.A)(e,[{key:"destroy",value:function(){document.removeEventListener("visibilitychange",this.onVisibilityChange),window.clearTimeout(this.timerId),delete this.callback,delete this.options}}]),e}(),h=n(79329),m=3e4;function A(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.timeout,r=void 0===n?m:n,i=t.destructFn,o=t.onlyOnce,c=t.forceAutoRefresh,u=(0,s.d4)(h.ie),l=a.useRef({skipNextCall:!u}),p=null!=c?c:u;l.current.skipNextCall=!p,a.useEffect((function(){var t;return o?null==e||e():t=e?new f(e,r,{getSkipNextCall:function(){return l.current.skipNextCall}}):void 0,function(){var e;null===(e=t)||void 0===e||e.destroy(),null==i||i()}}),[e,r,i,o])}function v(e,t){for(var n=arguments.length,s=new Array(n>2?n-2:0),i=2;i<n;i++)s[i-2]=arguments[i];var o=T.apply(void 0,s);A(a.useCallback((function(){null==e||e.apply(void 0,(0,r.A)(o))}),[e,o]),t)}function T(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var r=a.useRef(t);return a.useMemo((function(){return o()(r.current,t)||(r.current=t),r.current}),[t])}},11896:(e,t,n)=>{n.d(t,{c:()=>r});var r={CLUSTER_PARAMS:"CLUSTER_PARAMS",ACCOUNTS:"ACCOUNTS_",NAVIGATION_PRELOAD:"NAVIGATION_PRELOAD",NAVIGATION_CONTENT_DOCUMENT:"NAVIGATION_CONTENT_DOCUMENT",NAVIGATION_CONTENT_FILE:"NAVIGATION_CONTENT_FILE",NAVIGATION_CONTENT_LINK:"NAVIGATION_CONTENT_LINK",NAVIGATION_CONTENT_MAP_NODE:"NAVIGATION_CONTENT_MAP_NODE_",NAVIGATION_CONTENT_REPLICATED_TABLE:"NAVIGATION_CONTENT_REPLICATED_TABLE",NAVIGATION_CONTENT_TABLE_STATIC:"NAVIGATION_CONTENT_TABLE_STATIC",NAVIGATION_CONTENT_TABLE_DYNAMIC:"NAVIGATION_CONTENT_TABLE_DYNAMIC",NAVIGATION_CONTENT_TRANSACTION:"NAVIGATION_CONTENT_TRANSACTION",NAVIGATION_CONTENT_TRANSACTION_MAP:"NAVIGATION_CONTENT_TRANSACTION_MAP",NAVIGATION_TAB_ACL:"NAVIGATION_TAB_ACL",NAVIGATION_TAB_ACL_ACCESS:"NAVIGATION_TAB_ACL_ACCESS",NAVIGATION_TAB_ANNOTATION:"NAVIGATION_TAB_ANNOTATION",NAVIGATION_TAB_ATTRIBUTES:"NAVIGATION_TAB_ATTRIBUTES",NAVIGATION_TAB_USER_ATTRIBUTES:"NAVIGATION_TAB_USER_ATTRIBUTES",NAVIGATION_TAB_LOCKS:"NAVIGATION_TAB_LOCKS",NAVIGATION_TAB_SCHEMA:"NAVIGATION_TAB_SCHEMA",NAVIGATION_TAB_TABLETS:"NAVIGATION_TAB_TABLETS",NAVIGATION_TAB_TABLET_ERRORS:"NAVIGATION_TAB_TABLET_ERRORS",OPERATIONS_LIST:"OPERATIONS_LIST_",OPERATION:"OPERATION",OPERATION_TAB_DETAILS:"OPERATION_TAB_DETAILS",OPERATION_TAB_ATTRIBUTES:"OPERATION_TAB_ATTRIBUTES",OPERATION_TAB_SPECIFICATION:"OPERATION_TAB_SPECIFICATION",OPERATION_TAB_STATISTICS:"OPERATION_TAB_STATISTICS",OPERATION_TAB_MONITOR:"OPERATION_TAB_MONITOR",OPERATION_TAB_PARTITION_SIZES:"OPERATION_TAB_PARTITION_SIZES",OPERATION_TAB_JOB_SIZES:"OPERATION_TAB_JOB_SIZES",OPERATION_TAB_JOBS:"OPERATION_TAB_JOBS",SCHEDULING:"SCHEDULING_",SCHEDULING_OVERVIEW:"SCHEDULING_OVERVIEW",SCHEDULING_DETAILS:"SCHEDULING_DETAILS",SCHEDULING_MONITOR:"SCHEDULING_MONITOR",SCHEDULING_ACL:"SCHEDULING_ACL",YQL_KIT_WIDGET:"YQL_KIT_WIDGET"}}}]);
|
2
|
+
//# sourceMappingURL=cluster-page-wrapper.e42322f0.chunk.js.map
|