@ytsaurus/ui 1.63.1 → 1.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +11 -10
  2. package/dist/public/build/assets-manifest.json +35 -35
  3. package/dist/public/build/css/main.b2af1626.css +10 -0
  4. package/dist/public/build/css/main.b2af1626.css.map +1 -0
  5. package/dist/public/build/js/{4364.aa1ab5fb.chunk.js → 2081.56ca6548.chunk.js} +2 -2
  6. package/dist/public/build/js/2081.56ca6548.chunk.js.map +1 -0
  7. package/dist/public/build/js/4016.03291f63.chunk.js +3 -0
  8. package/dist/public/build/js/4016.03291f63.chunk.js.map +1 -0
  9. package/dist/public/build/js/6729.91ef11dc.chunk.js +2 -0
  10. package/dist/public/build/js/6729.91ef11dc.chunk.js.map +1 -0
  11. package/dist/public/build/js/{8460.2b27e2b7.chunk.js → 8460.a458b9c6.chunk.js} +2 -2
  12. package/dist/public/build/js/8460.a458b9c6.chunk.js.map +1 -0
  13. package/dist/public/build/js/{chyt.125f3e77.chunk.js → chyt.fa2fdae2.chunk.js} +2 -2
  14. package/dist/public/build/js/chyt.fa2fdae2.chunk.js.map +1 -0
  15. package/dist/public/build/js/{cluster-page-wrapper.c9e6c27c.chunk.js → cluster-page-wrapper.eddde18f.chunk.js} +2 -2
  16. package/dist/public/build/js/{cluster-page-wrapper.c9e6c27c.chunk.js.map → cluster-page-wrapper.eddde18f.chunk.js.map} +1 -1
  17. package/dist/public/build/js/main.693c4cb1.js +3 -0
  18. package/dist/public/build/js/main.693c4cb1.js.map +1 -0
  19. package/dist/public/build/js/{manage-tokens.e9106aad.chunk.js → manage-tokens.1c4ee171.chunk.js} +2 -2
  20. package/dist/public/build/js/manage-tokens.1c4ee171.chunk.js.map +1 -0
  21. package/dist/public/build/js/{navigation-flow.91ee109f.chunk.js → navigation-flow.f7bcba21.chunk.js} +2 -2
  22. package/dist/public/build/js/navigation-flow.f7bcba21.chunk.js.map +1 -0
  23. package/dist/public/build/js/navigation.c8c7b9cc.chunk.js +2 -0
  24. package/dist/public/build/js/navigation.c8c7b9cc.chunk.js.map +1 -0
  25. package/dist/public/build/js/{query-results.4c207fef.chunk.js → query-results.4e6d702e.chunk.js} +2 -2
  26. package/dist/public/build/js/query-results.4e6d702e.chunk.js.map +1 -0
  27. package/dist/public/build/js/{query-tracker.badbc586.chunk.js → query-tracker.dd388474.chunk.js} +2 -2
  28. package/dist/public/build/js/{query-tracker.badbc586.chunk.js.map → query-tracker.dd388474.chunk.js.map} +1 -1
  29. package/dist/public/build/js/{runtime.f98c3e55.js → runtime.7752c183.js} +2 -2
  30. package/dist/public/build/js/{runtime.f98c3e55.js.map → runtime.7752c183.js.map} +1 -1
  31. package/dist/public/build/js/system.57ed0f9d.chunk.js +2 -0
  32. package/dist/public/build/js/system.57ed0f9d.chunk.js.map +1 -0
  33. package/dist/public/build/manifest.json +30 -30
  34. package/dist/server/configs/e2e/local.js +1 -0
  35. package/dist/shared/constants/settings-types.d.ts +6 -3
  36. package/dist/shared/ui-settings.d.ts +5 -0
  37. package/package.json +2 -2
  38. package/dist/public/build/css/main.070fd473.css +0 -10
  39. package/dist/public/build/css/main.070fd473.css.map +0 -1
  40. package/dist/public/build/js/4016.80b4ae08.chunk.js +0 -3
  41. package/dist/public/build/js/4016.80b4ae08.chunk.js.map +0 -1
  42. package/dist/public/build/js/4364.aa1ab5fb.chunk.js.map +0 -1
  43. package/dist/public/build/js/6729.54f0fda8.chunk.js +0 -2
  44. package/dist/public/build/js/6729.54f0fda8.chunk.js.map +0 -1
  45. package/dist/public/build/js/8460.2b27e2b7.chunk.js.map +0 -1
  46. package/dist/public/build/js/chyt.125f3e77.chunk.js.map +0 -1
  47. package/dist/public/build/js/main.61fc9935.js +0 -3
  48. package/dist/public/build/js/main.61fc9935.js.map +0 -1
  49. package/dist/public/build/js/manage-tokens.e9106aad.chunk.js.map +0 -1
  50. package/dist/public/build/js/navigation-flow.91ee109f.chunk.js.map +0 -1
  51. package/dist/public/build/js/navigation.22bd542f.chunk.js +0 -2
  52. package/dist/public/build/js/navigation.22bd542f.chunk.js.map +0 -1
  53. package/dist/public/build/js/query-results.4c207fef.chunk.js.map +0 -1
  54. package/dist/public/build/js/system.25e9136a.chunk.js +0 -2
  55. package/dist/public/build/js/system.25e9136a.chunk.js.map +0 -1
  56. /package/dist/public/build/js/{4016.80b4ae08.chunk.js.LICENSE.txt → 4016.03291f63.chunk.js.LICENSE.txt} +0 -0
  57. /package/dist/public/build/js/{main.61fc9935.js.LICENSE.txt → main.693c4cb1.js.LICENSE.txt} +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[4637],{73032:(e,t,n)=>{n.d(t,{H:()=>u});var r=n(9736),a=n(77810),o=n(75299),s=n(76872),i=n(93209),c=n(64922),l=(0,s.A)("yt-collapsed-string"),u=function(e){var t=e.value,n=e.limit,s=void 0===n?200:n,u=(0,o.A)(!1),d=(0,r.A)(u,2),f=d[0],v=d[1],m=t.length>s,h=(0,a.useMemo)((function(){return f||t.length<=s?t:t.slice(0,s-1)+"…"}),[f,s,t]);return(0,c.jsxs)("div",{className:l(),children:[h,m&&(0,c.jsx)(i.S,{className:l("toggle"),onClick:v,children:f?"Hide":"Show more"})]})}},17852:(e,t,n)=>{n.d(t,{D7:()=>v,lN:()=>w,om:()=>f,ps:()=>h});var r=n(13322),a=n(40319),o=n(76872),s=n(49214),i=n.n(s),c=n(39760),l=n.n(c),u=n(27528),d=n.n(u),f=(0,o.A)("role-list-control");function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=[],a=[],o=[];l()(e,(function(e){var t=e.isUnrecognized,s=e.isRequested,i=e.isApproved,c=e.isDepriving;t?o.push(e):c?a.push(e):i||s?r.push(e):n.push(e)}));var s=n.map((function(e){return m(e)})),i=t.map((function(e){return{title:e,data:{},frozen:!0}}));return{newItems:[],current:{title:"Current",data:s.concat(i)},toAdd:{title:"Will be added",itemClassName:f("item-to-add"),data:r.map((function(e){return m(e,{frozen:!0})}))},toRemove:{title:"Will be removed",itemClassName:f("item-to-remove"),data:a.map((function(e){return m(e,{frozen:!0})}))},unrecognized:{title:"Unrecognized",itemClassName:f("item-unrecognized"),data:o.map((function(e){return m(e,{frozen:!0})}))}}}function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.A)({title:e.text||e.value,data:e},t)}function h(e){var t=e.current,n=e.newItems,a=e.toAdd;return[].concat((0,r.A)(n),(0,r.A)(p(t)),(0,r.A)(p(a)))}function p(e){var t=(e||{}).data;return d()(i()(t,(function(e){return!e.removed})),(function(e){var t=e.data||{};return{type:t.type,value:t.value}}))}function w(e){var t=e.current,n=e.newItems||[],r=(t&&t.data||[]).filter((function(e){return e.removed}));return{added:n.map((function(e){var t=e.type,n=e.value;return"users"===t?{user:n}:{group:n}})),removed:r.map((function(e){var t=e.data||{},n=t.value;return"users"===t.type?{user:n}:{group:n}}))}}},20361:(e,t,n)=>{n.d(t,{J_:()=>x,Vm:()=>E,yz:()=>S,yZ:()=>N,lN:()=>b.lN,Y:()=>A,Ln:()=>y,D7:()=>b.D7,ps:()=>b.ps});var r=n(28407),a=n(70232),o=n.n(a),s=n(77810),i=n(33882),c=n(40319),l=n(9736),u=n(64922),d=n(68175),f=n(76872),v=n(81738),m=n(29347),h=n.n(m),p=n(27528),w=n.n(p),g=(0,f.A)("yt-dialog-error");function x(e){return(0,u.jsx)(v.A,(0,c.A)((0,c.A)({},e),{},{className:g()}))}function A(e){return h()(w()(e,(function(e,t){return e?{name:"error_".concat(t),type:"block",extras:{children:(0,u.jsx)(x,{error:e})}}:void 0})))}var k="FINAL_FORM/form-error";function y(e){return{validationErrors:(0,d.A)({},k,(0,u.jsx)(x,{error:e}))}}var b=n(17852);function C(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(164),n.e(2209),n.e(6756),n.e(2640),n.e(6652),n.e(937),n.e(3776),n.e(3716),n.e(5423),n.e(9641),n.e(6019),n.e(3320),n.e(1051),n.e(8512),n.e(7315),n.e(5695),n.e(3990),n.e(3724),n.e(9558),n.e(8427),n.e(5451),n.e(3784),n.e(2736)]).then(n.bind(n,36381))}var j,N=(j=(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.YTDialog,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),function(e){var t=s.useState(!1),n=(0,l.A)(t,2),r=n[0],a=n[1];return s.useEffect((function(){!r&&e.visible&&a(!0)}),[e.visible,r]),r?(0,u.jsx)(j,(0,c.A)({},e)):null});(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.RoleListControl,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");var E=(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.EditableList,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),S=(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.TabFieldVertical,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"")},50239:(e,t,n)=>{n.r(t),n.d(t,{ManageTokensModalContent:()=>te,closeManageTokensModal:()=>S,openManageTokensModal:()=>E});var r=n(28407),a=n(13322),o=n(9736),s=n(70232),i=n.n(s),c=n(76872),l=n(41655),u=n.n(l),d=n(77810),f=n(44693),v=n(92423),m=n(69442),h=n.n(m),p=n(11960),w=n(20361),g=n(40319),x=n(64714),A=n(29081),k=n(52797),y=n(30320),b=n(48971);function C(){var e=(0,A.by)();if(e){var t=(0,k.lt)(e);if(t)return{proxy:(0,k.v9)(t)}}return{}}var j=function(e){return function(t){return t({type:y.WZ.REQUEST}),x.$S.listUserTokens(x.Vu.listUserTokens,{parameters:(0,g.A)((0,g.A)({},e),{},{with_metadata:!0}),setup:C()}).then((function(e){t({type:y.WZ.SUCCESS,data:{data:e}})})).catch((function(e){throw t({type:y.WZ.FAILURE,data:{error:e}}),e}))}},N=function(e){var t=e.credentials,n=e.token_sha256;return function(){return(0,b.fI)(x.$S.revokeToken(x.Vu.issueToken,{parameters:(0,g.A)({token_sha256:n},t),setup:C()}),{autoHide:!0,toasterName:n,successContent:"The token has been removed"})}},E=function(){return function(e){e({type:y.ZG})}},S=function(){return function(e){e({type:y.h$})}},T=n(51194),z=n(15647),R=n(97082),M=n(60620),Z=n(28640),_=n(77318);function I(e){return P.apply(this,arguments)}function P(){return(P=(0,r.A)(i().mark((function e(t){var n;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t));case 2:return n=e.sent,e.abrupt("return",(0,a.A)(new Uint8Array(n)).map((function(e){return("00"+e.toString(16)).slice(-2)})).join(""));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var L=n(29121),D=n(12937),B=n(55682),O=n(50073),F=n(64922),V=d.createContext(void 0),H=function(e){var t,n=d.useState(),s=(0,o.A)(n,2),c=s[0],l=s[1],u=(0,z.d4)(k.ID),v=null!==(t=(0,z.d4)(k.kV))&&void 0!==t?t:"";return(0,F.jsx)(F.Fragment,{children:(0,F.jsx)(O.l,{open:e.visible,hasCloseButton:!0,onClose:e.handleCancel,children:(0,F.jsx)(w.yZ,{headerProps:{title:"Authentication"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(){var t=(0,r.A)(i().mark((function t(n){var r;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return l(void 0),r=n.getState().values.password,t.abrupt("return",I(r).then((function(t){B.A.post("/api/yt/".concat(v,"/login"),{username:u,password:r}).then((function(){return e.handleConfirm(t)})).catch((function(e){var t;return l((null==e||null===(t=e.response)||void 0===t?void 0:t.data)||e)}))})));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),fields:[{name:"error-block",type:"block",extras:{children:(0,F.jsx)(f.F,{message:"To access tokens management, you need enter your password"})}},{name:"password",type:"text",required:!0,caption:"Password",extras:function(){return{type:"password"}}}].concat((0,a.A)((0,w.Y)([c]))),footerProps:{propsButtonCancel:{onClick:e.handleCancel}}})})})},Y=function(){function e(){(0,L.A)(this,e),this.promise=void 0,this.resolve=function(e){},this.reject=function(e){}}return(0,D.A)(e,[{key:"create",value:function(){var e=this;return this.promise=new Promise((function(t,n){e.resolve=function(n){t(n),e.promise=void 0,e.resolve=function(){}},e.reject=function(t){t&&n(t),e.promise=void 0,e.reject=function(){}}})),this.promise}}]),e}();function $(e){var t=e.children,n=d.useState(!1),r=(0,o.A)(n,2),a=r[0],s=r[1],i=d.useRef(new Y),c=d.useMemo((function(){return{getPassword:function(){return s(!0),i.current.create()}}}),[s]);return(0,F.jsxs)(V.Provider,{value:c,children:[t,(0,F.jsx)(H,{visible:a,handleCancel:function(){s(!1),i.current.reject(new Error("cancel password window"))},handleConfirm:function(e){s(!1),i.current.resolve(e)}})]})}function U(){var e=d.useContext(V);if(!e)throw new Error("Wrap your app into ManageTokensPasswordModalContextProvider");return e}var W=n(73032),q=n(64772),G=(0,c.A)("manage-tokens-modal-content"),J=function(e){var t=e.onClose,n=U().getPassword,r=(0,z.d4)(k.ID),s=(0,T._)(),i=(0,d.useState)(),c=(0,o.A)(i,2),l=c[0],u=c[1],m=(0,d.useState)(),h=(0,o.A)(m,2),p=h[0],A=h[1];return p?(0,F.jsxs)("div",{className:G("new-token"),children:[(0,F.jsx)("h2",{children:"Copy token value"}),(0,F.jsx)(f.F,{theme:"warning",message:"Please save the token value. It is impossible to get the token value after closing the dialog"}),(0,F.jsx)("br",{}),(0,F.jsx)(f.F,{message:p,layout:"horizontal",actions:(0,F.jsx)(Z.A,{text:p})}),(0,F.jsx)("div",{className:G("tokens-action"),children:(0,F.jsx)(v.$,{size:"l",view:"action",onClick:function(){t()},children:"Close"})})]}):(0,F.jsx)(w.yZ,{headerProps:{title:"Generate token"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(e){var t=e.getState().values.description;return u(void 0),n().then((function(e){return s(function(e){var t=e.description,n=e.credentials;return function(){return x.$S.issueToken(x.Vu.issueToken,{parameters:(0,g.A)({description:t},n),setup:C()})}}({description:t,credentials:{user:r,password_sha256:e}})).then((function(t){return A(t),s(j({user:r,password_sha256:e})).then((function(){})).catch((function(){}))})).catch((function(e){return u(e),Promise.reject(e)}))})).catch((function(e){throw e}))},fields:[{name:"description",type:"textarea",caption:"Description"}].concat((0,a.A)((0,w.Y)([l]))),footerProps:{propsButtonCancel:{onClick:function(){t()}}}})},K=function(e){var t=e.onSuccess,n=(0,d.useState)(),s=(0,o.A)(n,2),c=s[0],l=s[1],u=(0,T._)(),v=(0,z.d4)(k.ID),m=function(){var e=(0,r.A)(i().mark((function e(n){var r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.getState().values,l(void 0),e.next=4,I(r.password).then((function(e){return u(j({user:v,password_sha256:e})).then((function(){t()})).catch((function(e){var t;return l((null==e||null===(t=e.response)||void 0===t?void 0:t.data)||e)}))}));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return(0,F.jsx)(w.yZ,{headerProps:{title:"Authentication"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:m,fields:[{name:"error-block",type:"block",extras:{children:(0,F.jsx)(f.F,{message:"To access tokens management, you need enter your password"})}},{name:"password",type:"text",required:!0,caption:"Password",extras:function(){return{type:"password"}}}].concat((0,a.A)((0,w.Y)([c]))),footerProps:{propsButtonCancel:{onClick:function(){u(S())}}}})},Q=function(e){var t=(0,d.useState)(!1),n=(0,o.A)(t,2),r=n[0],a=n[1],s=function(){a(!1)};return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(v.$,{size:"s",onClick:function(){a(!0)},children:(0,F.jsx)(M.A,{awesome:"trash-bin"})}),(0,F.jsx)(p.A,{content:"Are you sure you want to revoke the token? This action CANNOT be undone.",onCancel:s,onConfirm:function(){e.handleClickRemoveToken(e.index),a(!1)},onOutsideClick:s,visible:r})]})},X=function(e){var t=e.onSuccessRemove,n=e.onClickGenerateTokenButton,r=U().getPassword,a=(0,T._)(),o=(0,z.d4)(R.B),s=(0,z.d4)(k.ID),i=d.useCallback((function(e){return r().then((function(n){return a(N({credentials:{user:s,password_sha256:n},token_sha256:o[e].tokenHash})).then((function(){return a(j({user:s,password_sha256:n})).finally((function(){return t()}))}))}))}),[r,s,t,o,N,a]);return(0,F.jsxs)("div",{className:G("tokens"),children:[(0,F.jsx)("h2",{children:"Authentication Tokens"}),(0,F.jsx)("div",{className:G("generate-token-button"),children:(0,F.jsx)(v.$,{size:"l",view:"action",onClick:function(){return n()},children:"Generate token"})}),(0,F.jsx)("div",{className:G("tokens-table"),children:(0,F.jsx)(_.Ay,{loaded:!0,useThemeYT:!0,data:o,noItemsText:"No tokens found",rowClassName:function(){return G("table-row")},columns:[{name:"tokenPrefix",header:"Token",width:110,className:G("table-cell"),render:function(e){var t=e.value;return t?"".concat(String(t),"..."):q.A.NO_VALUE}},{name:"tokenHash",header:"Token Hash",width:110,className:G("table-cell",{name:"hash"}),render:function(e){var t=e.value;return(0,F.jsxs)(F.Fragment,{children:[h()(String(t),{length:12}),(0,F.jsx)(Z.A,{title:"Copy error",view:"flat-secondary",text:t,size:"xs"})]})}},{name:"description",header:"Description",width:320,className:G("table-cell",{name:"description"}),render:function(e){return e.value?(0,F.jsx)(W.H,{limit:100,value:e.value}):""}},{name:"creationTime",header:"Issued At",width:160,className:G("table-cell"),render:function(e){return e.value?u()(e.value).format("DD/MM/YYYY hh:mm:ss"):""}},{name:"",width:30,className:G("table-cell"),render:function(e){var t=e.index;return(0,F.jsx)(Q,{index:t,handleClickRemoveToken:i})}}],settings:{stickyHead:"moving",displayIndices:!1,sortable:!1,highlightRows:!1,stripedRows:!1,disableSortReset:!0}})})]})},ee=function(e){return e[e.default=0]="default",e[e.tokens=1]="tokens",e[e.generate=2]="generate",e}(ee||{}),te=function(){var e,t,n=(e=(0,d.useState)(ee.default),{section:(t=(0,o.A)(e,2))[0],setSection:t[1]}),r=n.section,a=n.setSection,s=(0,d.useMemo)((function(){switch(r){case ee.default:return(0,F.jsx)(K,{onSuccess:function(){return a(ee.tokens)}});case ee.tokens:return(0,F.jsx)(X,{onSuccessRemove:function(){return a(ee.tokens)},onClickGenerateTokenButton:function(){return a(ee.generate)}});case ee.generate:return(0,F.jsx)(J,{onClose:function(){return a(ee.tokens)}});default:return null}}),[r]);return(0,F.jsx)($,{children:(0,F.jsx)("div",{className:G("content"),children:s})})}},51194:(e,t,n)=>{n.d(t,{_:()=>a});var r=n(15647),a=function(){return(0,r.wA)()}},44693:(e,t,n)=>{n.d(t,{F:()=>N});var r=n(77810),a=n(72890),o=n(92423),s=n(73139),i=n(72679),c=n(54179),l=n(6740),u=n(6736);const d=r.createContext(null),f=()=>{const e=r.useContext(d);if(!e)throw new Error('Alert: `useAlertContext` hook is used out of "AlertContext"');return e},v=e=>{const{view:t}=f();return r.createElement(o.$,Object.assign({view:"filled"===t?"normal-contrast":void 0},e))};const m=(0,n(21086).om)("alert"),h=({layout:e,view:t,children:n})=>r.createElement(d.Provider,{value:{layout:e,view:t}},n);var p=n(12663);var w=n(44315);var g=n(16822);var x=n(71182);const A={danger:{filled: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:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"})),outlined: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:"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"}))},info:{filled: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:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z",clipRule:"evenodd"})),outlined:p.A},success:{filled: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:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z",clipRule:"evenodd"})),outlined:w.A},warning:{filled: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:"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"})),outlined:g.A},utility:{filled: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",d:"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z"})),outlined:x.A},normal:null};var k=n(85137),y=n(54205);const b=JSON.parse('{"label_close":"Close"}'),C=JSON.parse('{"label_close":"Закрыть"}'),j=(0,y.N)({en:b,ru:C},"Alert"),N=e=>{const{theme:t="normal",view:n="filled",layout:d="vertical",message:f,className:v,corners:p,style:w,onClose:g,align:x,qa:A}=e;return r.createElement(h,{layout:d,view:n},r.createElement(s.Z,{style:w,className:m({corners:p},(0,l.Y)({py:4,px:5},v)),theme:t,view:n,qa:A},r.createElement(u.s,{gap:"3",alignItems:x},void 0===e.icon?r.createElement(N.Icon,{theme:t,view:n}):e.icon,r.createElement(u.s,{direction:"vertical"===d?"column":"row",gap:"5",grow:!0},r.createElement(u.s,{gap:"2",grow:!0,className:m("text-content")},r.createElement(u.s,{direction:"column",gap:"1",grow:!0,justifyContent:x},"string"==typeof e.title?r.createElement(N.Title,{text:e.title}):e.title,f)),Array.isArray(e.actions)?r.createElement(N.Actions,{items:e.actions}):e.actions),g&&r.createElement(o.$,{view:"flat",className:m("close-btn"),onClick:g,extraProps:{"aria-label":j("label_close")}},r.createElement(i.I,{data:a.A,size:18,className:(0,c.$)({color:"secondary"})})))))};N.Icon=({className:e,theme:t,view:n="filled",size:a=18})=>{const o=A[t];if(!o)return null;let s;return"success"===t?s="positive":"normal"!==t&&(s=t),r.createElement("div",{className:m("icon",(0,c.$)({color:s},e))},r.createElement(i.I,{data:o[n],size:a}))},N.Title=({text:e,className:t})=>r.createElement(k.E,{variant:"subheader-2",className:m("title",t)},e),N.Actions=({items:e,children:t,className:n})=>{const{layout:a}=f();return r.createElement(u.s,{className:m("actions",{minContent:"horizontal"===a},n),direction:"row",gap:"3",wrap:!0,alignItems:"horizontal"===a?"center":"flex-start"},(null==e?void 0:e.map((({handler:e,text:t},n)=>r.createElement(v,{key:n,onClick:e},t))))||t)},N.Action=v},73139:(e,t,n)=>{n.d(t,{Z:()=>c});var r=n(56911),a=n(77810),o=n(3564),s=n(92060);const i=(0,n(21086).om)("card"),c=a.forwardRef((function(e,t){const{type:n="container",theme:c,view:l,size:u="m",children:d,className:f,onClick:v,disabled:m,selected:h}=e,p=(0,r.Tt)(e,["type","theme","view","size","children","className","onClick","disabled","selected"]),w="selection"===n,g="container"===n,x=("action"===n||w)&&Boolean(v)&&!(m||h),A=g?"normal":void 0,k=g||w?"outlined":void 0,y=x?v:void 0,{onKeyDown:b}=(0,o.N)(v);return a.createElement(s.a,Object.assign({ref:t,role:x?"button":void 0,className:i({theme:c||A,view:l||k,type:n,selected:h,size:u,disabled:m,clickable:x},f),onClick:y,onKeyDown:x?b:void 0,tabIndex:x?0:void 0},p),d)}))},75299:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(77810),a=function(e,t){return"boolean"==typeof t?t:!e};const o=function(e){return(0,r.useReducer)(a,e)}}}]);
2
- //# sourceMappingURL=manage-tokens.e9106aad.chunk.js.map
1
+ "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[4637],{73032:(e,t,n)=>{n.d(t,{H:()=>u});var r=n(9736),a=n(77810),o=n(75299),s=n(76872),i=n(93209),c=n(64922),l=(0,s.A)("yt-collapsed-string"),u=function(e){var t=e.value,n=e.limit,s=void 0===n?200:n,u=(0,o.A)(!1),d=(0,r.A)(u,2),f=d[0],m=d[1],v=t.length>s,h=(0,a.useMemo)((function(){return f||t.length<=s?t:t.slice(0,s-1)+"…"}),[f,s,t]);return(0,c.jsxs)("div",{className:l(),children:[h,v&&(0,c.jsx)(i.S,{className:l("toggle"),onClick:m,children:f?"Hide":"Show more"})]})}},17852:(e,t,n)=>{n.d(t,{D7:()=>m,lN:()=>w,om:()=>f,ps:()=>h});var r=n(13322),a=n(40319),o=n(76872),s=n(49214),i=n.n(s),c=n(39760),l=n.n(c),u=n(27528),d=n.n(u),f=(0,o.A)("role-list-control");function m(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=[],a=[],o=[];l()(e,(function(e){var t=e.isUnrecognized,s=e.isRequested,i=e.isApproved,c=e.isDepriving;t?o.push(e):c?a.push(e):i||s?r.push(e):n.push(e)}));var s=n.map((function(e){return v(e)})),i=t.map((function(e){return{title:e,data:{},frozen:!0}}));return{newItems:[],current:{title:"Current",data:s.concat(i)},toAdd:{title:"Will be added",itemClassName:f("item-to-add"),data:r.map((function(e){return v(e,{frozen:!0})}))},toRemove:{title:"Will be removed",itemClassName:f("item-to-remove"),data:a.map((function(e){return v(e,{frozen:!0})}))},unrecognized:{title:"Unrecognized",itemClassName:f("item-unrecognized"),data:o.map((function(e){return v(e,{frozen:!0})}))}}}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,a.A)({title:e.text||e.value,data:e},t)}function h(e){var t=e.current,n=e.newItems,a=e.toAdd;return[].concat((0,r.A)(n),(0,r.A)(p(t)),(0,r.A)(p(a)))}function p(e){var t=(e||{}).data;return d()(i()(t,(function(e){return!e.removed})),(function(e){var t=e.data||{};return{type:t.type,value:t.value}}))}function w(e){var t=e.current,n=e.newItems||[],r=(t&&t.data||[]).filter((function(e){return e.removed}));return{added:n.map((function(e){var t=e.type,n=e.value;return"users"===t?{user:n}:{group:n}})),removed:r.map((function(e){var t=e.data||{},n=t.value;return"users"===t.type?{user:n}:{group:n}}))}}},20361:(e,t,n)=>{n.d(t,{J_:()=>x,Vm:()=>E,yz:()=>S,yZ:()=>N,lN:()=>b.lN,Y:()=>A,Ln:()=>y,D7:()=>b.D7,ps:()=>b.ps});var r=n(28407),a=n(70232),o=n.n(a),s=n(77810),i=n(33882),c=n(40319),l=n(9736),u=n(64922),d=n(68175),f=n(76872),m=n(81738),v=n(29347),h=n.n(v),p=n(27528),w=n.n(p),g=(0,f.A)("yt-dialog-error");function x(e){return(0,u.jsx)(m.A,(0,c.A)((0,c.A)({},e),{},{className:g()}))}function A(e){return h()(w()(e,(function(e,t){return e?{name:"error_".concat(t),type:"block",extras:{children:(0,u.jsx)(x,{error:e})}}:void 0})))}var k="FINAL_FORM/form-error";function y(e){return{validationErrors:(0,d.A)({},k,(0,u.jsx)(x,{error:e}))}}var b=n(17852);function C(){return Promise.all([n.e(8096),n.e(4724),n.e(6030),n.e(1086),n.e(164),n.e(2209),n.e(6756),n.e(2640),n.e(6652),n.e(937),n.e(3776),n.e(3716),n.e(5423),n.e(9641),n.e(6019),n.e(3320),n.e(1051),n.e(8512),n.e(7315),n.e(5695),n.e(3990),n.e(3724),n.e(9558),n.e(8427),n.e(5451),n.e(3784),n.e(2736)]).then(n.bind(n,36381))}var j,N=(j=(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.YTDialog,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),function(e){var t=s.useState(!1),n=(0,l.A)(t,2),r=n[0],a=n[1];return s.useEffect((function(){!r&&e.visible&&a(!0)}),[e.visible,r]),r?(0,u.jsx)(j,(0,c.A)({},e)):null});(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.RoleListControl,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"");var E=(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.EditableList,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),""),S=(0,i.A)(s.lazy((0,r.A)(o().mark((function e(){return o().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,C();case 2:return e.t0=e.sent.TabFieldVertical,e.abrupt("return",{default:e.t0});case 4:case"end":return e.stop()}}),e)})))),"")},50239:(e,t,n)=>{n.r(t),n.d(t,{ManageTokensModalContent:()=>te,closeManageTokensModal:()=>S,openManageTokensModal:()=>E});var r=n(28407),a=n(13322),o=n(9736),s=n(70232),i=n.n(s),c=n(76872),l=n(41655),u=n.n(l),d=n(77810),f=n(44693),m=n(92423),v=n(69442),h=n.n(v),p=n(11960),w=n(20361),g=n(40319),x=n(64714),A=n(29081),k=n(52797),y=n(30320),b=n(48971);function C(){var e=(0,A.by)();if(e){var t=(0,k.lt)(e);if(t)return{proxy:(0,k.v9)(t)}}return{}}var j=function(e){return function(t){return t({type:y.WZ.REQUEST}),x.$S.listUserTokens(x.Vu.listUserTokens,{parameters:(0,g.A)((0,g.A)({},e),{},{with_metadata:!0}),setup:C()}).then((function(e){t({type:y.WZ.SUCCESS,data:{data:e}})})).catch((function(e){throw t({type:y.WZ.FAILURE,data:{error:e}}),e}))}},N=function(e){var t=e.credentials,n=e.token_sha256;return function(){return(0,b.fI)(x.$S.revokeToken(x.Vu.issueToken,{parameters:(0,g.A)({token_sha256:n},t),setup:C()}),{autoHide:!0,toasterName:n,successContent:"The token has been removed"})}},E=function(){return function(e){e({type:y.ZG})}},S=function(){return function(e){e({type:y.h$})}},T=n(51194),z=n(15647),R=n(97082),M=n(60620),Z=n(28640),_=n(77318);function I(e){return P.apply(this,arguments)}function P(){return(P=(0,r.A)(i().mark((function e(t){var n;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t));case 2:return n=e.sent,e.abrupt("return",(0,a.A)(new Uint8Array(n)).map((function(e){return("00"+e.toString(16)).slice(-2)})).join(""));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var L=n(29121),D=n(12937),B=n(55682),O=n(50073),F=n(64922),V=d.createContext(void 0),H=function(e){var t,n=d.useState(),s=(0,o.A)(n,2),c=s[0],l=s[1],u=(0,z.d4)(k.ID),m=null!==(t=(0,z.d4)(k.kV))&&void 0!==t?t:"";return(0,F.jsx)(F.Fragment,{children:(0,F.jsx)(O.l,{open:e.visible,hasCloseButton:!0,onClose:e.handleCancel,children:(0,F.jsx)(w.yZ,{headerProps:{title:"Authentication"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(){var t=(0,r.A)(i().mark((function t(n){var r;return i().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return l(void 0),r=n.getState().values.password,t.abrupt("return",I(r).then((function(t){B.A.post("/api/yt/".concat(m,"/login"),{username:u,password:r}).then((function(){return e.handleConfirm(t)})).catch((function(e){var t;return l((null==e||null===(t=e.response)||void 0===t?void 0:t.data)||e)}))})));case 3:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),fields:[{name:"error-block",type:"block",extras:{children:(0,F.jsx)(f.F,{message:"To access tokens management, you need enter your password"})}},{name:"password",type:"text",required:!0,caption:"Password",extras:function(){return{type:"password"}}}].concat((0,a.A)((0,w.Y)([c]))),footerProps:{propsButtonCancel:{onClick:e.handleCancel}}})})})},Y=function(){function e(){(0,L.A)(this,e),this.promise=void 0,this.resolve=function(e){},this.reject=function(e){}}return(0,D.A)(e,[{key:"create",value:function(){var e=this;return this.promise=new Promise((function(t,n){e.resolve=function(n){t(n),e.promise=void 0,e.resolve=function(){}},e.reject=function(t){t&&n(t),e.promise=void 0,e.reject=function(){}}})),this.promise}}]),e}();function $(e){var t=e.children,n=d.useState(!1),r=(0,o.A)(n,2),a=r[0],s=r[1],i=d.useRef(new Y),c=d.useMemo((function(){return{getPassword:function(){return s(!0),i.current.create()}}}),[s]);return(0,F.jsxs)(V.Provider,{value:c,children:[t,(0,F.jsx)(H,{visible:a,handleCancel:function(){s(!1),i.current.reject(new Error("cancel password window"))},handleConfirm:function(e){s(!1),i.current.resolve(e)}})]})}function U(){var e=d.useContext(V);if(!e)throw new Error("Wrap your app into ManageTokensPasswordModalContextProvider");return e}var W=n(73032),q=n(64772),G=(0,c.A)("manage-tokens-modal-content"),J=function(e){var t=e.onClose,n=U().getPassword,r=(0,z.d4)(k.ID),s=(0,T._)(),i=(0,d.useState)(),c=(0,o.A)(i,2),l=c[0],u=c[1],v=(0,d.useState)(),h=(0,o.A)(v,2),p=h[0],A=h[1];return p?(0,F.jsxs)("div",{className:G("new-token"),children:[(0,F.jsx)("h2",{children:"Copy token value"}),(0,F.jsx)(f.F,{theme:"warning",message:"Please save the token value. It is impossible to get the token value after closing the dialog"}),(0,F.jsx)("br",{}),(0,F.jsx)(f.F,{message:p,layout:"horizontal",actions:(0,F.jsx)(Z.A,{text:p})}),(0,F.jsx)("div",{className:G("tokens-action"),children:(0,F.jsx)(m.$,{size:"l",view:"action",onClick:function(){t()},children:"Close"})})]}):(0,F.jsx)(w.yZ,{headerProps:{title:"Generate token"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(e){var t=e.getState().values.description;return u(void 0),n().then((function(e){return s(function(e){var t=e.description,n=e.credentials;return function(){return x.$S.issueToken(x.Vu.issueToken,{parameters:(0,g.A)({description:t},n),setup:C()})}}({description:t,credentials:{user:r,password_sha256:e}})).then((function(t){return A(t),s(j({user:r,password_sha256:e})).then((function(){})).catch((function(){}))})).catch((function(e){return u(e),Promise.reject(e)}))})).catch((function(e){throw e}))},fields:[{name:"description",type:"textarea",caption:"Description"}].concat((0,a.A)((0,w.Y)([l]))),footerProps:{propsButtonCancel:{onClick:function(){t()}}}})},K=function(e){var t=e.onSuccess,n=(0,d.useState)(),s=(0,o.A)(n,2),c=s[0],l=s[1],u=(0,T._)(),m=(0,z.d4)(k.ID),v=function(){var e=(0,r.A)(i().mark((function e(n){var r;return i().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=n.getState().values,l(void 0),e.next=4,I(r.password).then((function(e){return u(j({user:m,password_sha256:e})).then((function(){t()})).catch((function(e){var t;return l((null==e||null===(t=e.response)||void 0===t?void 0:t.data)||e)}))}));case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return(0,F.jsx)(w.yZ,{headerProps:{title:"Authentication"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:v,fields:[{name:"error-block",type:"block",extras:{children:(0,F.jsx)(f.F,{message:"To access tokens management, you need enter your password"})}},{name:"password",type:"text",required:!0,caption:"Password",extras:function(){return{type:"password"}}}].concat((0,a.A)((0,w.Y)([c]))),footerProps:{propsButtonCancel:{onClick:function(){u(S())}}}})},Q=function(e){var t=(0,d.useState)(!1),n=(0,o.A)(t,2),r=n[0],a=n[1],s=function(){a(!1)};return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(m.$,{size:"s",onClick:function(){a(!0)},children:(0,F.jsx)(M.A,{awesome:"trash-bin"})}),(0,F.jsx)(p.A,{content:"Are you sure you want to revoke the token? This action CANNOT be undone.",onCancel:s,onConfirm:function(){e.handleClickRemoveToken(e.index),a(!1)},onOutsideClick:s,visible:r})]})},X=function(e){var t=e.onSuccessRemove,n=e.onClickGenerateTokenButton,r=U().getPassword,a=(0,T._)(),o=(0,z.d4)(R.B),s=(0,z.d4)(k.ID),i=d.useCallback((function(e){return r().then((function(n){return a(N({credentials:{user:s,password_sha256:n},token_sha256:o[e].tokenHash})).then((function(){return a(j({user:s,password_sha256:n})).finally((function(){return t()}))}))}))}),[r,s,t,o,N,a]);return(0,F.jsxs)("div",{className:G("tokens"),children:[(0,F.jsx)("h2",{children:"Authentication Tokens"}),(0,F.jsx)("div",{className:G("generate-token-button"),children:(0,F.jsx)(m.$,{size:"l",view:"action",onClick:function(){return n()},children:"Generate token"})}),(0,F.jsx)("div",{className:G("tokens-table"),children:(0,F.jsx)(_.Ay,{loaded:!0,useThemeYT:!0,data:o,noItemsText:"No tokens found",rowClassName:function(){return G("table-row")},columns:[{name:"tokenPrefix",header:"Token",width:110,className:G("table-cell"),render:function(e){var t=e.value;return t?"".concat(String(t),"..."):q.A.NO_VALUE}},{name:"tokenHash",header:"Token Hash",width:110,className:G("table-cell",{name:"hash"}),render:function(e){var t=e.value;return(0,F.jsxs)(F.Fragment,{children:[h()(String(t),{length:12}),(0,F.jsx)(Z.A,{title:"Copy error",view:"flat-secondary",text:t,size:"xs"})]})}},{name:"description",header:"Description",width:320,className:G("table-cell",{name:"description"}),render:function(e){return e.value?(0,F.jsx)(W.H,{limit:100,value:e.value}):""}},{name:"creationTime",header:"Issued At",width:160,className:G("table-cell"),render:function(e){return e.value?u()(e.value).format("DD/MM/YYYY hh:mm:ss"):""}},{name:"",width:30,className:G("table-cell"),render:function(e){var t=e.index;return(0,F.jsx)(Q,{index:t,handleClickRemoveToken:i})}}],settings:{stickyHead:"moving",displayIndices:!1,sortable:!1,highlightRows:!1,stripedRows:!1,disableSortReset:!0}})})]})},ee=function(e){return e[e.default=0]="default",e[e.tokens=1]="tokens",e[e.generate=2]="generate",e}(ee||{}),te=function(){var e,t,n=(e=(0,d.useState)(ee.default),{section:(t=(0,o.A)(e,2))[0],setSection:t[1]}),r=n.section,a=n.setSection,s=(0,d.useMemo)((function(){switch(r){case ee.default:return(0,F.jsx)(K,{onSuccess:function(){return a(ee.tokens)}});case ee.tokens:return(0,F.jsx)(X,{onSuccessRemove:function(){return a(ee.tokens)},onClickGenerateTokenButton:function(){return a(ee.generate)}});case ee.generate:return(0,F.jsx)(J,{onClose:function(){return a(ee.tokens)}});default:return null}}),[r]);return(0,F.jsx)($,{children:(0,F.jsx)("div",{className:G("content"),children:s})})}},44693:(e,t,n)=>{n.d(t,{F:()=>N});var r=n(77810),a=n(72890),o=n(92423),s=n(73139),i=n(72679),c=n(54179),l=n(6740),u=n(6736);const d=r.createContext(null),f=()=>{const e=r.useContext(d);if(!e)throw new Error('Alert: `useAlertContext` hook is used out of "AlertContext"');return e},m=e=>{const{view:t}=f();return r.createElement(o.$,Object.assign({view:"filled"===t?"normal-contrast":void 0},e))};const v=(0,n(21086).om)("alert"),h=({layout:e,view:t,children:n})=>r.createElement(d.Provider,{value:{layout:e,view:t}},n);var p=n(12663);var w=n(44315);var g=n(16822);var x=n(71182);const A={danger:{filled: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:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"})),outlined: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:"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z",clipRule:"evenodd"}))},info:{filled: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:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z",clipRule:"evenodd"})),outlined:p.A},success:{filled: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:"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z",clipRule:"evenodd"})),outlined:w.A},warning:{filled: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:"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z",clipRule:"evenodd"})),outlined:g.A},utility:{filled: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",d:"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z"})),outlined:x.A},normal:null};var k=n(85137),y=n(54205);const b=JSON.parse('{"label_close":"Close"}'),C=JSON.parse('{"label_close":"Закрыть"}'),j=(0,y.N)({en:b,ru:C},"Alert"),N=e=>{const{theme:t="normal",view:n="filled",layout:d="vertical",message:f,className:m,corners:p,style:w,onClose:g,align:x,qa:A}=e;return r.createElement(h,{layout:d,view:n},r.createElement(s.Z,{style:w,className:v({corners:p},(0,l.Y)({py:4,px:5},m)),theme:t,view:n,qa:A},r.createElement(u.s,{gap:"3",alignItems:x},void 0===e.icon?r.createElement(N.Icon,{theme:t,view:n}):e.icon,r.createElement(u.s,{direction:"vertical"===d?"column":"row",gap:"5",grow:!0},r.createElement(u.s,{gap:"2",grow:!0,className:v("text-content")},r.createElement(u.s,{direction:"column",gap:"1",grow:!0,justifyContent:x},"string"==typeof e.title?r.createElement(N.Title,{text:e.title}):e.title,f)),Array.isArray(e.actions)?r.createElement(N.Actions,{items:e.actions}):e.actions),g&&r.createElement(o.$,{view:"flat",className:v("close-btn"),onClick:g,extraProps:{"aria-label":j("label_close")}},r.createElement(i.I,{data:a.A,size:18,className:(0,c.$)({color:"secondary"})})))))};N.Icon=({className:e,theme:t,view:n="filled",size:a=18})=>{const o=A[t];if(!o)return null;let s;return"success"===t?s="positive":"normal"!==t&&(s=t),r.createElement("div",{className:v("icon",(0,c.$)({color:s},e))},r.createElement(i.I,{data:o[n],size:a}))},N.Title=({text:e,className:t})=>r.createElement(k.E,{variant:"subheader-2",className:v("title",t)},e),N.Actions=({items:e,children:t,className:n})=>{const{layout:a}=f();return r.createElement(u.s,{className:v("actions",{minContent:"horizontal"===a},n),direction:"row",gap:"3",wrap:!0,alignItems:"horizontal"===a?"center":"flex-start"},(null==e?void 0:e.map((({handler:e,text:t},n)=>r.createElement(m,{key:n,onClick:e},t))))||t)},N.Action=m},73139:(e,t,n)=>{n.d(t,{Z:()=>c});var r=n(56911),a=n(77810),o=n(3564),s=n(92060);const i=(0,n(21086).om)("card"),c=a.forwardRef((function(e,t){const{type:n="container",theme:c,view:l,size:u="m",children:d,className:f,onClick:m,disabled:v,selected:h}=e,p=(0,r.Tt)(e,["type","theme","view","size","children","className","onClick","disabled","selected"]),w="selection"===n,g="container"===n,x=("action"===n||w)&&Boolean(m)&&!(v||h),A=g?"normal":void 0,k=g||w?"outlined":void 0,y=x?m:void 0,{onKeyDown:b}=(0,o.N)(m);return a.createElement(s.a,Object.assign({ref:t,role:x?"button":void 0,className:i({theme:c||A,view:l||k,type:n,selected:h,size:u,disabled:v,clickable:x},f),onClick:y,onKeyDown:x?b:void 0,tabIndex:x?0:void 0},p),d)}))},75299:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(77810),a=function(e,t){return"boolean"==typeof t?t:!e};const o=function(e){return(0,r.useReducer)(a,e)}}}]);
2
+ //# sourceMappingURL=manage-tokens.1c4ee171.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/manage-tokens.1c4ee171.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./src/ui/components/CollapsedString/CollapsedString.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/controls/RoleListControl/utils.ts","webpack://@ytsaurus/ui/./src/ui/components/Dialog/DialogError.tsx","webpack://@ytsaurus/ui/./src/ui/components/Dialog/index.tsx","webpack://@ytsaurus/ui/./src/ui/hocs/withDelayedMount.tsx","webpack://@ytsaurus/ui/./src/ui/store/actions/manage-tokens/index.ts","webpack://@ytsaurus/ui/./src/ui/utils/sha256.ts","webpack://@ytsaurus/ui/./src/ui/containers/ManageTokens/ManageTokensPasswordModal/ManageTokensPasswordModal.tsx","webpack://@ytsaurus/ui/./src/ui/containers/ManageTokens/ManageTokensModalContent/ManageTokensModalContent.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/useAlertContext.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertAction.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/constants.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertContextProvider.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertIcon.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmarkFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleXmark.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleInfoFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/CircleCheckFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/TriangleExclamationFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/esm/ThunderboltFill.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/i18n/index.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/Alert.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertTitle.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Alert/AlertActions.js","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/uikit/build/esm/components/Card/Card.js","webpack://@ytsaurus/ui/./node_modules/react-use/esm/useToggle.js"],"sourcesContent":["import React, {FC, useMemo} from 'react';\nimport {useToggle} from 'react-use';\nimport cn from 'bem-cn-lite';\n\nimport './CollapsedString.scss';\nimport {ClickableText} from '../../components/ClickableText/ClickableText';\n\ntype Props = {\n value: string;\n limit?: number;\n};\n\nconst block = cn('yt-collapsed-string');\n\nexport const CollapsedString: FC<Props> = ({value, limit = 200}) => {\n const [expanded, toggleExpanded] = useToggle(false);\n const hasToggle = value.length > limit;\n\n const text = useMemo(() => {\n return expanded || value.length <= limit ? value : value.slice(0, limit - 1) + '…';\n }, [expanded, limit, value]);\n\n return (\n <div className={block()}>\n {text}\n {hasToggle && (\n <ClickableText className={block('toggle')} onClick={toggleExpanded}>\n {expanded ? 'Hide' : 'Show more'}\n </ClickableText>\n )}\n </div>\n );\n};\n","import cn from 'bem-cn-lite';\n\nimport filter_ from 'lodash/filter';\nimport forEach_ from 'lodash/forEach';\nimport map_ from 'lodash/map';\n\nimport type {EditableManyListsItemType} from '../../../../components/Dialog';\nimport type {ResponsibleType, RoleConverted} from '../../../../utils/acl/acl-types';\nimport type {PreparedRole} from '../../../../utils/acl';\nimport {RoleListControlProps} from './RoleListControl';\n\nexport const block = cn('role-list-control');\n\nexport function prepareRoleListValue(roles: Array<PreparedRole>, otherMembers: Array<string> = []) {\n const current: typeof roles = [];\n const toAdd: typeof roles = [];\n const toRemove: typeof roles = [];\n const unrecognized: typeof roles = [];\n forEach_(roles, (item) => {\n const {isUnrecognized, isRequested, isApproved, isDepriving} = item;\n if (isUnrecognized) {\n unrecognized.push(item);\n } else if (isDepriving) {\n toRemove.push(item);\n } else if (isApproved || isRequested) {\n toAdd.push(item);\n } else {\n current.push(item);\n }\n });\n\n const currentArr = current.map((item) => prepareItemOfCurrent(item));\n const otherArr = otherMembers.map((item) => ({\n title: item,\n data: {},\n frozen: true,\n }));\n\n return {\n newItems: [],\n current: {title: 'Current', data: currentArr.concat(otherArr)},\n toAdd: {\n title: 'Will be added',\n itemClassName: block('item-to-add'),\n data: toAdd.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n toRemove: {\n title: 'Will be removed',\n itemClassName: block('item-to-remove'),\n data: toRemove.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n unrecognized: {\n title: 'Unrecognized',\n itemClassName: block('item-unrecognized'),\n data: unrecognized.map((item) => prepareItemOfCurrent(item, {frozen: true})),\n },\n };\n}\n\nfunction prepareItemOfCurrent(role: PreparedRole, extraProps: any = {}) {\n return {\n title: role.text || role.value,\n data: role,\n ...extraProps,\n };\n}\n\nexport function roleListValueToSubjectList(\n value: RoleListControlProps['value'],\n): Array<ResponsibleType> {\n const {current, newItems, toAdd} = value;\n return [\n ...newItems,\n ...manyListDataItemToSubjectList(current),\n ...manyListDataItemToSubjectList(toAdd),\n ];\n}\n\nfunction manyListDataItemToSubjectList(\n manyListDataItem: EditableManyListsItemType<RoleConverted>,\n): Array<ResponsibleType> {\n const {data} = manyListDataItem || {};\n return map_(\n filter_(data, ({removed}) => !removed),\n ({data}) => {\n const {type, value} = data || {};\n return {type: type!, value: value!};\n },\n );\n}\n\nexport function extractChangedSubjects(value: {\n current: EditableManyListsItemType<RoleConverted>;\n newItems: Array<ResponsibleType>;\n}) {\n const {current, newItems} = value;\n const added = newItems || [];\n const removed = ((current && current.data) || []).filter(({removed}) => removed);\n return {\n added: added.map(({type, value}) => {\n return type === 'users' ? {user: value} : {group: value};\n }),\n removed: removed.map(({data}) => {\n const {value, type} = data || {};\n return type === 'users' ? {user: value} : {group: value};\n }),\n };\n}\n","import React from 'react';\nimport cn from 'bem-cn-lite';\n\nimport type {FORM_ERROR as FormErrorType} from './index';\n\nimport {FIX_MY_TYPE, YTError} from '../../types';\nimport Block from '../../components/Block/Block';\n\nimport compact_ from 'lodash/compact';\nimport map_ from 'lodash/map';\n\nconst block = cn('yt-dialog-error');\n\nexport function DialogError(props: FIX_MY_TYPE) {\n return <Block {...props} className={block()} />;\n}\n\nexport function makeErrorFields(errors: Array<YTError | Error | undefined>) {\n return compact_(\n map_(errors, (error, index) => {\n return error\n ? {\n name: `error_${index}`,\n type: 'block' as const,\n extras: {\n children: <DialogError error={error} />,\n },\n }\n : undefined;\n }),\n );\n}\n\nconst FORM_ERROR: typeof FormErrorType = 'FINAL_FORM/form-error';\n\nexport function makeFormSubmitError(error: YTError) {\n return {\n validationErrors: {\n [FORM_ERROR]: <DialogError error={error} />,\n },\n };\n}\n","import React from 'react';\nimport withLazyLoading from '../../hocs/withLazyLoading';\nimport {withDelayedMount} from '../../hocs/withDelayedMount';\n\nimport type {\n registerDialogControl as RegisterDialogControlFn,\n registerDialogTabControl as RegisterDialogTabControlFn,\n YTDialogType,\n} from './Dialog';\n\nexport type * from './Dialog';\nexport * from './DialogError';\nexport * from './controls/RoleListControl/utils';\n\nexport function importYTDFDialog() {\n return import(/* webpackChunkName: \"yt-df-dialog\" */ './Dialog');\n}\n\nexport const YTDFDialog = withDelayedMount(\n withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).YTDialog};\n }),\n '',\n ),\n) as YTDialogType;\n\nexport function useControlRegistration(\n fn: (params: {\n registerDialogControl: typeof RegisterDialogControlFn;\n registerDialogTabControl: typeof RegisterDialogTabControlFn;\n }) => void,\n) {\n importYTDFDialog().then(({registerDialogControl, registerDialogTabControl}) => {\n fn({registerDialogControl, registerDialogTabControl});\n });\n}\n\nexport type {RoleListControlProps} from './controls/RoleListControl/RoleListControl';\nexport const RoleListControl = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).RoleListControl};\n }),\n '',\n);\n\nexport const EditableList = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).EditableList};\n }),\n '',\n);\n\nexport const TabFieldVertical = withLazyLoading(\n React.lazy(async () => {\n return {default: (await importYTDFDialog()).TabFieldVertical};\n }),\n '',\n);\n","import React from 'react';\n\n/**\n * The hoc allows to delay mounting until `props.visible == true`.\n * The hoc might be useful to wrap components wrapped by React.lazy\n * @param Component\n * @returns\n */\nexport function withDelayedMount<P extends {visible?: boolean}>(Component: React.ComponentType<P>) {\n return function MountOnFirstVisible(props: P) {\n const [mounted, setMounted] = React.useState(false);\n React.useEffect(() => {\n if (!mounted && props.visible) {\n setMounted(true);\n }\n }, [props.visible, mounted]);\n return !mounted ? null : <Component {...props} />;\n };\n}\n","import type {ThunkAction} from 'redux-thunk';\nimport type {RootState} from '../../reducers';\nimport type {ManageTokensListAction} from '../../reducers/manage-tokens/tokens';\nimport {YTApiId, ytApiV4Id} from '../../../rum/rum-wrap-api';\nimport {getQueryTrackerCluster} from '../../../config';\nimport {getClusterConfigByName, getClusterProxy} from '../../selectors/global';\nimport {\n MANAGE_TOKENS_LIST,\n MANAGE_TOKENS_MODALS_CLOSE,\n MANAGE_TOKENS_MODALS_OPEN,\n} from '../../../constants/manage-tokens';\nimport {ManageTokensModalAction} from '../../reducers/manage-tokens/modal';\nimport {wrapApiPromiseByToaster} from '../../../utils/utils';\n\nfunction getQTApiSetup(): {proxy?: string} {\n const QT_CLUSTER = getQueryTrackerCluster();\n if (QT_CLUSTER) {\n const cluster = getClusterConfigByName(QT_CLUSTER);\n if (cluster) {\n return {\n proxy: getClusterProxy(cluster),\n };\n }\n }\n return {};\n}\n\ntype Credentials = {\n user: string;\n password_sha256: string;\n};\nexport const manageTokensGetList = (\n credentials: Credentials,\n): ThunkAction<Promise<unknown>, RootState, unknown, ManageTokensListAction> => {\n return (dispatch) => {\n dispatch({type: MANAGE_TOKENS_LIST.REQUEST});\n\n return ytApiV4Id\n .listUserTokens(YTApiId.listUserTokens, {\n parameters: {\n ...credentials,\n with_metadata: true,\n },\n setup: getQTApiSetup(),\n })\n .then((data) => {\n dispatch({type: MANAGE_TOKENS_LIST.SUCCESS, data: {data}});\n })\n .catch((error) => {\n dispatch({type: MANAGE_TOKENS_LIST.FAILURE, data: {error}});\n\n throw error;\n });\n };\n};\n\nexport const manageTokensCreateToken = ({\n description,\n credentials,\n}: {\n description: string;\n credentials: Credentials;\n}): ThunkAction<Promise<string>, RootState, unknown, ManageTokensListAction> => {\n return () => {\n return ytApiV4Id.issueToken(YTApiId.issueToken, {\n parameters: {\n description,\n ...credentials,\n },\n setup: getQTApiSetup(),\n });\n };\n};\n\nexport const manageTokensRevokeToken = ({\n credentials,\n token_sha256,\n}: {\n token_sha256: string;\n credentials: Credentials;\n}): ThunkAction<Promise<unknown>, RootState, unknown, ManageTokensListAction> => {\n return () => {\n return wrapApiPromiseByToaster(\n ytApiV4Id.revokeToken(YTApiId.issueToken, {\n parameters: {\n token_sha256,\n ...credentials,\n },\n setup: getQTApiSetup(),\n }),\n {\n autoHide: true,\n toasterName: token_sha256,\n successContent: 'The token has been removed',\n },\n );\n };\n};\n\nexport const openManageTokensModal = (): ThunkAction<\n unknown,\n RootState,\n unknown,\n ManageTokensModalAction\n> => {\n return (dispatch) => {\n dispatch({type: MANAGE_TOKENS_MODALS_OPEN});\n };\n};\n\nexport const closeManageTokensModal = (): ThunkAction<\n unknown,\n RootState,\n unknown,\n ManageTokensModalAction\n> => {\n return (dispatch) => {\n dispatch({type: MANAGE_TOKENS_MODALS_CLOSE});\n };\n};\n","export async function sha256(str: string) {\n const buf = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(str));\n\n return [...new Uint8Array(buf)].map((x) => ('00' + x.toString(16)).slice(-2)).join('');\n}\n","import axios from 'axios';\nimport * as React from 'react';\nimport {useSelector} from 'react-redux';\nimport {Alert, Dialog} from '@gravity-ui/uikit';\nimport {sha256} from '../../../utils/sha256';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {getCurrentUserName, getSettingsCluster} from '../../../store/selectors/global';\nimport {YTError} from '../../../../@types/types';\n\ninterface ManageTokensPasswordModalContextValue {\n getPassword: () => Promise<string>;\n}\nexport const ManageTokensPasswordModalContext = React.createContext<\n undefined | ManageTokensPasswordModalContextValue\n>(undefined);\n\ninterface PasswordModalProps {\n visible: boolean;\n handleCancel: () => void;\n handleConfirm: (hash: string) => void;\n}\n\nconst PasswordModal = (props: PasswordModalProps) => {\n const [error, setError] = React.useState<YTError>();\n const username = useSelector(getCurrentUserName);\n const ytAuthCluster = useSelector(getSettingsCluster) ?? '';\n\n return (\n <>\n <Dialog open={props.visible} hasCloseButton={true} onClose={props.handleCancel}>\n <YTDFDialog<{\n password: string;\n }>\n headerProps={{\n title: 'Authentication',\n }}\n pristineSubmittable\n modal={false}\n visible={true}\n initialValues={{}}\n onAdd={async (data) => {\n setError(undefined);\n\n const password = data.getState().values.password;\n\n return sha256(password).then((password_sha256) => {\n axios\n .post(`/api/yt/${ytAuthCluster}/login`, {\n username,\n password,\n })\n .then(() => props.handleConfirm(password_sha256))\n .catch((error) => setError(error?.response?.data || error));\n });\n }}\n fields={[\n {\n name: 'error-block',\n type: 'block',\n extras: {\n children: (\n <Alert message=\"To access tokens management, you need enter your password\" />\n ),\n },\n },\n {\n name: 'password',\n type: 'text',\n required: true,\n caption: 'Password',\n extras: () => ({type: 'password'}),\n },\n ...makeErrorFields([error]),\n ]}\n footerProps={{\n propsButtonCancel: {\n onClick: props.handleCancel,\n },\n }}\n />\n </Dialog>\n </>\n );\n};\n\nclass PromiseWaiter<Data> {\n promise: Promise<Data> | undefined = undefined;\n resolve = (_d: Data) => {};\n reject = (_e?: Error) => {};\n\n create() {\n this.promise = new Promise<Data>((resolve, reject) => {\n this.resolve = (d) => {\n resolve(d);\n this.promise = undefined;\n this.resolve = () => {};\n };\n this.reject = (e) => {\n if (e) {\n reject(e);\n }\n\n this.promise = undefined;\n this.reject = () => {};\n };\n });\n\n return this.promise;\n }\n}\n\nexport function ManageTokensPasswordModalContextProvider({children}: {children: React.ReactChild}) {\n const [visible, setVisible] = React.useState(false);\n const p = React.useRef(new PromiseWaiter<string>());\n const value = React.useMemo(() => {\n return {\n getPassword: () => {\n setVisible(true);\n\n return p.current.create();\n },\n };\n }, [setVisible]);\n\n const handleCancel = () => {\n setVisible(false);\n\n p.current.reject(new Error('cancel password window'));\n };\n\n const handleConfirm = (hash: string) => {\n setVisible(false);\n\n p.current.resolve(hash);\n };\n\n return (\n <ManageTokensPasswordModalContext.Provider value={value}>\n {children}\n <PasswordModal\n visible={visible}\n handleCancel={handleCancel}\n handleConfirm={handleConfirm}\n />\n </ManageTokensPasswordModalContext.Provider>\n );\n}\n\nexport function useManageTokensPasswordModalContext(): ManageTokensPasswordModalContextValue {\n const context = React.useContext(ManageTokensPasswordModalContext);\n\n if (!context) {\n throw new Error('Wrap your app into ManageTokensPasswordModalContextProvider');\n }\n\n return context;\n}\n","import cn from 'bem-cn-lite';\nimport moment from 'moment';\nimport * as React from 'react';\nimport {FC, useMemo, useState} from 'react';\nimport {Alert, Button} from '@gravity-ui/uikit';\nimport type {FormApi} from '../../../components/Dialog';\nimport truncate_ from 'lodash/truncate';\nimport Modal from '../../../components/Modal/Modal';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {\n closeManageTokensModal,\n manageTokensCreateToken,\n manageTokensGetList,\n manageTokensRevokeToken,\n} from '../../../store/actions/manage-tokens';\nimport {useThunkDispatch} from '../../../store/thunkDispatch';\nimport {useSelector} from 'react-redux';\nimport {AuthenticationToken, manageTokensSelector} from '../../../store/selectors/manage-tokens';\nimport {getCurrentUserName} from '../../../store/selectors/global';\nimport Icon from '../../../components/Icon/Icon';\nimport {YTError} from '../../../../@types/types';\nimport ClipboardButton from '../../../components/ClipboardButton/ClipboardButton';\nimport DataTableYT from '../../../components/DataTableYT/DataTableYT';\nimport {sha256} from '../../../utils/sha256';\nimport {\n ManageTokensPasswordModalContextProvider,\n useManageTokensPasswordModalContext,\n} from '../ManageTokensPasswordModal/ManageTokensPasswordModal';\nimport {CollapsedString} from '../../../components/CollapsedString';\nimport format from '../../../common/hammer/format';\n\nimport './ManageTokensModalContent.scss';\n\nconst block = cn('manage-tokens-modal-content');\n\nconst AuthenticationGenerateTokenFormSection: FC<{onClose: () => void}> = ({onClose}) => {\n type FormData = {description: string};\n const {getPassword} = useManageTokensPasswordModalContext();\n const user = useSelector(getCurrentUserName);\n const dispatch = useThunkDispatch();\n const [error, setError] = useState<YTError>();\n const [token, setToken] = useState<string>();\n\n const handleSubmit = (form: FormApi<FormData>) => {\n const {description} = form.getState().values;\n\n setError(undefined);\n\n return getPassword()\n .then((password_sha256) => {\n return dispatch(\n manageTokensCreateToken({\n description,\n credentials: {\n user,\n password_sha256,\n },\n }),\n )\n .then((token) => {\n setToken(token);\n\n return dispatch(\n manageTokensGetList({\n user,\n password_sha256,\n }),\n )\n .then(() => undefined)\n .catch(() => undefined);\n })\n .catch((error) => {\n setError(error);\n\n return Promise.reject(error);\n });\n })\n .catch((error) => {\n throw error;\n });\n };\n\n if (token) {\n return (\n <div className={block('new-token')}>\n <h2>Copy token value</h2>\n <Alert\n theme=\"warning\"\n message=\"Please save the token value. It is impossible to get the token value after closing the dialog\"\n />\n <br />\n <Alert\n message={token}\n layout=\"horizontal\"\n actions={<ClipboardButton text={token} />}\n />\n <div className={block('tokens-action')}>\n <Button\n size=\"l\"\n view=\"action\"\n onClick={() => {\n onClose();\n }}\n >\n Close\n </Button>\n </div>\n </div>\n );\n }\n\n return (\n <YTDFDialog<FormData>\n headerProps={{\n title: 'Generate token',\n }}\n pristineSubmittable\n modal={false}\n visible={true}\n initialValues={{}}\n onAdd={handleSubmit}\n fields={[\n {\n name: 'description',\n type: 'textarea',\n caption: 'Description',\n },\n ...makeErrorFields([error]),\n ]}\n footerProps={{\n propsButtonCancel: {\n onClick: () => {\n onClose();\n },\n },\n }}\n />\n );\n};\n\nconst AuthenticationPasswordSection: FC<{onSuccess: () => void}> = ({onSuccess}) => {\n const [error, setError] = useState<YTError>();\n type FormData = {password: string};\n const dispatch = useThunkDispatch();\n const user = useSelector(getCurrentUserName);\n const handleSubmit = async (form: FormApi<FormData>) => {\n const values = form.getState().values;\n\n setError(undefined);\n\n await sha256(values.password).then((password_sha256) => {\n return dispatch(\n manageTokensGetList({\n user,\n password_sha256,\n }),\n )\n .then(() => {\n onSuccess();\n })\n .catch((error) => setError(error?.response?.data || error));\n });\n };\n\n return (\n <YTDFDialog<FormData>\n headerProps={{\n title: 'Authentication',\n }}\n pristineSubmittable\n modal={false}\n visible={true}\n initialValues={{}}\n onAdd={handleSubmit}\n fields={[\n {\n name: 'error-block',\n type: 'block',\n extras: {\n children: (\n <Alert message=\"To access tokens management, you need enter your password\" />\n ),\n },\n },\n {\n name: 'password',\n type: 'text',\n required: true,\n caption: 'Password',\n extras: () => ({type: 'password'}),\n },\n ...makeErrorFields([error]),\n ]}\n footerProps={{\n propsButtonCancel: {\n onClick: () => {\n dispatch(closeManageTokensModal());\n },\n },\n }}\n />\n );\n};\n\nconst RevokeToken = (props: {handleClickRemoveToken: (index: number) => void; index: number}) => {\n const [visible, setVisible] = useState(false);\n\n const handleClick = () => {\n setVisible(true);\n };\n\n const handleConfirm = () => {\n props.handleClickRemoveToken(props.index);\n\n setVisible(false);\n };\n\n const handleCancel = () => {\n setVisible(false);\n };\n\n return (\n <>\n <Button size={'s'} onClick={handleClick}>\n <Icon awesome={'trash-bin'} />\n </Button>\n <Modal\n content=\"Are you sure you want to revoke the token? This action CANNOT be undone.\"\n onCancel={handleCancel}\n onConfirm={handleConfirm}\n onOutsideClick={handleCancel}\n visible={visible}\n />\n </>\n );\n};\n\nconst AuthenticationTokensSection: FC<{\n onClickGenerateTokenButton: () => void;\n onSuccessRemove: () => void;\n}> = ({onSuccessRemove, onClickGenerateTokenButton}) => {\n const {getPassword} = useManageTokensPasswordModalContext();\n const dispatch = useThunkDispatch();\n const tokens = useSelector(manageTokensSelector)!;\n const user = useSelector(getCurrentUserName);\n\n const handleClickRemoveToken = React.useCallback(\n (index: number) => {\n return getPassword().then((password_sha256) => {\n return dispatch(\n manageTokensRevokeToken({\n credentials: {\n user,\n password_sha256,\n },\n token_sha256: tokens![index].tokenHash,\n }),\n ).then(() => {\n return dispatch(\n manageTokensGetList({\n user,\n password_sha256,\n }),\n ).finally(() => onSuccessRemove());\n });\n });\n },\n [getPassword, user, onSuccessRemove, tokens, manageTokensRevokeToken, dispatch],\n );\n\n return (\n <div className={block('tokens')}>\n <h2>Authentication Tokens</h2>\n <div className={block('generate-token-button')}>\n <Button size=\"l\" view=\"action\" onClick={() => onClickGenerateTokenButton()}>\n Generate token\n </Button>\n </div>\n <div className={block('tokens-table')}>\n <DataTableYT<AuthenticationToken>\n loaded\n useThemeYT\n data={tokens}\n noItemsText=\"No tokens found\"\n rowClassName={() => block('table-row')}\n columns={[\n {\n name: 'tokenPrefix',\n header: 'Token',\n width: 110,\n className: block('table-cell'),\n render: ({value}) => {\n return value ? `${String(value)}...` : format.NO_VALUE;\n },\n },\n {\n name: 'tokenHash',\n header: 'Token Hash',\n width: 110,\n className: block('table-cell', {name: 'hash'}),\n render: ({value}) => {\n return (\n <>\n {truncate_(String(value), {length: 12})}\n <ClipboardButton\n title=\"Copy error\"\n view=\"flat-secondary\"\n text={value}\n size=\"xs\"\n />\n </>\n );\n },\n },\n {\n name: 'description',\n header: 'Description',\n width: 320,\n className: block('table-cell', {name: 'description'}),\n render(value) {\n if (value.value) {\n return (\n <CollapsedString\n limit={100}\n value={value.value as string}\n />\n );\n }\n\n return '';\n },\n },\n {\n name: 'creationTime',\n header: 'Issued At',\n width: 160,\n className: block('table-cell'),\n render: (value) => {\n return value.value\n ? moment(value.value).format('DD/MM/YYYY hh:mm:ss')\n : '';\n },\n },\n {\n name: '',\n width: 30,\n className: block('table-cell'),\n render: ({index}) => (\n <RevokeToken\n index={index}\n handleClickRemoveToken={handleClickRemoveToken}\n />\n ),\n },\n ]}\n settings={{\n stickyHead: 'moving',\n displayIndices: false,\n sortable: false,\n highlightRows: false,\n stripedRows: false,\n disableSortReset: true,\n }}\n />\n </div>\n </div>\n );\n};\n\nenum ViewSection {\n default,\n tokens,\n generate,\n}\n\nconst useViewSectionState = () => {\n const [section, setSection] = useState<ViewSection>(ViewSection.default);\n\n return {section, setSection};\n};\n\nexport const ManageTokensModalContent = () => {\n const {section, setSection} = useViewSectionState();\n\n const content = useMemo(() => {\n switch (section) {\n case ViewSection.default:\n return (\n <AuthenticationPasswordSection\n onSuccess={() => setSection(ViewSection.tokens)}\n />\n );\n case ViewSection.tokens:\n return (\n <AuthenticationTokensSection\n onSuccessRemove={() => setSection(ViewSection.tokens)}\n onClickGenerateTokenButton={() => setSection(ViewSection.generate)}\n />\n );\n case ViewSection.generate:\n return (\n <AuthenticationGenerateTokenFormSection\n onClose={() => setSection(ViewSection.tokens)}\n />\n );\n default:\n return null;\n }\n }, [section]);\n\n return (\n <ManageTokensPasswordModalContextProvider>\n <div className={block('content')}>{content}</div>\n </ManageTokensPasswordModalContextProvider>\n );\n};\n","import React from 'react';\nexport const AlertContext = React.createContext(null);\n","'use client';\nimport React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const useAlertContext = () => {\n const context = React.useContext(AlertContext);\n if (!context)\n throw new Error('Alert: `useAlertContext` hook is used out of \"AlertContext\"');\n return context;\n};\n","'use client';\nimport React from 'react';\nimport { Button } from '../Button';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertAction = (props) => {\n const { view } = useAlertContext();\n return React.createElement(Button, Object.assign({ view: view === 'filled' ? 'normal-contrast' : undefined }, props));\n};\n","import { block } from '../utils/cn';\nimport './Alert.css';\nexport const DEFAULT_ICON_SIZE = 18;\nexport const bAlert = block('alert');\n","'use client';\nimport React from 'react';\nimport { AlertContext } from './AlertContext';\nexport const AlertContextProvider = ({ layout, view, children }) => {\n return React.createElement(AlertContext.Provider, { value: { layout, view } }, children);\n};\n","import React from 'react';\nimport { CircleCheck, CircleCheckFill, CircleInfo, CircleInfoFill, CircleXmark, CircleXmarkFill, Thunderbolt, ThunderboltFill, TriangleExclamation, TriangleExclamationFill, } from '@gravity-ui/icons';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text/colorText/colorText';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nconst typeToIcon = {\n danger: {\n filled: CircleXmarkFill,\n outlined: CircleXmark,\n },\n info: {\n filled: CircleInfoFill,\n outlined: CircleInfo,\n },\n success: {\n filled: CircleCheckFill,\n outlined: CircleCheck,\n },\n warning: {\n filled: TriangleExclamationFill,\n outlined: TriangleExclamation,\n },\n utility: {\n filled: ThunderboltFill,\n outlined: Thunderbolt,\n },\n normal: null,\n};\nexport const AlertIcon = ({ className, theme, view = 'filled', size = DEFAULT_ICON_SIZE, }) => {\n const iconByTheme = typeToIcon[theme];\n if (!iconByTheme) {\n return null;\n }\n let color;\n if (theme === 'success') {\n color = 'positive';\n }\n else if (theme !== 'normal') {\n color = theme;\n }\n return (React.createElement(\"div\", { className: bAlert('icon', colorText({ color }, className)) },\n React.createElement(Icon, { data: iconByTheme[view], size: size })));\n};\n","import * as React from 'react';\nconst CircleXmarkFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z\", clipRule: \"evenodd\" })));\nexport default CircleXmarkFill;\n","import * as React from 'react';\nconst CircleXmark = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M13.5 8a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0ZM15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.53 5.47a.75.75 0 0 0-1.06 1.06L6.94 8 5.47 9.47a.75.75 0 1 0 1.06 1.06L8 9.06l1.47 1.47a.75.75 0 1 0 1.06-1.06L9.06 8l1.47-1.47a.75.75 0 1 0-1.06-1.06L8 6.94 6.53 5.47Z\", clipRule: \"evenodd\" })));\nexport default CircleXmark;\n","import * as React from 'react';\nconst CircleInfoFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm1-9.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM8 7.75a.75.75 0 0 1 .75.75V11a.75.75 0 0 1-1.5 0V8.5A.75.75 0 0 1 8 7.75Z\", clipRule: \"evenodd\" })));\nexport default CircleInfoFill;\n","import * as React from 'react';\nconst CircleCheckFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm3.1-8.55a.75.75 0 1 0-1.2-.9L7.419 8.858 6.03 7.47a.75.75 0 0 0-1.06 1.06l2 2a.75.75 0 0 0 1.13-.08l3-4Z\", clipRule: \"evenodd\" })));\nexport default CircleCheckFill;\n","import * as React from 'react';\nconst TriangleExclamationFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", fillRule: \"evenodd\", d: \"M5.836 2.244c.962-1.665 3.366-1.665 4.328 0l4.917 8.505c.964 1.666-.239 3.751-2.164 3.751H3.083c-1.925 0-3.128-2.085-2.164-3.751l4.917-8.505ZM8 5a.75.75 0 0 1 .75.75v2a.75.75 0 1 1-1.5 0v-2A.75.75 0 0 1 8 5Zm1 5.75a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\", clipRule: \"evenodd\" })));\nexport default TriangleExclamationFill;\n","import * as React from 'react';\nconst ThunderboltFill = (props) => (React.createElement(\"svg\", Object.assign({ xmlns: \"http://www.w3.org/2000/svg\", width: 16, height: 16, fill: \"none\", viewBox: \"0 0 16 16\" }, props),\n React.createElement(\"path\", { fill: \"currentColor\", d: \"m14.61 6.914-7.632 8.08a1.614 1.614 0 0 1-2.69-1.66L5.5 10H2.677A1.677 1.677 0 0 1 1.12 7.7l2.323-5.807A2.216 2.216 0 0 1 5.5.5h4c.968 0 1.637.967 1.298 1.873L10 4.5h3.569a1.431 1.431 0 0 1 1.04 2.414Z\" })));\nexport default ThunderboltFill;\n","import { addComponentKeysets } from '../../utils/addComponentKeysets';\nimport en from './en.json';\nimport ru from './ru.json';\nconst COMPONENT = 'Alert';\nexport default addComponentKeysets({ en, ru }, COMPONENT);\n","import React from 'react';\nimport { Xmark } from '@gravity-ui/icons';\nimport { Button } from '../Button';\nimport { Card } from '../Card';\nimport { Icon } from '../Icon';\nimport { colorText } from '../Text';\nimport { Flex, spacing } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { AlertActions } from './AlertActions';\nimport { AlertContextProvider } from './AlertContextProvider';\nimport { AlertIcon } from './AlertIcon';\nimport { AlertTitle } from './AlertTitle';\nimport { DEFAULT_ICON_SIZE, bAlert } from './constants';\nimport i18n from './i18n';\nexport const Alert = (props) => {\n const { theme = 'normal', view = 'filled', layout = 'vertical', message, className, corners, style, onClose, align, qa, } = props;\n return (React.createElement(AlertContextProvider, { layout: layout, view: view },\n React.createElement(Card, { style: style, className: bAlert({ corners }, spacing({ py: 4, px: 5 }, className)), theme: theme, view: view, qa: qa },\n React.createElement(Flex, { gap: \"3\", alignItems: align },\n typeof props.icon === 'undefined' ? (React.createElement(Alert.Icon, { theme: theme, view: view })) : (props.icon // ability to pass `null` as `icon` prop value\n ),\n React.createElement(Flex, { direction: layout === 'vertical' ? 'column' : 'row', gap: \"5\", grow: true },\n React.createElement(Flex, { gap: \"2\", grow: true, className: bAlert('text-content') },\n React.createElement(Flex, { direction: \"column\", gap: \"1\", grow: true, justifyContent: align },\n typeof props.title === 'string' ? (React.createElement(Alert.Title, { text: props.title })) : (props.title),\n message)),\n Array.isArray(props.actions) ? (React.createElement(Alert.Actions, { items: props.actions })) : (props.actions)),\n onClose && (React.createElement(Button, { view: \"flat\", className: bAlert('close-btn'), onClick: onClose, extraProps: {\n 'aria-label': i18n('label_close'),\n } },\n React.createElement(Icon, { data: Xmark, size: DEFAULT_ICON_SIZE, className: colorText({ color: 'secondary' }) })))))));\n};\nAlert.Icon = AlertIcon;\nAlert.Title = AlertTitle;\nAlert.Actions = AlertActions;\nAlert.Action = AlertAction;\n","import React from 'react';\nimport { Text } from '../Text';\nimport { bAlert } from './constants';\nexport const AlertTitle = ({ text, className }) => {\n return (React.createElement(Text, { variant: \"subheader-2\", className: bAlert('title', className) }, text));\n};\n","'use client';\nimport React from 'react';\nimport { Flex } from '../layout';\nimport { AlertAction } from './AlertAction';\nimport { bAlert } from './constants';\nimport { useAlertContext } from './useAlertContext';\nexport const AlertActions = ({ items, children, className }) => {\n const { layout } = useAlertContext();\n return (React.createElement(Flex, { className: bAlert('actions', { minContent: layout === 'horizontal' }, className), direction: \"row\", gap: \"3\", wrap: true, alignItems: layout === 'horizontal' ? 'center' : 'flex-start' }, (items === null || items === void 0 ? void 0 : items.map(({ handler, text }, i) => (React.createElement(AlertAction, { key: i, onClick: handler }, text)))) || children));\n};\n","'use client';\nimport { __rest } from \"tslib\";\nimport React from 'react';\nimport { useActionHandlers } from '../../hooks';\nimport { Box } from '../layout';\nimport { block } from '../utils/cn';\nimport './Card.css';\nconst b = block('card');\nexport const Card = React.forwardRef(function Card(props, ref) {\n const { type = 'container', theme, view, size = 'm', children, className, onClick, disabled, selected } = props, restProps = __rest(props, [\"type\", \"theme\", \"view\", \"size\", \"children\", \"className\", \"onClick\", \"disabled\", \"selected\"]);\n const isTypeAction = type === 'action';\n const isTypeSelection = type === 'selection';\n const isTypeContainer = type === 'container';\n /* Clickable card — only with type 'action' or 'selection' and not selected or disabled */\n const hasAction = isTypeAction || isTypeSelection;\n const isClickable = hasAction && Boolean(onClick) && !(disabled || selected);\n /* Theme only with type 'container' */\n const defaultTheme = isTypeContainer ? 'normal' : undefined;\n /* View only with type 'container' and 'selection' */\n const defaultView = isTypeContainer || isTypeSelection ? 'outlined' : undefined;\n const handleClick = isClickable ? onClick : undefined;\n const { onKeyDown } = useActionHandlers(onClick);\n return (React.createElement(Box, Object.assign({ ref: ref, role: isClickable ? 'button' : undefined, className: b({\n theme: theme || defaultTheme,\n view: view || defaultView,\n type,\n selected,\n size,\n disabled,\n clickable: isClickable,\n }, className), onClick: handleClick, onKeyDown: isClickable ? onKeyDown : undefined, tabIndex: isClickable ? 0 : undefined }, restProps), children));\n});\n","import { useReducer } from 'react';\nvar toggleReducer = function (state, nextValue) {\n return typeof nextValue === 'boolean' ? nextValue : !state;\n};\nvar useToggle = function (initialValue) {\n return useReducer(toggleReducer, initialValue);\n};\nexport default useToggle;\n"],"names":["block","cn","CollapsedString","_ref","value","_ref$limit","limit","_useToggle","useToggle","_useToggle2","_slicedToArray","expanded","toggleExpanded","hasToggle","length","text","useMemo","slice","_jsxs","className","children","_jsx","ClickableText","onClick","prepareRoleListValue","roles","otherMembers","arguments","undefined","current","toAdd","toRemove","unrecognized","forEach_","item","isUnrecognized","isRequested","isApproved","isDepriving","push","currentArr","map","prepareItemOfCurrent","otherArr","title","data","frozen","newItems","concat","itemClassName","role","extraProps","_objectSpread","roleListValueToSubjectList","_toConsumableArray","manyListDataItemToSubjectList","manyListDataItem","map_","filter_","_ref2","removed","_ref3","_ref4","type","extractChangedSubjects","added","filter","_ref5","_ref6","user","group","_ref7","_ref8","DialogError","props","Block","makeErrorFields","errors","compact_","error","index","name","extras","FORM_ERROR","makeFormSubmitError","validationErrors","_defineProperty","importYTDFDialog","Component","YTDFDialog","withLazyLoading","React","_asyncToGenerator","_regeneratorRuntime","_callee","_context","prev","next","t0","sent","YTDialog","abrupt","stop","_React$useState","_React$useState2","mounted","setMounted","visible","_callee2","_context2","RoleListControl","EditableList","_callee3","_context3","TabFieldVertical","_callee4","_context4","getQTApiSetup","QT_CLUSTER","getQueryTrackerCluster","cluster","getClusterConfigByName","proxy","getClusterProxy","manageTokensGetList","credentials","dispatch","MANAGE_TOKENS_LIST","REQUEST","ytApiV4Id","listUserTokens","YTApiId","parameters","with_metadata","setup","then","SUCCESS","FAILURE","manageTokensRevokeToken","token_sha256","wrapApiPromiseByToaster","revokeToken","issueToken","autoHide","toasterName","successContent","openManageTokensModal","MANAGE_TOKENS_MODALS_OPEN","closeManageTokensModal","MANAGE_TOKENS_MODALS_CLOSE","sha256","_x","_sha","apply","str","buf","crypto","subtle","digest","TextEncoder","encode","Uint8Array","x","toString","join","ManageTokensPasswordModalContext","PasswordModal","_useSelector","setError","username","useSelector","getCurrentUserName","ytAuthCluster","getSettingsCluster","_Fragment","Dialog","open","hasCloseButton","onClose","handleCancel","headerProps","pristineSubmittable","modal","initialValues","onAdd","password","getState","values","password_sha256","axios","post","handleConfirm","_error$response","response","fields","Alert","message","required","caption","footerProps","propsButtonCancel","PromiseWaiter","_classCallCheck","promise","resolve","_d","reject","_e","_createClass","key","_this","this","Promise","d","e","ManageTokensPasswordModalContextProvider","_React$useState3","_React$useState4","setVisible","p","getPassword","create","Provider","Error","hash","useManageTokensPasswordModalContext","context","AuthenticationGenerateTokenFormSection","useThunkDispatch","_useState","useState","_useState2","_useState3","_useState4","token","setToken","theme","layout","actions","ClipboardButton","Button","size","view","form","description","manageTokensCreateToken","AuthenticationPasswordSection","onSuccess","_useState5","_useState6","handleSubmit","RevokeToken","_useState7","_useState8","Icon","awesome","Modal","content","onCancel","onConfirm","handleClickRemoveToken","onOutsideClick","AuthenticationTokensSection","onSuccessRemove","onClickGenerateTokenButton","tokens","manageTokensSelector","tokenHash","DataTableYT","loaded","useThemeYT","noItemsText","rowClassName","columns","header","width","render","String","format","NO_VALUE","truncate_","moment","settings","stickyHead","displayIndices","sortable","highlightRows","stripedRows","disableSortReset","ViewSection","ManageTokensModalContent","_useState9","_useState10","_useViewSectionState","section","setSection","generate","AlertContext","useAlertContext","AlertAction","Object","assign","bAlert","AlertContextProvider","typeToIcon","danger","filled","xmlns","height","fill","viewBox","fillRule","clipRule","outlined","info","CircleInfo","success","CircleCheck","warning","TriangleExclamation","utility","Thunderbolt","normal","addComponentKeysets","en","corners","style","align","qa","Card","spacing","py","px","Flex","gap","alignItems","icon","direction","grow","justifyContent","Title","Array","isArray","Actions","items","i18n","I","Xmark","colorText","color","iconByTheme","Text","variant","minContent","wrap","handler","i","Action","b","ref","disabled","selected","restProps","isTypeSelection","isTypeContainer","isClickable","Boolean","defaultTheme","defaultView","handleClick","onKeyDown","useActionHandlers","Box","clickable","tabIndex","toggleReducer","state","nextValue","initialValue","useReducer"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[1234],{78466:(n,e,t)=>{t.d(e,{L:()=>c}),t(77810);var r=t(92423),i=t(72679),a=t(39702),o=t(40319),l=t(64922);const u=function(n){return(0,l.jsx)("svg",(0,o.A)((0,o.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},n),{},{children:(0,l.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.47 10.97a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L6.44 8zm5 0a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L11.44 8z",clipRule:"evenodd"})}))};var s=(0,t(76872).A)("yt-expanded-button"),c=function(n){var e=n.className,t=n.expanded,o=n.inline,c=n.toggleExpanded,p=n.all,d=n.showText,v=p?"Collapse All":"Collapse",f=p?"Expand All":"Expand";return(0,l.jsxs)(r.$,{className:s({inline:o},e),view:"flat-secondary",title:t?v:f,onClick:c,children:[d&&(t?v:f)+" ",(0,l.jsx)(i.I,{className:s("expand",{expanded:t}),data:p?u:a.A,size:16})]})}},80545:(n,e,t)=>{t.d(e,{A:()=>u}),t(77810);var r=t(76872),i=t(73822),a=t(60620),o=t(64922),l=(0,r.A)("status-label");function u(n){var e=n.className,t=n.label,r=n.renderPlaque,u=function(n){var e;return null!==(e={materializing:"preparing",initializing:"preparing",preparing:"preparing",pending:"preparing",starting:"preparing",running:"running",completing:"running",failing:"running",aborting:"running",reviving:"running",suspended:"suspended",failed:"failed",completed:"completed",aborted:"aborted",Unknown:"unknown",Stopped:"suspended",Paused:"suspended",Working:"running",Draining:"running",Pausing:"running",Completed:"completed"}[n])&&void 0!==e?e:"unknown"}(t),s={preparing:"clock",running:"play-circle",suspended:"pause-circle",failed:"times-circle",completed:"check-circle",aborted:"times-circle",unknown:"question-circle"}[u],c={state:u};return t?(0,o.jsxs)("span",{className:l(null,r?l("plaque",c,e):l(c,e)),children:[(0,o.jsx)(a.A,{awesome:s}),(0,o.jsx)("span",{children:i.A.format.ReadableField(t)})]}):(0,o.jsx)("span",{})}},65549:(n,e,t)=>{t.r(e),t.d(e,{Flow:()=>Nn});var r=t(77810),i=t(15647),a=t(76872),o=t(6736),l=t(79726),u=t(92423),s=t(85137),c=t(64196),p=t(14780),d=t(28640),v=t(64772),f=t(60620),m=t(35074),w=t(80545),h=t(13685),x=t(51194),g=t(64714),j=t(76365),_=function(n){return n.flow.status.data},A=function(n){return n.flow.status.pipeline_path},b=t(54835),k=new j.A;function y(n){return function(e){return e(b.U.onRequest({pipeline_path:n})),g.QA.getPipelineState({parameters:{pipeline_path:n},cancellation:k.removeAllAndSave}).then((function(n){e(b.U.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(b.U.onError({error:n}))}))}}function S(n){var e=n.pipeline_path,t=n.state;return function(n,r){var i="".concat(t,"Pipeline");return g.QA[i]({pipeline_path:e}).then((function(){A(r())===e&&n(y(e))}))}}var C=function(n){return n.flow.filters.flowViewMode},N=t(52797),M=t(57602),P=t(19538),$=t(7787),E=t(35441),F=t(14880),R=t(77318),T=t(82060),z=t(78466),q=t(40319),O=t(85655),Q=new j.A,W=t(18801),I=t(18472),U=t(27528),B=t.n(U),L=t(39760),D=t.n(L),H=["name"],Y=function(n){return n.flow.layout.pipeline_path},J=function(n){return n.flow.layout.error},V=(0,I.Mz)([function(n){return n.flow.layout.data},function(n){return n.flow.layout.expandedComputations},function(n){return n.flow.layout.expandedWorkers}],(function(n,e,t){return function(r){return"computations"===r?X(function(n){var e,t,r=null!==(e=null==n||null===(t=n.execution_spec)||void 0===t||null===(t=t.layout)||void 0===t?void 0:t.value)&&void 0!==e?e:{},i=r.jobs,a=void 0===i?{}:i,o=r.partitions;return B()(o,(function(e){var t,r,i=a[e.current_job_id],o=(null!=i?i:{}).worker_address,l=null==n?void 0:n.workers[o];return{name:e.computation_id,partition:null!==(t=e)&&void 0!==t?t:null,job:null!==(r=i)&&void 0!==r?r:null,worker:null!=l?l:null}}))}(n),e):X(function(n){var e,t,r=null!==(e=null==n||null===(t=n.execution_spec)||void 0===t||null===(t=t.layout)||void 0===t?void 0:t.value)&&void 0!==e?e:{},i=r.jobs,a=r.partitions,o=[],l=new Set;return D()(i,(function(e){var t=e.worker_address,r=e.partition_id,i=null==a?void 0:a[r],u=null==n?void 0:n.workers[t];o.push({name:t,partition:null!=i?i:null,job:null!=e?e:null,worker:null!=u?u:null}),l.add(t)})),D()(null==n?void 0:n.workers,(function(n){var e=n.address;l.has(e)||o.push({name:e,partition:null,job:null,worker:null})})),o}(n),t)}}));function X(n,e){var t=new Set(Object.keys(e)),r=[],i=new Map;if(n.forEach((function(n){var e,a=n.name,o=(0,W.A)(n,H),l=i.get(a);l||(l={$attributes:{name:a,expanded:t.has(a),job_count:0,worker_count:0,partition_count:0},$value:[]},i.set(a,l),r.push(l)),n.job&&++l.$attributes.job_count,n.worker&&++l.$attributes.worker_count,n.partition&&++l.$attributes.partition_count,null===(e=l.$value)||void 0===e||e.push(o)})),!t.size)return r;for(var a=[],o=0,l=r;o<l.length;o++){var u=l[o],s=u.$attributes.name;t.has(s)?a=a.concat(u,u.$value):a.push(u)}return a}var Z=t(64922),G=(0,a.A)("yt-navigation-flow-layout");function K(n){var e=n.path,t=n.viewMode,a=(0,i.wA)(),o=(0,i.d4)(Y),l=(0,i.d4)(J),u=(0,i.d4)(V),s=r.useMemo((function(){return u(t)}),[t,u]),c=e===o,p=function(n){var e=(0,i.wA)(),t=r.useMemo((function(){var t="computations"===n,r=[{name:t?"Computation / Partition Id":"Worker address / Partition Id",className:G("td-name"),render:function(n){var r,i=n.row;if("$attributes"in i){var a=i.$attributes,o=a.name,l=a.expanded;r=(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(z.L,{className:G("expand",{hidden:0===i.$value.length}),expanded:l,toggleExpanded:function(){e(t?function(n){var e=n.computation_id;return function(n){n(O.Cp.onExpandComputation({computation_id:e}))}}({computation_id:o}):function(n){var e=n.worker_address;return function(n){n(O.Cp.onExpandWorker({worker_address:e}))}}({worker_address:o})),requestAnimationFrame((function(){window.dispatchEvent(new Event("resize"))}))}}),(0,Z.jsxs)("span",{className:G("name-title"),children:[o," ",(0,Z.jsx)(d.A,{view:"flat-secondary",text:o,inlineMargins:!0,visibleOnRowHover:!0})]})]})}else{var u,s;r=(0,Z.jsxs)("span",{className:G("name-title",{level:"1"}),children:[null===(u=i.partition)||void 0===u?void 0:u.partition_id,(0,Z.jsx)(d.A,{view:"flat-secondary",text:null===(s=i.partition)||void 0===s?void 0:s.partition_id,inlineMargins:!0,visibleOnRowHover:!0})]})}return(0,Z.jsx)("div",{className:G("name"),children:r})}},{name:"Partition state",render:function(n){var e,t=n.row;return"partition"in t?null===(e=t.partition)||void 0===e?void 0:e.state:v.A.Number(t.$value.length)},width:120},{name:"Job Id",render:function(n){var e,t,r=n.row;return"partition"in r?(0,Z.jsxs)(Z.Fragment,{children:[null===(e=r.partition)||void 0===e?void 0:e.current_job_id," ",(0,Z.jsx)(d.A,{view:"flat-secondary",text:null===(t=r.partition)||void 0===t?void 0:t.current_job_id,inlineMargins:!0,visibleOnRowHover:!0})]}):v.A.Number(r.$attributes.job_count)},width:400},t?{name:"Worker address",render:function(n){var e,t,r=n.row;return"job"in r?(0,Z.jsxs)(Z.Fragment,{children:[null===(e=r.job)||void 0===e?void 0:e.worker_address,(0,Z.jsx)(d.A,{view:"flat-secondary",text:null===(t=r.job)||void 0===t?void 0:t.worker_address,inlineMargins:!0,visibleOnRowHover:!0})]}):v.A.Number(r.$attributes.worker_count)},width:400}:{name:"Computation",render:function(n){var e,t=n.row;return"partition"in t?null===(e=t.partition)||void 0===e?void 0:e.computation_id:v.A.Number(t.$attributes.partition_count)},width:400},{name:"actions",header:null,render:function(n){var e=n.row;return(0,Z.jsx)(F.A,{className:G("show-attributes"),title:"Details",attributes:e,withTooltip:!1})},width:50}];return r}),[n]);return t}(t),f=r.useCallback((function(){a(function(n){return function(e){return e(O.Cp.onRequest({pipeline_path:n})),g.QA.getFlowView({parameters:(0,q.A)({pipeline_path:n},{annotate_with_types:!0}),cancellation:Q.removeAllAndSave}).then((function(n){e(O.Cp.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(O.Cp.onError({error:n}))}))}}(e))}),[e,a]);return(0,h.Tt)(f),c?(0,Z.jsxs)("div",{className:G(),children:[Boolean(l)&&(0,Z.jsx)(T.A,{error:l}),(0,Z.jsx)(R.Ay,{settings:R.ks,columns:p,data:s,useThemeYT:!0})]}):null}var nn=t(13322),en=t(28407),tn=t(9736),rn=t(70232),an=t.n(rn),on=t(22977),ln=function(n){return n.flow.staticSpec.data},un=function(n){return n.flow.staticSpec.pipeline_path},sn=function(n){return n.flow.staticSpec.error},cn=function(n){var e=n.flow.staticSpec,t=e.loading;return!e.loaded&&t},pn=function(n){return n.flow.dynamicSpec.data},dn=function(n){return n.flow.dynamicSpec.pipeline_path},vn=function(n){var e=n.flow.dynamicSpec,t=e.loading;return!e.loaded&&t},fn=new j.A;function mn(n){return function(e){return e(on.pX.onRequest({pipeline_path:n})),g.QA.getPipelineSpec({parameters:{pipeline_path:n},cancellation:fn.removeAllAndSave}).then((function(n){e(on.pX.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(on.pX.onError({error:n}))}))}}function wn(n){return function(e){return e(on.Ep.onRequest({pipeline_path:n})),g.QA.getPipelineDynamicSpec({parameters:{pipeline_path:n},cancellation:fn.removeAllAndSave}).then((function(n){e(on.Ep.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(on.Ep.onError({error:n}))}))}}var hn=t(4386),xn=t(90826),gn=t(20361),jn=t(81738),_n=t(38198),An=(0,a.A)("yt-pipeline-spec");function bn(n){var e=n.path,t=n.data,a=n.error,o=n.name,l=n.onSave,s=r.useState(!1),c=(0,tn.A)(s,2),p=c[0],d=c[1],v=(0,i.d4)(hn.eg);return(0,Z.jsxs)(r.Fragment,{children:[Boolean(a)&&(0,Z.jsx)(jn.A,{error:a}),(0,Z.jsx)(xn.A,{value:t,settings:v,virtualized:!0,folding:!0,extraTools:(0,Z.jsx)(r.Fragment,{children:(0,Z.jsxs)(u.$,{view:"outlined",onClick:function(){return d(!0)},children:[(0,Z.jsx)(f.A,{awesome:"pencil"}),"Edit ",o]})})}),(0,Z.jsx)(kn,{path:e,name:o,visible:p,onSpecApply:function(n){return l((0,q.A)((0,q.A)({},t),{},{spec:n}))},onClose:function(){return d(!1)},spec:null==t?void 0:t.spec,settings:v})]})}function kn(n){var e=n.path,t=n.visible,i=n.spec,a=n.onClose,o=n.onSpecApply,l=n.name,u=n.settings,s=r.useState(),c=(0,tn.A)(s,2),p=c[0],d=c[1],v=r.useMemo((function(){return{value:JSON.stringify(i,null,4)}}),[i]);return t&&(0,Z.jsx)(gn.yZ,{visible:!0,size:"l",onClose:a,initialValues:{text:v,path:e},headerProps:{title:"Edit ".concat(l)},onAdd:function(){var n=(0,en.A)(an().mark((function n(e){var t;return an().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(d(void 0),!(t=e.getState().values.text).value){n.next=15;break}return n.prev=3,n.next=6,o(JSON.parse(t.value));case 6:return n.abrupt("return",n.sent);case 9:return n.prev=9,n.t0=n.catch(3),d(n.t0),n.abrupt("return",Promise.reject(n.t0));case 13:n.next=16;break;case 15:return n.abrupt("return",Promise.resolve());case 16:case"end":return n.stop()}}),n,null,[[3,9]])})));return function(e){return n.apply(this,arguments)}}(),fields:[{caption:"Pipeline path",name:"path",type:"plain"},{name:"text",caption:"Specification",type:"json",fullWidth:!0,extras:{className:An("editor"),initialShowPreview:!1,unipikaSettings:u}}].concat((0,nn.A)((0,gn.Y)([p])))})}function yn(n){var e=n.pipeline_path,t=(0,x._)(),a=(0,i.d4)(ln),o=(0,i.d4)(sn),l=(0,i.d4)(cn),u=r.useCallback((function(){t(mn(e))}),[t,e]);(0,h.Tt)(u);var s=r.useCallback((function(n){return t(function(n){var e=n.data,t=n.path;return function(n,r){return g.QA.setPipelineSpec({pipeline_path:t,expected_version:null==e?void 0:e.version},null==e?void 0:e.spec).then((function(){var e=un(r());e&&e===t&&n(mn(t))}))}}({path:e,data:n}))}),[e,t]);return l?(0,Z.jsx)(_n.A,{}):(0,Z.jsx)(bn,{path:e,data:a,error:o,name:"static specification",onSave:s})}function Sn(n){var e=n.pipeline_path,t=(0,x._)(),a=(0,i.d4)(pn),o=(0,i.d4)(sn),l=(0,i.d4)(vn),u=r.useCallback((function(){t(wn(e))}),[t,e]);(0,h.Tt)(u);var s=r.useCallback((function(n){return t(function(n){var e=n.data,t=n.path;return function(n,r){return g.QA.setPipelineDynamicSpec({pipeline_path:t,expected_version:null==e?void 0:e.version},null==e?void 0:e.spec).then((function(){var e=dn(r());t===e&&n(wn(t))}))}}({path:e,data:n}))}),[e,t]);return l?(0,Z.jsx)(_n.A,{}):(0,Z.jsx)(bn,{path:e,data:a,error:o,name:"dynamic specification",onSave:s})}var Cn=(0,a.A)("yt-navigation-flow");function Nn(){var n=(0,i.wA)(),e=(0,i.d4)(C),t=r.useMemo((function(){var n,e=null!==(n=$.Ay.getMonitoringComponentForNavigationFlow())&&void 0!==n?n:{},t=e.urlTemplate;return(e.component||t?P.g$:P.g$.filter((function(n){return"monitoring"!==n}))).map((function(n){return{value:n,content:v.A.ReadableField(n)}}))}),[]);return(0,Z.jsxs)("div",{className:Cn(),children:[(0,Z.jsx)($n,{}),(0,Z.jsx)(o.s,{className:Cn("toolbar"),children:(0,Z.jsx)(l.a,{options:t,value:e,onUpdate:function(e){return n((0,P.nP)(e))}})}),(0,Z.jsx)("div",{className:Cn("content",{view:e}),children:(0,Z.jsx)(Mn,{viewMode:e})})]})}function Mn(n){var e=n.viewMode,t=(0,i.d4)(M.Yn);if(!t)return null;switch(e){case"static_spec":return(0,Z.jsx)(yn,{pipeline_path:t});case"dynamic_spec":return(0,Z.jsx)(Sn,{pipeline_path:t});case"monitoring":return(0,Z.jsx)(En,{});case"workers":case"computations":return(0,Z.jsx)(K,{path:t,viewMode:e});case"graph":return(0,Z.jsx)(p.A,{header:"Warning",message:"'".concat(e,"' view mode is not implemented yet")});default:return(0,Z.jsx)(p.A,{header:"Unexpected behaviour",error:new Error("'".concat(e,"' view mode is not implemented"))})}}function Pn(){var n=(0,x._)(),e=(0,i.d4)(M.Yn),t=r.useCallback((function(){return n(y(e))}),[e,n]);(0,h.Tt)(t);var a=r.useMemo((function(){return{onStart:function(){return n(S({pipeline_path:e,state:"start"}))},onStop:function(){return n(S({pipeline_path:e,state:"stop"}))},onPause:function(){return n(S({pipeline_path:e,state:"pause"}))}}}),[n,e]),l=a.onStart,s=a.onStop,c=a.onPause;return(0,Z.jsxs)(o.s,{className:Cn("status-toolbar"),alignItems:"center",gap:2,children:[(0,Z.jsxs)(u.$,{view:"outlined",onClick:l,children:[(0,Z.jsx)(f.A,{awesome:"play-circle"})," Start"]}),(0,Z.jsxs)(u.$,{view:"outlined",onClick:c,children:[(0,Z.jsx)(f.A,{awesome:"pause-circle"})," Pause"]}),(0,Z.jsxs)(u.$,{view:"outlined",onClick:s,children:[(0,Z.jsx)(f.A,{awesome:"stop-circle"})," Stop"]})]})}function $n(){var n=(0,i.d4)(_),e=(0,i.d4)(M.gu).leader_controller_address;return(0,Z.jsxs)(r.Fragment,{children:[(0,Z.jsxs)(o.s,{className:Cn("state"),alignItems:"center",gap:2,children:[(0,Z.jsx)(s.E,{variant:"header-1",children:"Processing catalog "}),(0,Z.jsx)(Pn,{})]}),(0,Z.jsx)(m.Ay,{items:[[{key:"status",value:(0,Z.jsx)(w.A,{label:n})}],[{key:"leader_controller_address",value:(0,Z.jsxs)(Z.Fragment,{children:[e,(0,Z.jsx)(d.A,{view:"flat-secondary",text:e,inlineMargins:!0})]}),className:Cn("meta-item")}]]})]})}function En(){var n,e=null!==(n=$.Ay.getMonitoringComponentForNavigationFlow())&&void 0!==n?n:{},t=e.component,r=e.title,a=e.urlTemplate,o=(0,i.d4)(M.gu),l=o.monitoring_cluster,u=o.monitoring_project,s=(0,i.d4)(N.dB);return t?(0,Z.jsx)(t,{cluster:s,monitoring_cluster:l,monitoring_project:u,attributes:o}):a?(0,Z.jsx)(c.N,{target:"_blank",href:(0,E.j)(a,{ytCluster:s,monitoring_cluster:l,monitoring_project:u}),children:r||"Monitoring"}):null}},51194:(n,e,t)=>{t.d(e,{_:()=>i});var r=t(15647),i=function(){return(0,r.wA)()}},39702:(n,e,t)=>{t.d(e,{A:()=>a});var r=t(40319),i=t(64922);const a=function(n){return(0,i.jsx)("svg",(0,r.A)((0,r.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},n),{},{children:(0,i.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0",clipRule:"evenodd"})}))}}}]);
2
- //# sourceMappingURL=navigation-flow.91ee109f.chunk.js.map
1
+ "use strict";(self.webpackChunk_ytsaurus_ui=self.webpackChunk_ytsaurus_ui||[]).push([[1234],{78466:(n,e,t)=>{t.d(e,{L:()=>c}),t(77810);var r=t(92423),i=t(72679),a=t(39702),o=t(40319),l=t(64922);const u=function(n){return(0,l.jsx)("svg",(0,o.A)((0,o.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},n),{},{children:(0,l.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M3.47 10.97a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L6.44 8zm5 0a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L11.44 8z",clipRule:"evenodd"})}))};var s=(0,t(76872).A)("yt-expanded-button"),c=function(n){var e=n.className,t=n.expanded,o=n.inline,c=n.toggleExpanded,p=n.all,d=n.showText,v=p?"Collapse All":"Collapse",f=p?"Expand All":"Expand";return(0,l.jsxs)(r.$,{className:s({inline:o},e),view:"flat-secondary",title:t?v:f,onClick:c,children:[d&&(t?v:f)+" ",(0,l.jsx)(i.I,{className:s("expand",{expanded:t}),data:p?u:a.A,size:16})]})}},80545:(n,e,t)=>{t.d(e,{A:()=>u}),t(77810);var r=t(76872),i=t(73822),a=t(60620),o=t(64922),l=(0,r.A)("status-label");function u(n){var e=n.className,t=n.label,r=n.renderPlaque,u=function(n){var e;return null!==(e={materializing:"preparing",initializing:"preparing",preparing:"preparing",pending:"preparing",starting:"preparing",running:"running",completing:"running",failing:"running",aborting:"running",reviving:"running",suspended:"suspended",failed:"failed",completed:"completed",aborted:"aborted",Unknown:"unknown",Stopped:"suspended",Paused:"suspended",Working:"running",Draining:"running",Pausing:"running",Completed:"completed"}[n])&&void 0!==e?e:"unknown"}(t),s={preparing:"clock",running:"play-circle",suspended:"pause-circle",failed:"times-circle",completed:"check-circle",aborted:"times-circle",unknown:"question-circle"}[u],c={state:u};return t?(0,o.jsxs)("span",{className:l(null,r?l("plaque",c,e):l(c,e)),children:[(0,o.jsx)(a.A,{awesome:s}),(0,o.jsx)("span",{children:i.A.format.ReadableField(t)})]}):(0,o.jsx)("span",{})}},65549:(n,e,t)=>{t.r(e),t.d(e,{Flow:()=>Nn});var r=t(77810),i=t(15647),a=t(76872),o=t(6736),l=t(79726),u=t(92423),s=t(85137),c=t(64196),p=t(14780),d=t(28640),v=t(64772),f=t(60620),m=t(35074),h=t(80545),w=t(13685),x=t(51194),g=t(64714),j=t(76365),_=function(n){return n.flow.status.data},A=function(n){return n.flow.status.pipeline_path},b=t(54835),k=new j.A;function y(n){return function(e){return e(b.U.onRequest({pipeline_path:n})),g.QA.getPipelineState({parameters:{pipeline_path:n},cancellation:k.removeAllAndSave}).then((function(n){e(b.U.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(b.U.onError({error:n}))}))}}function S(n){var e=n.pipeline_path,t=n.state;return function(n,r){var i="".concat(t,"Pipeline");return g.QA[i]({pipeline_path:e}).then((function(){A(r())===e&&n(y(e))}))}}var C=function(n){return n.flow.filters.flowViewMode},N=t(52797),M=t(57602),P=t(19538),$=t(7787),E=t(35441),F=t(14880),R=t(77318),T=t(82060),z=t(78466),q=t(40319),O=t(85655),Q=new j.A,W=t(18801),I=t(18472),U=t(27528),B=t.n(U),L=t(39760),D=t.n(L),H=["name"],Y=function(n){return n.flow.layout.pipeline_path},J=function(n){return n.flow.layout.error},V=(0,I.Mz)([function(n){return n.flow.layout.data},function(n){return n.flow.layout.expandedComputations},function(n){return n.flow.layout.expandedWorkers}],(function(n,e,t){return function(r){return"computations"===r?X(function(n){var e,t,r=null!==(e=null==n||null===(t=n.execution_spec)||void 0===t||null===(t=t.layout)||void 0===t?void 0:t.value)&&void 0!==e?e:{},i=r.jobs,a=void 0===i?{}:i,o=r.partitions;return B()(o,(function(e){var t,r,i=a[e.current_job_id],o=(null!=i?i:{}).worker_address,l=null==n?void 0:n.workers[o];return{name:e.computation_id,partition:null!==(t=e)&&void 0!==t?t:null,job:null!==(r=i)&&void 0!==r?r:null,worker:null!=l?l:null}}))}(n),e):X(function(n){var e,t,r=null!==(e=null==n||null===(t=n.execution_spec)||void 0===t||null===(t=t.layout)||void 0===t?void 0:t.value)&&void 0!==e?e:{},i=r.jobs,a=r.partitions,o=[],l=new Set;return D()(i,(function(e){var t=e.worker_address,r=e.partition_id,i=null==a?void 0:a[r],u=null==n?void 0:n.workers[t];o.push({name:t,partition:null!=i?i:null,job:null!=e?e:null,worker:null!=u?u:null}),l.add(t)})),D()(null==n?void 0:n.workers,(function(n){var e=n.address;l.has(e)||o.push({name:e,partition:null,job:null,worker:null})})),o}(n),t)}}));function X(n,e){var t=new Set(Object.keys(e)),r=[],i=new Map;if(n.forEach((function(n){var e,a=n.name,o=(0,W.A)(n,H),l=i.get(a);l||(l={$attributes:{name:a,expanded:t.has(a),job_count:0,worker_count:0,partition_count:0},$value:[]},i.set(a,l),r.push(l)),n.job&&++l.$attributes.job_count,n.worker&&++l.$attributes.worker_count,n.partition&&++l.$attributes.partition_count,null===(e=l.$value)||void 0===e||e.push(o)})),!t.size)return r;for(var a=[],o=0,l=r;o<l.length;o++){var u=l[o],s=u.$attributes.name;t.has(s)?a=a.concat(u,u.$value):a.push(u)}return a}var Z=t(64922),G=(0,a.A)("yt-navigation-flow-layout");function K(n){var e=n.path,t=n.viewMode,a=(0,i.wA)(),o=(0,i.d4)(Y),l=(0,i.d4)(J),u=(0,i.d4)(V),s=r.useMemo((function(){return u(t)}),[t,u]),c=e===o,p=function(n){var e=(0,i.wA)(),t=r.useMemo((function(){var t="computations"===n,r=[{name:t?"Computation / Partition Id":"Worker address / Partition Id",className:G("td-name"),render:function(n){var r,i=n.row;if("$attributes"in i){var a=i.$attributes,o=a.name,l=a.expanded;r=(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(z.L,{className:G("expand",{hidden:0===i.$value.length}),expanded:l,toggleExpanded:function(){e(t?function(n){var e=n.computation_id;return function(n){n(O.Cp.onExpandComputation({computation_id:e}))}}({computation_id:o}):function(n){var e=n.worker_address;return function(n){n(O.Cp.onExpandWorker({worker_address:e}))}}({worker_address:o})),requestAnimationFrame((function(){window.dispatchEvent(new Event("resize"))}))}}),(0,Z.jsxs)("span",{className:G("name-title"),children:[o," ",(0,Z.jsx)(d.A,{view:"flat-secondary",text:o,inlineMargins:!0,visibleOnRowHover:!0})]})]})}else{var u,s;r=(0,Z.jsxs)("span",{className:G("name-title",{level:"1"}),children:[null===(u=i.partition)||void 0===u?void 0:u.partition_id,(0,Z.jsx)(d.A,{view:"flat-secondary",text:null===(s=i.partition)||void 0===s?void 0:s.partition_id,inlineMargins:!0,visibleOnRowHover:!0})]})}return(0,Z.jsx)("div",{className:G("name"),children:r})}},{name:"Partition state",render:function(n){var e,t=n.row;return"partition"in t?null===(e=t.partition)||void 0===e?void 0:e.state:v.A.Number(t.$value.length)},width:120},{name:"Job Id",render:function(n){var e,t,r=n.row;return"partition"in r?(0,Z.jsxs)(Z.Fragment,{children:[null===(e=r.partition)||void 0===e?void 0:e.current_job_id," ",(0,Z.jsx)(d.A,{view:"flat-secondary",text:null===(t=r.partition)||void 0===t?void 0:t.current_job_id,inlineMargins:!0,visibleOnRowHover:!0})]}):v.A.Number(r.$attributes.job_count)},width:400},t?{name:"Worker address",render:function(n){var e,t,r=n.row;return"job"in r?(0,Z.jsxs)(Z.Fragment,{children:[null===(e=r.job)||void 0===e?void 0:e.worker_address,(0,Z.jsx)(d.A,{view:"flat-secondary",text:null===(t=r.job)||void 0===t?void 0:t.worker_address,inlineMargins:!0,visibleOnRowHover:!0})]}):v.A.Number(r.$attributes.worker_count)},width:400}:{name:"Computation",render:function(n){var e,t=n.row;return"partition"in t?null===(e=t.partition)||void 0===e?void 0:e.computation_id:v.A.Number(t.$attributes.partition_count)},width:400},{name:"actions",header:null,render:function(n){var e=n.row;return(0,Z.jsx)(F.A,{className:G("show-attributes"),title:"Details",attributes:e,withTooltip:!1})},width:50}];return r}),[n]);return t}(t),f=r.useCallback((function(){a(function(n){return function(e){return e(O.Cp.onRequest({pipeline_path:n})),g.QA.getFlowView({parameters:(0,q.A)({pipeline_path:n},{annotate_with_types:!0}),cancellation:Q.removeAllAndSave}).then((function(n){e(O.Cp.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(O.Cp.onError({error:n}))}))}}(e))}),[e,a]);return(0,w.Tt)(f),c?(0,Z.jsxs)("div",{className:G(),children:[Boolean(l)&&(0,Z.jsx)(T.A,{error:l}),(0,Z.jsx)(R.Ay,{settings:R.ks,columns:p,data:s,useThemeYT:!0})]}):null}var nn=t(13322),en=t(28407),tn=t(9736),rn=t(70232),an=t.n(rn),on=t(22977),ln=function(n){return n.flow.staticSpec.data},un=function(n){return n.flow.staticSpec.pipeline_path},sn=function(n){return n.flow.staticSpec.error},cn=function(n){var e=n.flow.staticSpec,t=e.loading;return!e.loaded&&t},pn=function(n){return n.flow.dynamicSpec.data},dn=function(n){return n.flow.dynamicSpec.pipeline_path},vn=function(n){var e=n.flow.dynamicSpec,t=e.loading;return!e.loaded&&t},fn=new j.A;function mn(n){return function(e){return e(on.pX.onRequest({pipeline_path:n})),g.QA.getPipelineSpec({parameters:{pipeline_path:n},cancellation:fn.removeAllAndSave}).then((function(n){e(on.pX.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(on.pX.onError({error:n}))}))}}function hn(n){return function(e){return e(on.Ep.onRequest({pipeline_path:n})),g.QA.getPipelineDynamicSpec({parameters:{pipeline_path:n},cancellation:fn.removeAllAndSave}).then((function(n){e(on.Ep.onSuccess({data:n}))}),(function(n){(0,j.m)(n)||e(on.Ep.onError({error:n}))}))}}var wn=t(4386),xn=t(90826),gn=t(20361),jn=t(81738),_n=t(38198),An=(0,a.A)("yt-pipeline-spec");function bn(n){var e=n.path,t=n.data,a=n.error,o=n.name,l=n.onSave,s=r.useState(!1),c=(0,tn.A)(s,2),p=c[0],d=c[1],v=(0,i.d4)(wn.eg);return(0,Z.jsxs)(r.Fragment,{children:[Boolean(a)&&(0,Z.jsx)(jn.A,{error:a}),(0,Z.jsx)(xn.A,{value:t,settings:v,virtualized:!0,folding:!0,extraTools:(0,Z.jsx)(r.Fragment,{children:(0,Z.jsxs)(u.$,{view:"outlined",onClick:function(){return d(!0)},children:[(0,Z.jsx)(f.A,{awesome:"pencil"}),"Edit ",o]})})}),(0,Z.jsx)(kn,{path:e,name:o,visible:p,onSpecApply:function(n){return l((0,q.A)((0,q.A)({},t),{},{spec:n}))},onClose:function(){return d(!1)},spec:null==t?void 0:t.spec,settings:v})]})}function kn(n){var e=n.path,t=n.visible,i=n.spec,a=n.onClose,o=n.onSpecApply,l=n.name,u=n.settings,s=r.useState(),c=(0,tn.A)(s,2),p=c[0],d=c[1],v=r.useMemo((function(){return{value:JSON.stringify(i,null,4)}}),[i]);return t&&(0,Z.jsx)(gn.yZ,{visible:!0,size:"l",onClose:a,initialValues:{text:v,path:e},headerProps:{title:"Edit ".concat(l)},onAdd:function(){var n=(0,en.A)(an().mark((function n(e){var t;return an().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(d(void 0),!(t=e.getState().values.text).value){n.next=15;break}return n.prev=3,n.next=6,o(JSON.parse(t.value));case 6:return n.abrupt("return",n.sent);case 9:return n.prev=9,n.t0=n.catch(3),d(n.t0),n.abrupt("return",Promise.reject(n.t0));case 13:n.next=16;break;case 15:return n.abrupt("return",Promise.resolve());case 16:case"end":return n.stop()}}),n,null,[[3,9]])})));return function(e){return n.apply(this,arguments)}}(),fields:[{caption:"Pipeline path",name:"path",type:"plain"},{name:"text",caption:"Specification",type:"json",fullWidth:!0,extras:{className:An("editor"),initialShowPreview:!1,unipikaSettings:u}}].concat((0,nn.A)((0,gn.Y)([p])))})}function yn(n){var e=n.pipeline_path,t=(0,x._)(),a=(0,i.d4)(ln),o=(0,i.d4)(sn),l=(0,i.d4)(cn),u=r.useCallback((function(){t(mn(e))}),[t,e]);(0,w.Tt)(u);var s=r.useCallback((function(n){return t(function(n){var e=n.data,t=n.path;return function(n,r){return g.QA.setPipelineSpec({pipeline_path:t,expected_version:null==e?void 0:e.version},null==e?void 0:e.spec).then((function(){var e=un(r());e&&e===t&&n(mn(t))}))}}({path:e,data:n}))}),[e,t]);return l?(0,Z.jsx)(_n.A,{}):(0,Z.jsx)(bn,{path:e,data:a,error:o,name:"static specification",onSave:s})}function Sn(n){var e=n.pipeline_path,t=(0,x._)(),a=(0,i.d4)(pn),o=(0,i.d4)(sn),l=(0,i.d4)(vn),u=r.useCallback((function(){t(hn(e))}),[t,e]);(0,w.Tt)(u);var s=r.useCallback((function(n){return t(function(n){var e=n.data,t=n.path;return function(n,r){return g.QA.setPipelineDynamicSpec({pipeline_path:t,expected_version:null==e?void 0:e.version},null==e?void 0:e.spec).then((function(){var e=dn(r());t===e&&n(hn(t))}))}}({path:e,data:n}))}),[e,t]);return l?(0,Z.jsx)(_n.A,{}):(0,Z.jsx)(bn,{path:e,data:a,error:o,name:"dynamic specification",onSave:s})}var Cn=(0,a.A)("yt-navigation-flow");function Nn(){var n=(0,i.wA)(),e=(0,i.d4)(C),t=r.useMemo((function(){var n,e=null!==(n=$.Ay.getMonitoringComponentForNavigationFlow())&&void 0!==n?n:{},t=e.urlTemplate;return(e.component||t?P.g$:P.g$.filter((function(n){return"monitoring"!==n}))).map((function(n){return{value:n,content:v.A.ReadableField(n)}}))}),[]);return(0,Z.jsxs)("div",{className:Cn(),children:[(0,Z.jsx)($n,{}),(0,Z.jsx)(o.s,{className:Cn("toolbar"),children:(0,Z.jsx)(l.a,{options:t,value:e,onUpdate:function(e){return n((0,P.nP)(e))}})}),(0,Z.jsx)("div",{className:Cn("content",{view:e}),children:(0,Z.jsx)(Mn,{viewMode:e})})]})}function Mn(n){var e=n.viewMode,t=(0,i.d4)(M.Yn);if(!t)return null;switch(e){case"static_spec":return(0,Z.jsx)(yn,{pipeline_path:t});case"dynamic_spec":return(0,Z.jsx)(Sn,{pipeline_path:t});case"monitoring":return(0,Z.jsx)(En,{});case"workers":case"computations":return(0,Z.jsx)(K,{path:t,viewMode:e});case"graph":return(0,Z.jsx)(p.A,{header:"Warning",message:"'".concat(e,"' view mode is not implemented yet")});default:return(0,Z.jsx)(p.A,{header:"Unexpected behaviour",error:new Error("'".concat(e,"' view mode is not implemented"))})}}function Pn(){var n=(0,x._)(),e=(0,i.d4)(M.Yn),t=r.useCallback((function(){return n(y(e))}),[e,n]);(0,w.Tt)(t);var a=r.useMemo((function(){return{onStart:function(){return n(S({pipeline_path:e,state:"start"}))},onStop:function(){return n(S({pipeline_path:e,state:"stop"}))},onPause:function(){return n(S({pipeline_path:e,state:"pause"}))}}}),[n,e]),l=a.onStart,s=a.onStop,c=a.onPause;return(0,Z.jsxs)(o.s,{className:Cn("status-toolbar"),alignItems:"center",gap:2,children:[(0,Z.jsxs)(u.$,{view:"outlined",onClick:l,children:[(0,Z.jsx)(f.A,{awesome:"play-circle"})," Start"]}),(0,Z.jsxs)(u.$,{view:"outlined",onClick:c,children:[(0,Z.jsx)(f.A,{awesome:"pause-circle"})," Pause"]}),(0,Z.jsxs)(u.$,{view:"outlined",onClick:s,children:[(0,Z.jsx)(f.A,{awesome:"stop-circle"})," Stop"]})]})}function $n(){var n=(0,i.d4)(_),e=(0,i.d4)(M.gu).leader_controller_address;return(0,Z.jsxs)(r.Fragment,{children:[(0,Z.jsxs)(o.s,{className:Cn("state"),alignItems:"center",gap:2,children:[(0,Z.jsx)(s.E,{variant:"header-1",children:"Processing catalog "}),(0,Z.jsx)(Pn,{})]}),(0,Z.jsx)(m.Ay,{items:[[{key:"status",value:(0,Z.jsx)(h.A,{label:n})}],[{key:"leader_controller_address",value:(0,Z.jsxs)(Z.Fragment,{children:[e,(0,Z.jsx)(d.A,{view:"flat-secondary",text:e,inlineMargins:!0})]}),className:Cn("meta-item")}]]})]})}function En(){var n,e=null!==(n=$.Ay.getMonitoringComponentForNavigationFlow())&&void 0!==n?n:{},t=e.component,r=e.title,a=e.urlTemplate,o=(0,i.d4)(M.gu),l=o.monitoring_cluster,u=o.monitoring_project,s=(0,i.d4)(N.dB);return t?(0,Z.jsx)(t,{cluster:s,monitoring_cluster:l,monitoring_project:u,attributes:o}):a?(0,Z.jsx)(c.N,{target:"_blank",href:(0,E.j)(a,{ytCluster:s,monitoring_cluster:l,monitoring_project:u}),children:r||"Monitoring"}):null}},39702:(n,e,t)=>{t.d(e,{A:()=>a});var r=t(40319),i=t(64922);const a=function(n){return(0,i.jsx)("svg",(0,r.A)((0,r.A)({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 16 16"},n),{},{children:(0,i.jsx)("path",{fill:"currentColor",fillRule:"evenodd",d:"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0",clipRule:"evenodd"})}))}}}]);
2
+ //# sourceMappingURL=navigation-flow.f7bcba21.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/navigation-flow.f7bcba21.chunk.js","mappings":"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","sources":["webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevrons-right.svg","webpack://@ytsaurus/ui/./src/ui/components/ExpandButton/ExpandButton.tsx","webpack://@ytsaurus/ui/./src/ui/components/StatusLabel/StatusLabel.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/flow/status.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/flow/status.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/flow/filters.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/flow/layout.ts","webpack://@ytsaurus/ui/./src/ui/store/selectors/flow/layout.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Flow/FlowLayout/FlowLayout.tsx","webpack://@ytsaurus/ui/./src/ui/store/selectors/flow/specs.ts","webpack://@ytsaurus/ui/./src/ui/store/actions/flow/specs.ts","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Flow/PipelineSpec/PipelineSpec.tsx","webpack://@ytsaurus/ui/./src/ui/pages/navigation/tabs/Flow/Flow.tsx","webpack://@ytsaurus/ui/./node_modules/@gravity-ui/icons/svgs/chevron-right.svg"],"sourcesContent":["const SvgChevronsRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M3.47 10.97a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L6.44 8zm5 0a.75.75 0 1 0 1.06 1.06l3.5-3.5a.75.75 0 0 0 0-1.06l-3.5-3.5a.75.75 0 0 0-1.06 1.06L11.44 8z\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronsRight;","import React, {FC} from 'react';\nimport {Button, Icon} from '@gravity-ui/uikit';\nimport shevronRightSvg from '@gravity-ui/icons/svgs/chevron-right.svg';\nimport doubleShevronRightSvg from '@gravity-ui/icons/svgs/chevrons-right.svg';\nimport cn from 'bem-cn-lite';\nimport './ExpandButton.scss';\n\nconst block = cn('yt-expanded-button');\n\ntype Props = {\n className?: string;\n expanded: boolean;\n toggleExpanded: () => void;\n inline?: boolean;\n all?: boolean;\n showText?: boolean;\n};\n\nexport const ExpandButton: FC<Props> = ({\n className,\n expanded,\n inline,\n toggleExpanded,\n all,\n showText,\n}) => {\n const titleExpanded = all ? 'Collapse All' : 'Collapse';\n const titleCollapsed = all ? 'Expand All' : 'Expand';\n return (\n <Button\n className={block({inline}, className)}\n view=\"flat-secondary\"\n title={expanded ? titleExpanded : titleCollapsed}\n onClick={toggleExpanded}\n >\n {showText && (expanded ? titleExpanded : titleCollapsed) + ' '}\n <Icon\n className={block('expand', {expanded})}\n data={all ? doubleShevronRightSvg : shevronRightSvg}\n size={16}\n />\n </Button>\n );\n};\n","import React from 'react';\nimport block from 'bem-cn-lite';\n\nimport hammer from '../../common/hammer';\nimport Icon, {IconName} from '../Icon/Icon';\n\nimport './StatusLabel.scss';\n\nfunction getViewState(label?: StatusLabelProps['label']): ViewState {\n const states: Record<Exclude<typeof label, undefined>, ViewState> = {\n // preparing states\n materializing: 'preparing',\n initializing: 'preparing',\n preparing: 'preparing',\n pending: 'preparing',\n starting: 'preparing',\n\n // running states\n running: 'running',\n completing: 'running',\n failing: 'running',\n aborting: 'running',\n reviving: 'running',\n suspended: 'suspended',\n\n // final states\n failed: 'failed',\n completed: 'completed',\n aborted: 'aborted',\n\n // NavigationFlowState\n Unknown: 'unknown',\n Stopped: 'suspended',\n Paused: 'suspended',\n Working: 'running',\n Draining: 'running',\n Pausing: 'running',\n Completed: 'completed',\n };\n\n return states[label!] ?? 'unknown';\n}\n\n// see https://github.com/ytsaurus/ytsaurus/blob/4ff6c0d/yt/yt/flow/lib/client/public.h#L20-L28\nexport type NavigationFlowState =\n | 'Unknown'\n | 'Stopped'\n | 'Paused'\n | 'Working'\n | 'Draining'\n | 'Pausing'\n | 'Completed';\n\nexport type StatusLabelState =\n | 'aborted'\n | 'aborting'\n | 'completed'\n | 'completing'\n | 'failed'\n | 'failing'\n | 'initializing'\n | 'materializing'\n | 'pending'\n | 'preparing'\n | 'reviving'\n | 'running'\n | 'starting'\n | 'suspended'\n | 'running';\n\ntype ViewState =\n | 'preparing'\n | 'running'\n | 'failed'\n | 'aborted'\n | 'completed'\n | 'suspended'\n | 'unknown';\n\nfunction getIcon(state: ViewState) {\n const iconsByViewState: Record<ViewState, IconName> = {\n preparing: 'clock',\n running: 'play-circle',\n suspended: 'pause-circle',\n failed: 'times-circle',\n completed: 'check-circle',\n aborted: 'times-circle',\n unknown: 'question-circle',\n };\n return iconsByViewState[state];\n}\n\nconst b = block('status-label');\n\nexport type StatusLabelProps = {\n className?: string;\n label?: StatusLabelState | NavigationFlowState;\n renderPlaque?: boolean;\n};\n\nexport default function StatusLabel({className, label, renderPlaque}: StatusLabelProps) {\n const mappedState = getViewState(label);\n const icon = getIcon(mappedState);\n const mods = {state: mappedState};\n\n return !label ? (\n <span />\n ) : (\n <span className={b(null, renderPlaque ? b('plaque', mods, className) : b(mods, className))}>\n <Icon awesome={icon} />\n <span>{hammer.format['ReadableField'](label)}</span>\n </span>\n );\n}\n","import {RootState} from '../../reducers';\n\nexport const getFlowStatusData = (state: RootState) => state.flow.status.data;\nexport const getFlowStatusPipelinePath = (state: RootState) => state.flow.status.pipeline_path;\nexport const getFlowStatusError = (state: RootState) => state.flow.status.error;\n","import {ThunkAction} from 'redux-thunk';\n\nimport {ytApiV4} from '../../../rum/rum-wrap-api';\nimport {RootState} from '../../../store/reducers';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {getFlowStatusPipelinePath} from '../../../store/selectors/flow/status';\nimport {flowStatusActions} from '../../reducers/flow/status';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, any>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function loadFlowStatus(pipeline_path: string): AsyncAction<Promise<void>> {\n return (dispatch) => {\n dispatch(flowStatusActions.onRequest({pipeline_path}));\n\n return ytApiV4\n .getPipelineState({\n parameters: {pipeline_path},\n cancellation: cancelHelper.removeAllAndSave,\n })\n .then(\n (data) => {\n dispatch(flowStatusActions.onSuccess({data}));\n },\n (error) => {\n if (!isCancelled(error)) {\n dispatch(flowStatusActions.onError({error}));\n }\n },\n );\n };\n}\n\nexport function updateFlowState({\n pipeline_path,\n state,\n}: {\n pipeline_path: string;\n state: 'start' | 'stop' | 'pause';\n}): AsyncAction<Promise<void>> {\n return (dispatch, getState) => {\n const method = `${state}Pipeline` as const;\n return ytApiV4[method]({pipeline_path}).then(() => {\n const path = getFlowStatusPipelinePath(getState());\n if (path === pipeline_path) {\n dispatch(loadFlowStatus(pipeline_path));\n }\n });\n };\n}\n","import {RootState} from '../../../store/reducers';\n\nexport const getFlowViewMode = (state: RootState) => state.flow.filters.flowViewMode;\n","import {ThunkAction} from 'redux-thunk';\n\nimport {ytApiV4} from '../../../rum/rum-wrap-api';\nimport {RootState} from '../../../store/reducers';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {flowLayoutActions} from '../../../store/reducers/flow/layout';\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, any>;\n\nconst cancelHelper = new CancelHelper();\n\nexport function loadFlowLayout(pipeline_path: string): AsyncAction<Promise<void>> {\n return (dispatch) => {\n dispatch(flowLayoutActions.onRequest({pipeline_path}));\n\n return ytApiV4\n .getFlowView({\n parameters: {pipeline_path, ...{annotate_with_types: true}},\n cancellation: cancelHelper.removeAllAndSave,\n })\n .then(\n (data) => {\n dispatch(flowLayoutActions.onSuccess({data}));\n },\n (error) => {\n if (!isCancelled(error)) {\n dispatch(flowLayoutActions.onError({error}));\n }\n },\n );\n };\n}\n\nexport function expandFlowLayoutComputation({\n computation_id,\n}: {\n computation_id: string;\n}): AsyncAction<void> {\n return (dispatch) => {\n dispatch(flowLayoutActions.onExpandComputation({computation_id}));\n };\n}\n\nexport function expandFlowLayoutWorker({\n worker_address,\n}: {\n worker_address: string;\n}): AsyncAction<void> {\n return (dispatch) => {\n dispatch(flowLayoutActions.onExpandWorker({worker_address}));\n };\n}\n","import {createSelector} from 'reselect';\nimport map_ from 'lodash/map';\nimport forEach_ from 'lodash/forEach';\n\nimport {RootState} from '../../../store/reducers';\n\nexport const getFlowLayoutPipelinePath = (state: RootState) => state.flow.layout.pipeline_path;\nexport const getFlowLayoutError = (state: RootState) => state.flow.layout.error;\nconst getFlowLayoutExpandedComputations = (state: RootState) =>\n state.flow.layout.expandedComputations;\nconst getFlowLayoutExpandedWorkers = (state: RootState) => state.flow.layout.expandedWorkers;\n\nconst getFlowLayoutRawData = (state: RootState) => state.flow.layout.data;\n\ntype RowData = Pick<\n ReturnType<typeof getFlowLayoutPartitions>[number],\n 'job' | 'partition' | 'worker'\n>;\ntype LayoutExpandable = {\n $value: Array<Exclude<FlowLayoutDataItem, LayoutExpandable>>;\n $attributes: {\n name: string;\n expanded: boolean;\n job_count: number;\n worker_count: number;\n partition_count: number;\n };\n};\n\nexport type FlowLayoutDataItem = {[K in keyof RowData]: RowData[K] | null} | LayoutExpandable;\n\nexport const getFlowLayoutData = createSelector(\n [getFlowLayoutRawData, getFlowLayoutExpandedComputations, getFlowLayoutExpandedWorkers],\n (data, expandedComputations, expandedWorkers) => {\n return (mode: 'computations' | 'workers') => {\n return mode === 'computations'\n ? handleExpandedNames(getFlowLayoutPartitions(data), expandedComputations)\n : handleExpandedNames(getFlowLayoutWorkers(data), expandedWorkers);\n };\n },\n);\n\nfunction getFlowLayoutPartitions(data: ReturnType<typeof getFlowLayoutRawData>) {\n const {jobs = {}, partitions} = data?.execution_spec?.layout?.value ?? {};\n return map_(partitions, (item) => {\n const job = jobs[item.current_job_id!];\n const {worker_address} = job ?? {};\n const worker = data?.workers[worker_address];\n return {\n name: item.computation_id,\n partition: (item as typeof item | undefined) ?? null,\n job: (job as typeof job | undefined) ?? null,\n worker: worker ?? null,\n };\n });\n}\n\nfunction getFlowLayoutWorkers(data: ReturnType<typeof getFlowLayoutRawData>) {\n const {jobs, partitions} = data?.execution_spec?.layout?.value ?? {};\n\n const res: ReturnType<typeof getFlowLayoutPartitions> = [];\n const visitedWorkers = new Set<string>();\n\n forEach_(jobs, (job) => {\n const {worker_address, partition_id} = job;\n const partition = partitions?.[partition_id];\n const worker = data?.workers[worker_address];\n res.push({\n name: worker_address,\n partition: partition ?? null,\n job: job ?? null,\n worker: worker ?? null,\n });\n\n visitedWorkers.add(worker_address);\n });\n forEach_(data?.workers, (item) => {\n const {address} = item;\n if (!visitedWorkers.has(address)) {\n res.push({name: address, partition: null, job: null, worker: null});\n }\n });\n\n return res;\n}\n\nfunction handleExpandedNames(\n rows: Array<RowData & {name: string}>,\n expandedNames: Record<string, true>,\n) {\n const expanded = new Set(Object.keys(expandedNames));\n const groups: Array<LayoutExpandable> = [];\n const groupsByName = new Map<string, LayoutExpandable>();\n rows.forEach((item) => {\n const {name, ...rest} = item;\n let dst = groupsByName.get(name);\n if (!dst) {\n dst = {\n $attributes: {\n name: name,\n expanded: expanded.has(name),\n job_count: 0,\n worker_count: 0,\n partition_count: 0,\n },\n $value: [],\n };\n groupsByName.set(name, dst!);\n groups.push(dst!);\n }\n if (item.job) {\n ++dst!.$attributes.job_count;\n }\n if (item.worker) {\n ++dst!.$attributes.worker_count;\n }\n if (item.partition) {\n ++dst!.$attributes.partition_count;\n }\n dst!.$value?.push(rest);\n });\n\n if (!expanded.size) {\n return groups;\n }\n\n let res: Array<FlowLayoutDataItem> = [];\n for (const item of groups) {\n const {name} = item.$attributes;\n if (expanded.has(name)) {\n res = res.concat(item, item.$value);\n } else {\n res.push(item);\n }\n }\n\n return res;\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Column} from '@gravity-ui/react-data-table';\n\nimport format from '../../../../../common/hammer/format';\n\nimport ClickableAttributesButton from '../../../../../components/AttributesButton/ClickableAttributesButton';\nimport ClipboardButton from '../../../../../components/ClipboardButton/ClipboardButton';\nimport DataTableYT, {\n DATA_TABLE_YT_SETTINGS,\n} from '../../../../../components/DataTableYT/DataTableYT';\nimport ErrorBlock from '../../../../../components/Error/Error';\nimport {ExpandButton} from '../../../../../components/ExpandButton';\n\nimport {useUpdater} from '../../../../../hooks/use-updater';\nimport {\n expandFlowLayoutComputation,\n expandFlowLayoutWorker,\n loadFlowLayout,\n} from '../../../../../store/actions/flow/layout';\nimport {\n FlowLayoutDataItem,\n getFlowLayoutData,\n getFlowLayoutError,\n getFlowLayoutPipelinePath,\n} from '../../../../../store/selectors/flow/layout';\n\nimport './FlowLayout.scss';\n\nconst block = cn('yt-navigation-flow-layout');\n\nexport function FlowLayout({path, viewMode}: {path: string; viewMode: 'computations' | 'workers'}) {\n const dispatch = useDispatch();\n\n const pipeline_path = useSelector(getFlowLayoutPipelinePath);\n const error = useSelector(getFlowLayoutError);\n const getData = useSelector(getFlowLayoutData);\n\n const data = React.useMemo(() => {\n return getData(viewMode);\n }, [viewMode, getData]);\n\n const samePath = path === pipeline_path;\n const columns = useFlowLayoutColumn(viewMode);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadFlowLayout(path));\n }, [path, dispatch]);\n useUpdater(updateFn);\n\n if (!samePath) {\n return null;\n }\n\n return (\n <div className={block()}>\n {Boolean(error) && <ErrorBlock error={error} />}\n <DataTableYT\n settings={DATA_TABLE_YT_SETTINGS}\n columns={columns}\n data={data}\n useThemeYT\n />\n </div>\n );\n}\n\nfunction useFlowLayoutColumn(type: 'computations' | 'workers') {\n const dispatch = useDispatch();\n\n const res = React.useMemo(() => {\n const isComputations = type === 'computations';\n const columns: Array<Column<FlowLayoutDataItem>> = [\n {\n name: isComputations\n ? 'Computation / Partition Id'\n : 'Worker address / Partition Id',\n className: block('td-name'),\n render({row}) {\n let content;\n if ('$attributes' in row) {\n const {\n $attributes: {name, expanded},\n } = row;\n content = (\n <>\n <ExpandButton\n className={block('expand', {hidden: row.$value.length === 0})}\n expanded={expanded}\n toggleExpanded={() => {\n dispatch(\n isComputations\n ? expandFlowLayoutComputation({\n computation_id: name,\n })\n : expandFlowLayoutWorker({worker_address: name}),\n );\n requestAnimationFrame(() => {\n window.dispatchEvent(new Event('resize'));\n });\n }}\n />\n <span className={block('name-title')}>\n {name}{' '}\n <ClipboardButton\n view=\"flat-secondary\"\n text={name}\n inlineMargins\n visibleOnRowHover\n />\n </span>\n </>\n );\n } else {\n content = (\n <span className={block('name-title', {level: '1'})}>\n {row.partition?.partition_id}\n <ClipboardButton\n view=\"flat-secondary\"\n text={row.partition?.partition_id}\n inlineMargins\n visibleOnRowHover\n />\n </span>\n );\n }\n return <div className={block('name')}>{content}</div>;\n },\n },\n {\n name: 'Partition state',\n render({row}) {\n return 'partition' in row\n ? row.partition?.state\n : format.Number(row.$value.length);\n },\n width: 120,\n },\n {\n name: 'Job Id',\n render({row}) {\n return 'partition' in row ? (\n <>\n {row.partition?.current_job_id}{' '}\n <ClipboardButton\n view=\"flat-secondary\"\n text={row.partition?.current_job_id}\n inlineMargins\n visibleOnRowHover\n />\n </>\n ) : (\n format.Number(row.$attributes.job_count)\n );\n },\n width: 400,\n },\n isComputations\n ? {\n name: 'Worker address',\n render({row}) {\n return 'job' in row ? (\n <>\n {row.job?.worker_address}\n <ClipboardButton\n view=\"flat-secondary\"\n text={row.job?.worker_address}\n inlineMargins\n visibleOnRowHover\n />\n </>\n ) : (\n format.Number(row.$attributes.worker_count)\n );\n },\n width: 400,\n }\n : {\n name: 'Computation',\n render({row}) {\n return 'partition' in row\n ? row.partition?.computation_id\n : format.Number(row.$attributes.partition_count);\n },\n width: 400,\n },\n {\n name: 'actions',\n header: null,\n render({row}) {\n return (\n <ClickableAttributesButton\n className={block('show-attributes')}\n title={'Details'}\n attributes={row}\n withTooltip={false}\n />\n );\n },\n width: 50,\n },\n ];\n return columns;\n }, [type]);\n return res;\n}\n","import {RootState} from '../../../store/reducers';\n\nexport const getFlowStaticSpecData = (state: RootState) => state.flow.staticSpec.data;\nexport const getFlowStaticSpecPath = (state: RootState) => state.flow.staticSpec.pipeline_path;\nexport const getFlowStaticSpecError = (state: RootState) => state.flow.staticSpec.error;\nexport const getFlowStaticSpecFirstLoading = (state: RootState) => {\n const {loading, loaded} = state.flow.staticSpec;\n return !loaded && loading;\n};\n\nexport const getFlowDynamicSpecData = (state: RootState) => state.flow.dynamicSpec.data;\nexport const getFlowDynamicSpecPath = (state: RootState) => state.flow.dynamicSpec.pipeline_path;\nexport const getFlowDynamicSpecError = (state: RootState) => state.flow.dynamicSpec.error;\nexport const getFlowDynamicSpecFirstLoading = (state: RootState) => {\n const {loading, loaded} = state.flow.dynamicSpec;\n return !loaded && loading;\n};\n","import {ThunkAction} from 'redux-thunk';\n\nimport {ytApiV4} from '../../../rum/rum-wrap-api';\nimport {RootState} from '../../../store/reducers';\nimport CancelHelper, {isCancelled} from '../../../utils/cancel-helper';\nimport {\n FlowSpecState,\n dynamicSpecActions,\n staticSpecActions,\n} from '../../../store/reducers/flow/specs';\nimport {getFlowDynamicSpecPath, getFlowStaticSpecPath} from '../../../store/selectors/flow/specs';\n\nconst cancelHelper = new CancelHelper();\n\ntype AsyncAction<R = void> = ThunkAction<R, RootState, unknown, any>;\n\nexport function loadFlowStaticSpec(pipeline_path: string): AsyncAction {\n return (dispatch) => {\n dispatch(staticSpecActions.onRequest({pipeline_path}));\n return ytApiV4\n .getPipelineSpec({\n parameters: {pipeline_path},\n cancellation: cancelHelper.removeAllAndSave,\n })\n .then(\n (data: FlowSpecState['data']) => {\n dispatch(staticSpecActions.onSuccess({data}));\n },\n (error: any) => {\n if (!isCancelled(error)) {\n dispatch(staticSpecActions.onError({error}));\n }\n },\n );\n };\n}\n\nexport function updateFlowStaticSpec({\n data,\n path,\n}: {\n data: FlowSpecState['data'];\n path: string;\n}): AsyncAction<Promise<void>> {\n return (dispatch, getState) => {\n return ytApiV4\n .setPipelineSpec({pipeline_path: path, expected_version: data?.version}, data?.spec)\n .then(() => {\n const pipeline_path = getFlowStaticSpecPath(getState());\n if (pipeline_path && pipeline_path === path) {\n dispatch(loadFlowStaticSpec(path));\n }\n });\n };\n}\n\nexport function loadFlowDynamicSpec(pipeline_path: string): AsyncAction {\n return (dispatch) => {\n dispatch(dynamicSpecActions.onRequest({pipeline_path}));\n return ytApiV4\n .getPipelineDynamicSpec({\n parameters: {pipeline_path},\n cancellation: cancelHelper.removeAllAndSave,\n })\n .then(\n (data: FlowSpecState['data']) => {\n dispatch(dynamicSpecActions.onSuccess({data}));\n },\n (error: any) => {\n if (!isCancelled(error)) {\n dispatch(dynamicSpecActions.onError({error}));\n }\n },\n );\n };\n}\n\nexport function updateFlowDynamicSpec({\n data,\n path,\n}: {\n data: FlowSpecState['data'];\n path: string;\n}): AsyncAction<Promise<void>> {\n return (dispatch, getState) => {\n return ytApiV4\n .setPipelineDynamicSpec(\n {pipeline_path: path, expected_version: data?.version},\n data?.spec,\n )\n .then(() => {\n const pipline_path = getFlowDynamicSpecPath(getState());\n if (path === pipline_path) {\n dispatch(loadFlowDynamicSpec(path));\n }\n });\n };\n}\n","import React from 'react';\nimport {useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button} from '@gravity-ui/uikit';\n\nimport {YTError} from '../../../../../../@types/types';\n\nimport {useUpdater} from '../../../../../hooks/use-updater';\n\nimport {useThunkDispatch} from '../../../../../store/thunkDispatch';\nimport {\n loadFlowDynamicSpec,\n loadFlowStaticSpec,\n updateFlowDynamicSpec,\n updateFlowStaticSpec,\n} from '../../../../../store/actions/flow/specs';\nimport {\n getFlowDynamicSpecData,\n getFlowDynamicSpecFirstLoading,\n getFlowStaticSpecData,\n getFlowStaticSpecError,\n getFlowStaticSpecFirstLoading,\n} from '../../../../../store/selectors/flow/specs';\nimport {getFlowSpecYsonSettings} from '../../../../../store/selectors/thor/unipika';\nimport {FlowSpecState} from '../../../../../store/reducers/flow/specs';\n\nimport Yson from '../../../../../components/Yson/Yson';\nimport Icon from '../../../../../components/Icon/Icon';\nimport {YTDFDialog, makeErrorFields} from '../../../../../components/Dialog';\nimport ErrorBlock from '../../../../../components/Block/Block';\nimport Loader from '../../../../../components/Loader/Loader';\nimport {UnipikaSettings} from '../../../../../components/Yson/StructuredYson/StructuredYsonTypes';\n\nimport './PipelineSpec.scss';\n\nconst block = cn('yt-pipeline-spec');\n\ntype PipelineSpecProps = {\n path: string;\n error: YTError | undefined;\n data: FlowSpecState['data'];\n name: string;\n onSave: (data: PipelineSpecProps['data']) => Promise<void>;\n};\n\nfunction PipelineSpec({path, data, error, name, onSave}: PipelineSpecProps) {\n const [showEdit, setShowEdit] = React.useState(false);\n\n const settings = useSelector(getFlowSpecYsonSettings);\n\n return (\n <React.Fragment>\n {Boolean(error) && <ErrorBlock error={error} />}\n <Yson\n value={data}\n settings={settings}\n virtualized\n folding\n extraTools={\n <React.Fragment>\n <Button view=\"outlined\" onClick={() => setShowEdit(true)}>\n <Icon awesome=\"pencil\" />\n Edit {name}\n </Button>\n </React.Fragment>\n }\n />\n <EditSpecDialog\n path={path}\n name={name}\n visible={showEdit}\n onSpecApply={(spec) => onSave({...data!, spec})}\n onClose={() => setShowEdit(false)}\n spec={data?.spec}\n settings={settings}\n />\n </React.Fragment>\n );\n}\n\ntype FormValues = {\n text: {value?: string};\n path: string;\n};\n\nfunction EditSpecDialog({\n path,\n visible,\n spec,\n onClose,\n onSpecApply,\n name,\n settings,\n}: Pick<PipelineSpecProps, 'name' | 'path'> & {\n spec?: unknown;\n visible: boolean;\n onClose: () => void;\n settings: UnipikaSettings;\n onSpecApply: (spec: unknown) => Promise<void>;\n}) {\n const [error, setError] = React.useState<YTError | undefined>();\n\n const text = React.useMemo(() => {\n return {value: JSON.stringify(spec, null, 4)};\n }, [spec]);\n\n return (\n visible && (\n <YTDFDialog<FormValues>\n visible\n size=\"l\"\n onClose={onClose}\n initialValues={{text, path}}\n headerProps={{\n title: `Edit ${name}`,\n }}\n onAdd={async (f) => {\n setError(undefined);\n const {text} = f.getState().values;\n if (text.value) {\n try {\n return await onSpecApply(JSON.parse(text.value));\n } catch (e: any) {\n setError(e);\n return Promise.reject(e);\n }\n } else {\n return Promise.resolve();\n }\n }}\n fields={[\n {\n caption: 'Pipeline path',\n name: 'path',\n type: 'plain',\n },\n {\n name: 'text',\n caption: 'Specification',\n type: 'json',\n fullWidth: true,\n extras: {\n className: block('editor'),\n initialShowPreview: false,\n unipikaSettings: settings,\n },\n },\n ...makeErrorFields([error]),\n ]}\n />\n )\n );\n}\n\nexport function FlowStaticSpec({pipeline_path: path}: {pipeline_path: string}) {\n const dispatch = useThunkDispatch();\n\n const data = useSelector(getFlowStaticSpecData);\n const error = useSelector(getFlowStaticSpecError);\n const firstLoading = useSelector(getFlowStaticSpecFirstLoading);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadFlowStaticSpec(path));\n }, [dispatch, path]);\n useUpdater(updateFn);\n\n const onEdit = React.useCallback(\n (newData: typeof data) => {\n return dispatch(updateFlowStaticSpec({path, data: newData}));\n },\n [path, dispatch],\n );\n\n return firstLoading ? (\n <Loader />\n ) : (\n <PipelineSpec\n path={path}\n data={data}\n error={error}\n name=\"static specification\"\n onSave={onEdit}\n />\n );\n}\n\nexport function FlowDynamicSpec({pipeline_path: path}: {pipeline_path: string}) {\n const dispatch = useThunkDispatch();\n\n const data = useSelector(getFlowDynamicSpecData);\n const error = useSelector(getFlowStaticSpecError);\n const firstLoading = useSelector(getFlowDynamicSpecFirstLoading);\n\n const updateFn = React.useCallback(() => {\n dispatch(loadFlowDynamicSpec(path));\n }, [dispatch, path]);\n useUpdater(updateFn);\n\n const onEdit = React.useCallback(\n (newData: typeof data) => {\n return dispatch(updateFlowDynamicSpec({path, data: newData}));\n },\n [path, dispatch],\n );\n\n return firstLoading ? (\n <Loader />\n ) : (\n <PipelineSpec\n path={path}\n data={data}\n error={error}\n name=\"dynamic specification\"\n onSave={onEdit}\n />\n );\n}\n","import React from 'react';\nimport {useDispatch, useSelector} from 'react-redux';\nimport cn from 'bem-cn-lite';\n\nimport {Button, Flex, Link, RadioButton, Text} from '@gravity-ui/uikit';\n\nimport Alert from '../../../../components/Alert/Alert';\nimport ClipboardButton from '../../../../components/ClipboardButton/ClipboardButton';\nimport format from '../../../../common/hammer/format';\nimport Icon from '../../../../components/Icon/Icon';\nimport MetaTable from '../../../../components/MetaTable/MetaTable';\nimport StatusLabel from '../../../../components/StatusLabel/StatusLabel';\nimport {useUpdater} from '../../../../hooks/use-updater';\nimport {useThunkDispatch} from '../../../../store/thunkDispatch';\nimport {loadFlowStatus, updateFlowState} from '../../../../store/actions/flow/status';\nimport {getFlowViewMode} from '../../../../store/selectors/flow/filters';\nimport {getFlowStatusData} from '../../../../store/selectors/flow/status';\nimport {getCluster} from '../../../../store/selectors/global';\nimport {getAttributes, getPath} from '../../../../store/selectors/navigation';\nimport {\n FLOW_VIEW_MODES,\n FlowViewMode,\n setFlowViewMode,\n} from '../../../../store/reducers/flow/filters';\nimport UIFactory from '../../../../UIFactory';\nimport {formatByParams} from '../../../../utils/format';\n\nimport {FlowLayout} from './FlowLayout/FlowLayout';\nimport {FlowDynamicSpec, FlowStaticSpec} from './PipelineSpec/PipelineSpec';\nimport './Flow.scss';\n\nconst block = cn('yt-navigation-flow');\n\nfunction useViewModeOptions() {\n const res = React.useMemo(() => {\n const {urlTemplate, component} = UIFactory.getMonitoringComponentForNavigationFlow() ?? {};\n const options =\n component || urlTemplate\n ? FLOW_VIEW_MODES\n : FLOW_VIEW_MODES.filter((item) => item !== 'monitoring');\n\n return options.map((value) => {\n return {value, content: format.ReadableField(value)};\n });\n }, []);\n return res;\n}\n\nexport function Flow() {\n const dispatch = useDispatch();\n const viewMode = useSelector(getFlowViewMode);\n\n const options = useViewModeOptions();\n\n return (\n <div className={block()}>\n <FlowState />\n <Flex className={block('toolbar')}>\n <RadioButton<FlowViewMode>\n options={options}\n value={viewMode}\n onUpdate={(value) => dispatch(setFlowViewMode(value))}\n />\n </Flex>\n <div className={block('content', {view: viewMode})}>\n <FlowContent viewMode={viewMode} />\n </div>\n </div>\n );\n}\n\nfunction FlowContent({viewMode}: {viewMode: FlowViewMode}) {\n const path = useSelector(getPath);\n\n if (!path) {\n return null;\n }\n\n switch (viewMode) {\n case 'static_spec':\n return <FlowStaticSpec pipeline_path={path} />;\n case 'dynamic_spec':\n return <FlowDynamicSpec pipeline_path={path} />;\n case 'monitoring':\n return <FlowMonitoring />;\n case 'workers':\n case 'computations':\n return <FlowLayout path={path} viewMode={viewMode} />;\n case 'graph':\n return (\n <Alert\n header={'Warning'}\n message={`'${viewMode}' view mode is not implemented yet`}\n />\n );\n default:\n return (\n <Alert\n header=\"Unexpected behaviour\"\n error={new Error(`'${viewMode}' view mode is not implemented`)}\n />\n );\n }\n}\n\nfunction FlowStatusToolbar() {\n const dispatch = useThunkDispatch();\n\n const pipeline_path = useSelector(getPath);\n\n const updateFn = React.useCallback(() => {\n return dispatch(loadFlowStatus(pipeline_path));\n }, [pipeline_path, dispatch]);\n\n useUpdater(updateFn);\n\n const {onStart, onStop, onPause} = React.useMemo(() => {\n return {\n onStart: () => dispatch(updateFlowState({pipeline_path, state: 'start'})),\n onStop: () => dispatch(updateFlowState({pipeline_path, state: 'stop'})),\n onPause: () => dispatch(updateFlowState({pipeline_path, state: 'pause'})),\n };\n }, [dispatch, pipeline_path]);\n\n return (\n <Flex className={block('status-toolbar')} alignItems=\"center\" gap={2}>\n <Button view=\"outlined\" onClick={onStart}>\n <Icon awesome=\"play-circle\" /> Start\n </Button>\n <Button view=\"outlined\" onClick={onPause}>\n <Icon awesome=\"pause-circle\" /> Pause\n </Button>\n <Button view=\"outlined\" onClick={onStop}>\n <Icon awesome=\"stop-circle\" /> Stop\n </Button>\n </Flex>\n );\n}\n\nfunction FlowState() {\n const value = useSelector(getFlowStatusData);\n const {leader_controller_address} = useSelector(getAttributes);\n return (\n <React.Fragment>\n <Flex className={block('state')} alignItems=\"center\" gap={2}>\n <Text variant=\"header-1\">Processing catalog </Text>\n <FlowStatusToolbar />\n </Flex>\n <MetaTable\n items={[\n [{key: 'status', value: <StatusLabel label={value} />}],\n [\n {\n key: 'leader_controller_address',\n value: (\n <>\n {leader_controller_address}\n <ClipboardButton\n view=\"flat-secondary\"\n text={leader_controller_address}\n inlineMargins\n />\n </>\n ),\n className: block('meta-item'),\n },\n ],\n ]}\n />\n </React.Fragment>\n );\n}\n\nfunction FlowMonitoring() {\n const {\n component: Component,\n title,\n urlTemplate,\n } = UIFactory.getMonitoringComponentForNavigationFlow() ?? {};\n const attributes = useSelector(getAttributes);\n const {monitoring_cluster, monitoring_project} = attributes;\n const cluster = useSelector(getCluster);\n\n if (Component) {\n return (\n <Component\n cluster={cluster}\n monitoring_cluster={monitoring_cluster}\n monitoring_project={monitoring_project}\n attributes={attributes}\n />\n );\n } else if (urlTemplate) {\n return (\n <Link\n target=\"_blank\"\n href={formatByParams(urlTemplate, {\n ytCluster: cluster,\n monitoring_cluster,\n monitoring_project,\n })}\n >\n {title || 'Monitoring'}\n </Link>\n );\n } else {\n return null;\n }\n}\n","const SvgChevronRight = props => <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 16 16\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"M5.47 13.03a.75.75 0 0 1 0-1.06L9.44 8 5.47 4.03a.75.75 0 0 1 1.06-1.06l4.5 4.5a.75.75 0 0 1 0 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0\" clipRule=\"evenodd\" /></svg>;\nexport default SvgChevronRight;"],"names":["props","_jsx","_objectSpread","xmlns","fill","viewBox","children","fillRule","d","clipRule","block","cn","ExpandButton","_ref","className","expanded","inline","toggleExpanded","all","showText","titleExpanded","titleCollapsed","_jsxs","Button","view","title","onClick","Icon","data","doubleShevronRightSvg","shevronRightSvg","size","b","StatusLabel","label","renderPlaque","mappedState","_states","materializing","initializing","preparing","pending","starting","running","completing","failing","aborting","reviving","suspended","failed","completed","aborted","Unknown","Stopped","Paused","Working","Draining","Pausing","Completed","getViewState","icon","unknown","mods","state","awesome","hammer","format","getFlowStatusData","flow","status","getFlowStatusPipelinePath","pipeline_path","cancelHelper","CancelHelper","loadFlowStatus","dispatch","flowStatusActions","onRequest","ytApiV4","getPipelineState","parameters","cancellation","removeAllAndSave","then","onSuccess","error","isCancelled","onError","updateFlowState","getState","method","concat","getFlowViewMode","filters","flowViewMode","getFlowLayoutPipelinePath","layout","getFlowLayoutError","getFlowLayoutData","createSelector","expandedComputations","expandedWorkers","mode","handleExpandedNames","_data$execution_spec$","_data$execution_spec","execution_spec","value","_ref$jobs","jobs","partitions","map_","item","_ref3","_ref4","job","current_job_id","worker_address","worker","workers","name","computation_id","partition","getFlowLayoutPartitions","_data$execution_spec$2","_data$execution_spec2","_ref5","res","visitedWorkers","Set","forEach_","partition_id","push","add","address","has","getFlowLayoutWorkers","rows","expandedNames","Object","keys","groups","groupsByName","Map","forEach","_$value","rest","_objectWithoutProperties","_excluded","dst","get","$attributes","job_count","worker_count","partition_count","$value","set","_i","_groups","length","FlowLayout","path","viewMode","useDispatch","useSelector","getData","React","samePath","columns","type","isComputations","render","_ref2","content","row","_row$$attributes","_Fragment","hidden","flowLayoutActions","onExpandComputation","expandFlowLayoutComputation","onExpandWorker","expandFlowLayoutWorker","requestAnimationFrame","window","dispatchEvent","Event","ClipboardButton","text","inlineMargins","visibleOnRowHover","_row$partition","_row$partition2","level","_row$partition3","Number","width","_row$partition4","_row$partition5","_row$job","_row$job2","_ref6","_row$partition6","header","_ref7","ClickableAttributesButton","attributes","withTooltip","useFlowLayoutColumn","updateFn","getFlowView","annotate_with_types","loadFlowLayout","useUpdater","Boolean","ErrorBlock","DataTableYT","settings","DATA_TABLE_YT_SETTINGS","useThemeYT","getFlowStaticSpecData","staticSpec","getFlowStaticSpecPath","getFlowStaticSpecError","getFlowStaticSpecFirstLoading","_state$flow$staticSpe","loading","loaded","getFlowDynamicSpecData","dynamicSpec","getFlowDynamicSpecPath","getFlowDynamicSpecFirstLoading","_state$flow$dynamicSp","loadFlowStaticSpec","staticSpecActions","getPipelineSpec","loadFlowDynamicSpec","dynamicSpecActions","getPipelineDynamicSpec","PipelineSpec","onSave","_React$useState","_React$useState2","_slicedToArray","showEdit","setShowEdit","getFlowSpecYsonSettings","Yson","virtualized","folding","extraTools","EditSpecDialog","visible","onSpecApply","spec","onClose","_React$useState3","_React$useState4","setError","JSON","stringify","YTDFDialog","initialValues","headerProps","onAdd","_asyncToGenerator","_regeneratorRuntime","_callee","f","_context","prev","next","undefined","values","parse","abrupt","sent","t0","Promise","reject","resolve","stop","_x","apply","arguments","fields","caption","fullWidth","extras","initialShowPreview","unipikaSettings","_toConsumableArray","makeErrorFields","FlowStaticSpec","useThunkDispatch","firstLoading","onEdit","newData","setPipelineSpec","expected_version","version","updateFlowStaticSpec","Loader","FlowDynamicSpec","setPipelineDynamicSpec","pipline_path","updateFlowDynamicSpec","Flow","options","_UIFactory$getMonitor","UIFactory","getMonitoringComponentForNavigationFlow","urlTemplate","component","FLOW_VIEW_MODES","filter","map","ReadableField","FlowState","Flex","RadioButton","onUpdate","setFlowViewMode","FlowContent","getPath","FlowMonitoring","Alert","message","Error","FlowStatusToolbar","_React$useMemo","onStart","onStop","onPause","alignItems","gap","leader_controller_address","getAttributes","Text","variant","MetaTable","items","key","_UIFactory$getMonitor2","Component","monitoring_cluster","monitoring_project","cluster","getCluster","Link","target","href","formatByParams","ytCluster"],"sourceRoot":""}