@ytsaurus/ui 1.80.0 → 1.81.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/build/assets-manifest.json +42 -42
- package/dist/public/build/css/{main.dcd64cd5.css → main.eb2fcc89.css} +2 -2
- package/dist/public/build/css/main.eb2fcc89.css.map +1 -0
- package/dist/public/build/css/query-results.a32443a4.chunk.css +2 -0
- package/dist/public/build/css/query-results.a32443a4.chunk.css.map +1 -0
- package/dist/public/build/js/{5345.7bfeec33.chunk.js → 5345.1b93045f.chunk.js} +2 -2
- package/dist/public/build/js/5345.1b93045f.chunk.js.map +1 -0
- package/dist/public/build/js/{8390.714773c2.chunk.js → 8390.85a62077.chunk.js} +2 -2
- package/dist/public/build/js/{8390.714773c2.chunk.js.map → 8390.85a62077.chunk.js.map} +1 -1
- package/dist/public/build/js/{8460.5dc968f8.chunk.js → 8460.c1856c6c.chunk.js} +2 -2
- package/dist/public/build/js/{8460.5dc968f8.chunk.js.map → 8460.c1856c6c.chunk.js.map} +1 -1
- package/dist/public/build/js/{8778.611ca035.chunk.js → 8778.1333c21e.chunk.js} +2 -2
- package/dist/public/build/js/{8778.611ca035.chunk.js.map → 8778.1333c21e.chunk.js.map} +1 -1
- package/dist/public/build/js/{acl.34bb215f.chunk.js → acl.d54dce2b.chunk.js} +2 -2
- package/dist/public/build/js/{acl.34bb215f.chunk.js.map → acl.d54dce2b.chunk.js.map} +1 -1
- package/dist/public/build/js/app-navigation.0a971263.chunk.js +2 -0
- package/dist/public/build/js/app-navigation.0a971263.chunk.js.map +1 -0
- package/dist/public/build/js/{chyt.162bfa07.chunk.js → chyt.c4f199f2.chunk.js} +2 -2
- package/dist/public/build/js/{chyt.162bfa07.chunk.js.map → chyt.c4f199f2.chunk.js.map} +1 -1
- package/dist/public/build/js/{cluster-page-wrapper.7b4cf9e8.chunk.js → cluster-page-wrapper.f496d609.chunk.js} +2 -2
- package/dist/public/build/js/{cluster-page-wrapper.7b4cf9e8.chunk.js.map → cluster-page-wrapper.f496d609.chunk.js.map} +1 -1
- package/dist/public/build/js/main.3c492785.js +3 -0
- package/dist/public/build/js/main.3c492785.js.map +1 -0
- package/dist/public/build/js/{manage-tokens.6ee1a15f.chunk.js → manage-tokens.734b8023.chunk.js} +2 -2
- package/dist/public/build/js/{manage-tokens.6ee1a15f.chunk.js.map → manage-tokens.734b8023.chunk.js.map} +1 -1
- package/dist/public/build/js/navigation.d90b2007.chunk.js +2 -0
- package/dist/public/build/js/navigation.d90b2007.chunk.js.map +1 -0
- package/dist/public/build/js/{odin.155e8db3.chunk.js → odin.e4f91e41.chunk.js} +2 -2
- package/dist/public/build/js/{odin.155e8db3.chunk.js.map → odin.e4f91e41.chunk.js.map} +1 -1
- package/dist/public/build/js/query-results.060d3367.chunk.js +2 -0
- package/dist/public/build/js/query-results.060d3367.chunk.js.map +1 -0
- package/dist/public/build/js/{query-tracker.4f814d7d.chunk.js → query-tracker.1abe96b9.chunk.js} +2 -2
- package/dist/public/build/js/{query-tracker.4f814d7d.chunk.js.map → query-tracker.1abe96b9.chunk.js.map} +1 -1
- package/dist/public/build/js/{runtime.36f41d89.js → runtime.3e817dfd.js} +2 -2
- package/dist/public/build/js/{runtime.36f41d89.js.map → runtime.3e817dfd.js.map} +1 -1
- package/dist/public/build/js/{scheduling.b9c80123.chunk.js → scheduling.92cf85f2.chunk.js} +2 -2
- package/dist/public/build/js/{scheduling.b9c80123.chunk.js.map → scheduling.92cf85f2.chunk.js.map} +1 -1
- package/dist/public/build/js/{system.edb155e1.chunk.js → system.e941de56.chunk.js} +2 -2
- package/dist/public/build/js/system.e941de56.chunk.js.map +1 -0
- package/dist/public/build/manifest.json +44 -44
- package/package.json +2 -2
- package/dist/public/build/css/main.dcd64cd5.css.map +0 -1
- package/dist/public/build/css/query-results.9145dc2c.chunk.css +0 -2
- package/dist/public/build/css/query-results.9145dc2c.chunk.css.map +0 -1
- package/dist/public/build/js/5345.7bfeec33.chunk.js.map +0 -1
- package/dist/public/build/js/app-navigation.f17f4e9f.chunk.js +0 -2
- package/dist/public/build/js/app-navigation.f17f4e9f.chunk.js.map +0 -1
- package/dist/public/build/js/main.56d904d6.js +0 -3
- package/dist/public/build/js/main.56d904d6.js.map +0 -1
- package/dist/public/build/js/navigation.c75e53bb.chunk.js +0 -2
- package/dist/public/build/js/navigation.c75e53bb.chunk.js.map +0 -1
- package/dist/public/build/js/query-results.502a64be.chunk.js +0 -2
- package/dist/public/build/js/query-results.502a64be.chunk.js.map +0 -1
- package/dist/public/build/js/system.edb155e1.chunk.js.map +0 -1
- /package/dist/public/build/js/{main.56d904d6.js.LICENSE.txt → main.3c492785.js.LICENSE.txt} +0 -0
package/dist/public/build/js/{manage-tokens.6ee1a15f.chunk.js → manage-tokens.734b8023.chunk.js}
RENAMED
@@ -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:()=>N,yz:()=>S,yZ:()=>E,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(88794),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(2140),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(1604),n.e(3784),n.e(2736)]).then(n.bind(n,25600))}var j,E=(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 N=(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)})))),"")},10288:(e,t,n)=>{n.r(t),n.d(t,{ManageTokensModalContent:()=>re,closeManageTokensModal:()=>j,openManageTokensModal:()=>C});var r=n(13322),a=n(9736),o=n(76872),s=n(41655),i=n.n(s),c=n(77810),l=n(44693),u=n(92423),d=n(69442),f=n.n(d),v=n(11960),m=n(20361),h=n(40319),p=n(64714),w=n(29081),g=n(52797),x=n(30320),A=n(48971);function k(){var e=(0,w.by)();if(e){var t=(0,g.lt)(e);if(t)return{proxy:(0,g.v9)(t)}}return{}}var y=function(e){return function(t){return t({type:x.WZ.REQUEST}),p.$S.listUserTokens(p.Vu.listUserTokens,{parameters:(0,h.A)((0,h.A)({},e),{},{with_metadata:!0}),setup:k()}).then((function(e){t({type:x.WZ.SUCCESS,data:{data:e}})})).catch((function(e){throw t({type:x.WZ.FAILURE,data:{error:e}}),e}))}},b=function(e){var t=e.credentials,n=e.token_sha256;return function(){return(0,A.fI)(p.$S.revokeToken(p.Vu.issueToken,{parameters:(0,h.A)({token_sha256:n},t),setup:k()}),{autoHide:!0,toasterName:n,successContent:"The token has been removed"})}},C=function(){return function(e){e({type:x.ZG})}},j=function(){return function(e){e({type:x.h$})}},E=n(51194),N=n(15647),S=n(97082),T=n(60620),z=n(28640),R=n(77318),_=n(29121),M=n(12937),P=n(28407),Z=n(70232),I=n.n(Z),L=n(50073),H=n(64196),B=n(15801),D=n(55682);function O(e,t,n){return n?function(e,t){return function(){var n=(0,P.A)(I().mark((function n(r){var a;return I().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,B.s)(r);case 2:return a=n.sent,n.next=5,D.A.post("/api/yt/".concat(t,"/login"),{username:e,password:r});case 5:return n.abrupt("return",a);case 6:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}()}(e,t):function(){var e=(0,P.A)(I().mark((function e(t){return I().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}var F=n(64922),V=c.createContext(void 0),$=function(e){var t,n=c.useState(),o=(0,a.A)(n,2),s=o[0],i=o[1],u=(0,N.d4)(g.ID),d=null!==(t=(0,N.d4)(g.kV))&&void 0!==t?t:"";return(0,F.jsx)(F.Fragment,{children:(0,F.jsx)(L.l,{open:e.visible,hasCloseButton:!0,onClose:e.handleCancel,children:(0,F.jsx)(m.yZ,{headerProps:{title:"Authentication"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(){var t=(0,P.A)(I().mark((function t(n){var r,a,o,s;return I().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i(void 0),r=n.getState().values,a=r.password,o=r.sha256_password,s=O(u,d,(0,B.m)()),t.abrupt("return",s(o||a).then((function(t){e.handleConfirm(t)})).catch(i));case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),fields:[{name:"error-block",type:"block",extras:{children:(0,B.m)()?(0,F.jsx)(l.F,{message:"To access tokens management, you need enter your password"}):(0,F.jsx)(l.F,{message:(0,F.jsxs)("span",{children:[(0,F.jsx)(H.N,{target:"_blank",href:"https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle",children:"crypto.subtle"})," ","is not available from your browser, so SHA-256 hash cannot be generated. Please generate the hash of your password by self."]})})}},{name:"password",type:"text",required:!0,caption:"Password",extras:function(){return{type:"password"}},visibilityCondition:{when:"",isActive:function(){return(0,B.m)()}}},{name:"sha256_password",type:"text",required:!0,caption:"Password Hash (SHA-256)",visibilityCondition:{when:"",isActive:function(){return!(0,B.m)()}}}].concat((0,r.A)((0,m.Y)([s]))),footerProps:{propsButtonCancel:{onClick:e.handleCancel}}})})})},U=function(){function e(){(0,_.A)(this,e),this.promise=void 0,this.resolve=function(e){},this.reject=function(e){}}return(0,M.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 Y(e){var t=e.children,n=(0,N.d4)(S.tQ),r=c.useState(!1),o=(0,a.A)(r,2),s=o[0],i=o[1],l=c.useRef(new U),u=c.useMemo((function(){return{getPassword:function(){return n?Promise.resolve(void 0):(i(!0),l.current.create())}}}),[i,n]);return(0,F.jsxs)(V.Provider,{value:u,children:[t,(0,F.jsx)($,{visible:s,handleCancel:function(){i(!1),l.current.reject(new Error("cancel password window"))},handleConfirm:function(e){i(!1),l.current.resolve(e)}})]})}function W(){var e=c.useContext(V);if(!e)throw new Error("Wrap your app into ManageTokensPasswordModalContextProvider");return e}var q=n(73032),G=n(64772),J=(0,o.A)("manage-tokens-modal-content"),K=function(e){var t=e.onClose,n=W().getPassword,o=(0,N.d4)(g.ID),s=(0,E._)(),i=(0,c.useState)(),d=(0,a.A)(i,2),f=d[0],v=d[1],w=(0,c.useState)(),x=(0,a.A)(w,2),A=x[0],b=x[1];return A?(0,F.jsxs)("div",{className:J("new-token"),children:[(0,F.jsx)("h2",{children:"Copy token value"}),(0,F.jsx)(l.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)(l.F,{message:A,layout:"horizontal",actions:(0,F.jsx)(z.A,{text:A})}),(0,F.jsx)("div",{className:J("tokens-action"),children:(0,F.jsx)(u.$,{size:"l",view:"action",onClick:function(){t()},children:"Close"})})]}):(0,F.jsx)(m.yZ,{headerProps:{title:"Generate token"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(e){var t=e.getState().values.description;return v(void 0),n().then((function(e){return s(function(e){var t=e.description,n=e.credentials;return function(){return p.$S.issueToken(p.Vu.issueToken,{parameters:(0,h.A)({description:t},n),setup:k()})}}({description:t,credentials:{user:o,password_sha256:e}})).then((function(t){return b(t),s(y({user:o,password_sha256:e})).then((function(){})).catch((function(){}))})).catch((function(e){return v(e),Promise.reject(e)}))})).catch((function(e){throw e}))},fields:[{name:"description",type:"textarea",caption:"Description"}].concat((0,r.A)((0,m.Y)([f]))),footerProps:{propsButtonCancel:{onClick:function(){t()}}}})},Q=function(e){var t=(0,c.useState)(!1),n=(0,a.A)(t,2),r=n[0],o=n[1],s=function(){o(!1)};return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(u.$,{size:"s",onClick:function(){o(!0)},children:(0,F.jsx)(T.A,{awesome:"trash-bin"})}),(0,F.jsx)(v.A,{content:"Are you sure you want to revoke the token? This action CANNOT be undone.",onCancel:s,onConfirm:function(){e.handleClickRemoveToken(e.index),o(!1)},onOutsideClick:s,visible:r})]})},X=function(e){var t=e.onSuccessRemove,n=e.onClickGenerateTokenButton,r=e.passwordSha256,a=W().getPassword,o=(0,E._)(),s=(0,N.d4)(S.BE),l=(0,N.d4)(g.ID),d=c.useCallback((function(e){return a().then((function(n){return o(b({credentials:{user:l,password_sha256:n},token_sha256:s[e].tokenHash})).then((function(){return o(y({user:l,password_sha256:n})).finally((function(){return t()}))}))}))}),[a,l,t,s,b,o]);return c.useEffect((function(){o(y({user:l,password_sha256:r}))}),[r,a,l,o]),(0,F.jsxs)("div",{className:J("tokens"),children:[(0,F.jsx)("h2",{children:"Authentication Tokens"}),(0,F.jsx)("div",{className:J("generate-token-button"),children:(0,F.jsx)(u.$,{size:"l",view:"action",onClick:function(){return n()},children:"Generate token"})}),(0,F.jsx)("div",{className:J("tokens-table"),children:(0,F.jsx)(R.Ay,{loaded:!0,useThemeYT:!0,data:s,noItemsText:"No tokens found",rowClassName:function(){return J("table-row")},columns:[{name:"tokenPrefix",header:"Token",width:110,className:J("table-cell"),render:function(e){var t=e.value;return t?"".concat(String(t),"..."):G.A.NO_VALUE}},{name:"tokenHash",header:"Token Hash",width:110,className:J("table-cell",{name:"hash"}),render:function(e){var t=e.value;return(0,F.jsxs)(F.Fragment,{children:[f()(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:J("table-cell",{name:"description"}),render:function(e){return e.value?(0,F.jsx)(q.H,{limit:100,value:e.value}):""}},{name:"creationTime",header:"Issued At",width:160,className:J("table-cell"),render:function(e){return e.value?i()(e.value).format("DD/MM/YYYY HH:mm:ss"):""}},{name:"",width:30,className:J("table-cell"),render:function(e){var t=e.index;return(0,F.jsx)(Q,{index:t,handleClickRemoveToken:d})}}],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(e){var t,n,r,o=e.passwordSha256,s=(t=ee.tokens,n=(0,c.useState)(t),{section:(r=(0,a.A)(n,2))[0],setSection:r[1]}),i=s.section,l=s.setSection,u=(0,c.useMemo)((function(){switch(i){case ee.tokens:return(0,F.jsx)(X,{passwordSha256:o,onSuccessRemove:function(){return l(ee.tokens)},onClickGenerateTokenButton:function(){return l(ee.generate)}});case ee.generate:return(0,F.jsx)(K,{onClose:function(){return l(ee.tokens)}});default:return null}}),[i]);return(0,F.jsx)(Y,{children:(0,F.jsx)("div",{className:J("content"),children:u})})},ne=function(){var e=W().getPassword,t=(0,N.wA)(),n=c.useState(),r=(0,a.A)(n,2),o=r[0],s=r[1],i=c.useState(!1),l=(0,a.A)(i,2),u=l[0],d=l[1];return c.useEffect((function(){e().then((function(e){s(e),d(!0)})).catch((function(){t(j())}))}),[e]),u?(0,F.jsx)(te,{passwordSha256:o}):null},re=function(){return(0,F.jsx)(Y,{children:(0,F.jsx)(ne,{})})}},15801:(e,t,n)=>{n.d(t,{m:()=>l,s:()=>i});var r=n(13322),a=n(28407),o=n(70232),s=n.n(o);function i(e){return c.apply(this,arguments)}function c(){return(c=(0,a.A)(s().mark((function e(t){var n;return s().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,r.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=function(){var e;return Boolean(null===(e=crypto)||void 0===e||null===(e=e.subtle)||void 0===e?void 0:e.digest)}},44693:(e,t,n)=>{n.d(t,{F:()=>E});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"),E=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(E.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(E.Title,{text:e.title}):e.title,f)),Array.isArray(e.actions)?r.createElement(E.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"})})))))};E.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}))},E.Title=({text:e,className:t})=>r.createElement(k.E,{variant:"subheader-2",className:m("title",t)},e),E.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)},E.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.
|
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:()=>N,yz:()=>S,yZ:()=>E,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(88794),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(937),n.e(6652),n.e(3776),n.e(3716),n.e(5423),n.e(9641),n.e(2140),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(1604),n.e(3784),n.e(2736)]).then(n.bind(n,25600))}var j,E=(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 N=(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)})))),"")},10288:(e,t,n)=>{n.r(t),n.d(t,{ManageTokensModalContent:()=>re,closeManageTokensModal:()=>j,openManageTokensModal:()=>C});var r=n(13322),a=n(9736),o=n(76872),s=n(41655),i=n.n(s),c=n(77810),l=n(44693),u=n(92423),d=n(69442),f=n.n(d),v=n(11960),m=n(20361),h=n(40319),p=n(64714),w=n(29081),g=n(52797),x=n(30320),A=n(48971);function k(){var e=(0,w.by)();if(e){var t=(0,g.lt)(e);if(t)return{proxy:(0,g.v9)(t)}}return{}}var y=function(e){return function(t){return t({type:x.WZ.REQUEST}),p.$S.listUserTokens(p.Vu.listUserTokens,{parameters:(0,h.A)((0,h.A)({},e),{},{with_metadata:!0}),setup:k()}).then((function(e){t({type:x.WZ.SUCCESS,data:{data:e}})})).catch((function(e){throw t({type:x.WZ.FAILURE,data:{error:e}}),e}))}},b=function(e){var t=e.credentials,n=e.token_sha256;return function(){return(0,A.fI)(p.$S.revokeToken(p.Vu.issueToken,{parameters:(0,h.A)({token_sha256:n},t),setup:k()}),{autoHide:!0,toasterName:n,successContent:"The token has been removed"})}},C=function(){return function(e){e({type:x.ZG})}},j=function(){return function(e){e({type:x.h$})}},E=n(51194),N=n(15647),S=n(97082),T=n(60620),z=n(28640),R=n(77318),_=n(29121),M=n(12937),P=n(28407),Z=n(70232),I=n.n(Z),L=n(50073),H=n(64196),B=n(15801),D=n(55682);function O(e,t,n){return n?function(e,t){return function(){var n=(0,P.A)(I().mark((function n(r){var a;return I().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,(0,B.s)(r);case 2:return a=n.sent,n.next=5,D.A.post("/api/yt/".concat(t,"/login"),{username:e,password:r});case 5:return n.abrupt("return",a);case 6:case"end":return n.stop()}}),n)})));return function(e){return n.apply(this,arguments)}}()}(e,t):function(){var e=(0,P.A)(I().mark((function e(t){return I().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",t);case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()}var F=n(64922),V=c.createContext(void 0),$=function(e){var t,n=c.useState(),o=(0,a.A)(n,2),s=o[0],i=o[1],u=(0,N.d4)(g.ID),d=null!==(t=(0,N.d4)(g.kV))&&void 0!==t?t:"";return(0,F.jsx)(F.Fragment,{children:(0,F.jsx)(L.l,{open:e.visible,hasCloseButton:!0,onClose:e.handleCancel,children:(0,F.jsx)(m.yZ,{headerProps:{title:"Authentication"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(){var t=(0,P.A)(I().mark((function t(n){var r,a,o,s;return I().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i(void 0),r=n.getState().values,a=r.password,o=r.sha256_password,s=O(u,d,(0,B.m)()),t.abrupt("return",s(o||a).then((function(t){e.handleConfirm(t)})).catch(i));case 4:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),fields:[{name:"error-block",type:"block",extras:{children:(0,B.m)()?(0,F.jsx)(l.F,{message:"To access tokens management, you need enter your password"}):(0,F.jsx)(l.F,{message:(0,F.jsxs)("span",{children:[(0,F.jsx)(H.N,{target:"_blank",href:"https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle",children:"crypto.subtle"})," ","is not available from your browser, so SHA-256 hash cannot be generated. Please generate the hash of your password by self."]})})}},{name:"password",type:"text",required:!0,caption:"Password",extras:function(){return{type:"password"}},visibilityCondition:{when:"",isActive:function(){return(0,B.m)()}}},{name:"sha256_password",type:"text",required:!0,caption:"Password Hash (SHA-256)",visibilityCondition:{when:"",isActive:function(){return!(0,B.m)()}}}].concat((0,r.A)((0,m.Y)([s]))),footerProps:{propsButtonCancel:{onClick:e.handleCancel}}})})})},U=function(){function e(){(0,_.A)(this,e),this.promise=void 0,this.resolve=function(e){},this.reject=function(e){}}return(0,M.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 Y(e){var t=e.children,n=(0,N.d4)(S.tQ),r=c.useState(!1),o=(0,a.A)(r,2),s=o[0],i=o[1],l=c.useRef(new U),u=c.useMemo((function(){return{getPassword:function(){return n?Promise.resolve(void 0):(i(!0),l.current.create())}}}),[i,n]);return(0,F.jsxs)(V.Provider,{value:u,children:[t,(0,F.jsx)($,{visible:s,handleCancel:function(){i(!1),l.current.reject(new Error("cancel password window"))},handleConfirm:function(e){i(!1),l.current.resolve(e)}})]})}function W(){var e=c.useContext(V);if(!e)throw new Error("Wrap your app into ManageTokensPasswordModalContextProvider");return e}var q=n(73032),G=n(64772),J=(0,o.A)("manage-tokens-modal-content"),K=function(e){var t=e.onClose,n=W().getPassword,o=(0,N.d4)(g.ID),s=(0,E._)(),i=(0,c.useState)(),d=(0,a.A)(i,2),f=d[0],v=d[1],w=(0,c.useState)(),x=(0,a.A)(w,2),A=x[0],b=x[1];return A?(0,F.jsxs)("div",{className:J("new-token"),children:[(0,F.jsx)("h2",{children:"Copy token value"}),(0,F.jsx)(l.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)(l.F,{message:A,layout:"horizontal",actions:(0,F.jsx)(z.A,{text:A})}),(0,F.jsx)("div",{className:J("tokens-action"),children:(0,F.jsx)(u.$,{size:"l",view:"action",onClick:function(){t()},children:"Close"})})]}):(0,F.jsx)(m.yZ,{headerProps:{title:"Generate token"},pristineSubmittable:!0,modal:!1,visible:!0,initialValues:{},onAdd:function(e){var t=e.getState().values.description;return v(void 0),n().then((function(e){return s(function(e){var t=e.description,n=e.credentials;return function(){return p.$S.issueToken(p.Vu.issueToken,{parameters:(0,h.A)({description:t},n),setup:k()})}}({description:t,credentials:{user:o,password_sha256:e}})).then((function(t){return b(t),s(y({user:o,password_sha256:e})).then((function(){})).catch((function(){}))})).catch((function(e){return v(e),Promise.reject(e)}))})).catch((function(e){throw e}))},fields:[{name:"description",type:"textarea",caption:"Description"}].concat((0,r.A)((0,m.Y)([f]))),footerProps:{propsButtonCancel:{onClick:function(){t()}}}})},Q=function(e){var t=(0,c.useState)(!1),n=(0,a.A)(t,2),r=n[0],o=n[1],s=function(){o(!1)};return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(u.$,{size:"s",onClick:function(){o(!0)},children:(0,F.jsx)(T.A,{awesome:"trash-bin"})}),(0,F.jsx)(v.A,{content:"Are you sure you want to revoke the token? This action CANNOT be undone.",onCancel:s,onConfirm:function(){e.handleClickRemoveToken(e.index),o(!1)},onOutsideClick:s,visible:r})]})},X=function(e){var t=e.onSuccessRemove,n=e.onClickGenerateTokenButton,r=e.passwordSha256,a=W().getPassword,o=(0,E._)(),s=(0,N.d4)(S.BE),l=(0,N.d4)(g.ID),d=c.useCallback((function(e){return a().then((function(n){return o(b({credentials:{user:l,password_sha256:n},token_sha256:s[e].tokenHash})).then((function(){return o(y({user:l,password_sha256:n})).finally((function(){return t()}))}))}))}),[a,l,t,s,b,o]);return c.useEffect((function(){o(y({user:l,password_sha256:r}))}),[r,a,l,o]),(0,F.jsxs)("div",{className:J("tokens"),children:[(0,F.jsx)("h2",{children:"Authentication Tokens"}),(0,F.jsx)("div",{className:J("generate-token-button"),children:(0,F.jsx)(u.$,{size:"l",view:"action",onClick:function(){return n()},children:"Generate token"})}),(0,F.jsx)("div",{className:J("tokens-table"),children:(0,F.jsx)(R.Ay,{loaded:!0,useThemeYT:!0,data:s,noItemsText:"No tokens found",rowClassName:function(){return J("table-row")},columns:[{name:"tokenPrefix",header:"Token",width:110,className:J("table-cell"),render:function(e){var t=e.value;return t?"".concat(String(t),"..."):G.A.NO_VALUE}},{name:"tokenHash",header:"Token Hash",width:110,className:J("table-cell",{name:"hash"}),render:function(e){var t=e.value;return(0,F.jsxs)(F.Fragment,{children:[f()(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:J("table-cell",{name:"description"}),render:function(e){return e.value?(0,F.jsx)(q.H,{limit:100,value:e.value}):""}},{name:"creationTime",header:"Issued At",width:160,className:J("table-cell"),render:function(e){return e.value?i()(e.value).format("DD/MM/YYYY HH:mm:ss"):""}},{name:"",width:30,className:J("table-cell"),render:function(e){var t=e.index;return(0,F.jsx)(Q,{index:t,handleClickRemoveToken:d})}}],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(e){var t,n,r,o=e.passwordSha256,s=(t=ee.tokens,n=(0,c.useState)(t),{section:(r=(0,a.A)(n,2))[0],setSection:r[1]}),i=s.section,l=s.setSection,u=(0,c.useMemo)((function(){switch(i){case ee.tokens:return(0,F.jsx)(X,{passwordSha256:o,onSuccessRemove:function(){return l(ee.tokens)},onClickGenerateTokenButton:function(){return l(ee.generate)}});case ee.generate:return(0,F.jsx)(K,{onClose:function(){return l(ee.tokens)}});default:return null}}),[i]);return(0,F.jsx)(Y,{children:(0,F.jsx)("div",{className:J("content"),children:u})})},ne=function(){var e=W().getPassword,t=(0,N.wA)(),n=c.useState(),r=(0,a.A)(n,2),o=r[0],s=r[1],i=c.useState(!1),l=(0,a.A)(i,2),u=l[0],d=l[1];return c.useEffect((function(){e().then((function(e){s(e),d(!0)})).catch((function(){t(j())}))}),[e]),u?(0,F.jsx)(te,{passwordSha256:o}):null},re=function(){return(0,F.jsx)(Y,{children:(0,F.jsx)(ne,{})})}},15801:(e,t,n)=>{n.d(t,{m:()=>l,s:()=>i});var r=n(13322),a=n(28407),o=n(70232),s=n.n(o);function i(e){return c.apply(this,arguments)}function c(){return(c=(0,a.A)(s().mark((function e(t){var n;return s().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,r.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=function(){var e;return Boolean(null===(e=crypto)||void 0===e||null===(e=e.subtle)||void 0===e?void 0:e.digest)}},44693:(e,t,n)=>{n.d(t,{F:()=>E});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"),E=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(E.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(E.Title,{text:e.title}):e.title,f)),Array.isArray(e.actions)?r.createElement(E.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"})})))))};E.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}))},E.Title=({text:e,className:t})=>r.createElement(k.E,{variant:"subheader-2",className:m("title",t)},e),E.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)},E.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.734b8023.chunk.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"js/manage-tokens.6ee1a15f.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/containers/ManageTokens/ManageTokensPasswordModal/password-strategies.ts","webpack://@ytsaurus/ui/./src/ui/containers/ManageTokens/ManageTokensPasswordModal/ManageTokensPasswordModal.tsx","webpack://@ytsaurus/ui/./src/ui/containers/ManageTokens/ManageTokensModalContent/ManageTokensModalContent.tsx","webpack://@ytsaurus/ui/./src/ui/utils/sha256.ts","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, Subject} 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 added: Subject[];\n removed: Subject[];\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","import axios from 'axios';\nimport {sha256} from '../../../utils/sha256';\n\ntype PasswordStrategy = (password: string) => Promise<string>;\n\nconst regularPasswordStrategy = (username: string, ytAuthCluster: string) => {\n return async (password: string): Promise<string> => {\n const hashedPassword = await sha256(password);\n await axios.post(`/api/yt/${ytAuthCluster}/login`, {\n username,\n password,\n });\n\n return hashedPassword;\n };\n};\n\nconst sha256PasswordStrategy = () => {\n return async (sha256Password: string): Promise<string> => {\n return sha256Password;\n };\n};\n\nexport function createPasswordStrategy(\n username: string,\n ytAuthCluster: string,\n isSha256Mode: boolean,\n): PasswordStrategy {\n return isSha256Mode\n ? regularPasswordStrategy(username, ytAuthCluster)\n : sha256PasswordStrategy();\n}\n","import * as React from 'react';\nimport {useSelector} from 'react-redux';\nimport {Alert, Dialog, Link} from '@gravity-ui/uikit';\nimport {isCryptoSubtleAvailable} from '../../../utils/sha256';\nimport {createPasswordStrategy} from './password-strategies';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {getCurrentUserName, getSettingsCluster} from '../../../store/selectors/global';\nimport {YTError} from '../../../../@types/types';\nimport {isManageTokensInOAuthMode} from '../../../store/selectors/manage-tokens';\n\ninterface ManageTokensPasswordModalContextValue {\n getPassword: () => Promise<string | undefined>;\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 sha256_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 const {password, sha256_password} = data.getState().values;\n\n const strategy = createPasswordStrategy(\n username,\n ytAuthCluster,\n isCryptoSubtleAvailable(),\n );\n\n return strategy(sha256_password || password)\n .then((hashedPassword) => {\n props.handleConfirm(hashedPassword);\n })\n .catch(setError);\n }}\n fields={[\n {\n name: 'error-block',\n type: 'block',\n extras: {\n children: isCryptoSubtleAvailable() ? (\n <Alert message=\"To access tokens management, you need enter your password\" />\n ) : (\n <Alert\n message={\n <span>\n <Link\n target=\"_blank\"\n href=\"https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle\"\n >\n crypto.subtle\n </Link>{' '}\n is not available from your browser, so SHA-256 hash\n cannot be generated. Please generate the hash of\n your password by self.\n </span>\n }\n />\n ),\n },\n },\n {\n name: 'password',\n type: 'text',\n required: true,\n caption: 'Password',\n extras: () => ({type: 'password'}),\n visibilityCondition: {\n when: '',\n isActive: () => isCryptoSubtleAvailable(),\n },\n },\n {\n name: 'sha256_password',\n type: 'text',\n required: true,\n caption: 'Password Hash (SHA-256)',\n visibilityCondition: {\n when: '',\n isActive: () => !isCryptoSubtleAvailable(),\n },\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 isOAuth = useSelector(isManageTokensInOAuthMode);\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 if (isOAuth) {\n return Promise.resolve(undefined);\n }\n\n setVisible(true);\n\n return p.current.create();\n },\n };\n }, [setVisible, isOAuth]);\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 {useDispatch, 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 {\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 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 passwordSha256?: string;\n}> = ({onSuccessRemove, onClickGenerateTokenButton, passwordSha256}) => {\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 React.useEffect(() => {\n dispatch(\n manageTokensGetList({\n user,\n password_sha256: passwordSha256,\n }),\n );\n }, [passwordSha256, getPassword, user, dispatch]);\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 = (defaultState: ViewSection) => {\n const [section, setSection] = useState<ViewSection>(defaultState);\n\n return {section, setSection};\n};\n\nexport const ManageTokensModalSections: React.FC<{passwordSha256?: string}> = ({\n passwordSha256,\n}) => {\n const {section, setSection} = useViewSectionState(ViewSection.tokens);\n\n const content = useMemo(() => {\n switch (section) {\n case ViewSection.tokens:\n return (\n <AuthenticationTokensSection\n passwordSha256={passwordSha256}\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\nconst ManageTokenPasswordGuard = () => {\n const {getPassword} = useManageTokensPasswordModalContext();\n const dispatch = useDispatch();\n const [passwordSha256, setPassword] = React.useState<string | undefined>();\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n getPassword()\n .then((passwordSha256) => {\n setPassword(passwordSha256);\n setOpen(true);\n })\n .catch(() => {\n dispatch(closeManageTokensModal());\n });\n }, [getPassword]);\n\n if (!open) {\n return null;\n }\n\n return <ManageTokensModalSections passwordSha256={passwordSha256} />;\n};\n\nexport const ManageTokensModalContent = () => {\n return (\n <ManageTokensPasswordModalContextProvider>\n <ManageTokenPasswordGuard />\n </ManageTokensPasswordModalContextProvider>\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\nexport const isCryptoSubtleAvailable = () => {\n return Boolean(crypto?.subtle?.digest);\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","createPasswordStrategy","username","ytAuthCluster","isSha256Mode","password","hashedPassword","sha256","axios","post","_x","apply","regularPasswordStrategy","sha256Password","_x2","ManageTokensPasswordModalContext","PasswordModal","_useSelector","setError","useSelector","getCurrentUserName","getSettingsCluster","_Fragment","Dialog","open","hasCloseButton","onClose","handleCancel","headerProps","pristineSubmittable","modal","initialValues","onAdd","_data$getState$values","sha256_password","strategy","getState","values","isCryptoSubtleAvailable","handleConfirm","fields","Alert","message","Link","target","href","required","caption","visibilityCondition","when","isActive","footerProps","propsButtonCancel","PromiseWaiter","_classCallCheck","promise","resolve","_d","reject","_e","_createClass","key","_this","this","Promise","d","e","ManageTokensPasswordModalContextProvider","isOAuth","isManageTokensInOAuthMode","_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","password_sha256","manageTokensCreateToken","RevokeToken","_useState5","_useState6","Icon","awesome","Modal","content","onCancel","onConfirm","handleClickRemoveToken","onOutsideClick","AuthenticationTokensSection","onSuccessRemove","onClickGenerateTokenButton","passwordSha256","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","ManageTokensModalSections","defaultState","_useState7","_useState8","_useViewSectionState","section","setSection","generate","ManageTokenPasswordGuard","useDispatch","setPassword","setOpen","ManageTokensModalContent","_sha","str","buf","crypto","subtle","digest","TextEncoder","encode","Uint8Array","x","toString","join","_crypto","Boolean","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","defaultTheme","defaultView","handleClick","onKeyDown","useActionHandlers","Box","clickable","tabIndex","toggleReducer","state","nextValue","initialValue","useReducer"],"sourceRoot":""}
|
1
|
+
{"version":3,"file":"js/manage-tokens.734b8023.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/containers/ManageTokens/ManageTokensPasswordModal/password-strategies.ts","webpack://@ytsaurus/ui/./src/ui/containers/ManageTokens/ManageTokensPasswordModal/ManageTokensPasswordModal.tsx","webpack://@ytsaurus/ui/./src/ui/containers/ManageTokens/ManageTokensModalContent/ManageTokensModalContent.tsx","webpack://@ytsaurus/ui/./src/ui/utils/sha256.ts","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, Subject} 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 added: Subject[];\n removed: Subject[];\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","import axios from 'axios';\nimport {sha256} from '../../../utils/sha256';\n\ntype PasswordStrategy = (password: string) => Promise<string>;\n\nconst regularPasswordStrategy = (username: string, ytAuthCluster: string) => {\n return async (password: string): Promise<string> => {\n const hashedPassword = await sha256(password);\n await axios.post(`/api/yt/${ytAuthCluster}/login`, {\n username,\n password,\n });\n\n return hashedPassword;\n };\n};\n\nconst sha256PasswordStrategy = () => {\n return async (sha256Password: string): Promise<string> => {\n return sha256Password;\n };\n};\n\nexport function createPasswordStrategy(\n username: string,\n ytAuthCluster: string,\n isSha256Mode: boolean,\n): PasswordStrategy {\n return isSha256Mode\n ? regularPasswordStrategy(username, ytAuthCluster)\n : sha256PasswordStrategy();\n}\n","import * as React from 'react';\nimport {useSelector} from 'react-redux';\nimport {Alert, Dialog, Link} from '@gravity-ui/uikit';\nimport {isCryptoSubtleAvailable} from '../../../utils/sha256';\nimport {createPasswordStrategy} from './password-strategies';\nimport {YTDFDialog, makeErrorFields} from '../../../components/Dialog';\nimport {getCurrentUserName, getSettingsCluster} from '../../../store/selectors/global';\nimport {YTError} from '../../../../@types/types';\nimport {isManageTokensInOAuthMode} from '../../../store/selectors/manage-tokens';\n\ninterface ManageTokensPasswordModalContextValue {\n getPassword: () => Promise<string | undefined>;\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 sha256_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 const {password, sha256_password} = data.getState().values;\n\n const strategy = createPasswordStrategy(\n username,\n ytAuthCluster,\n isCryptoSubtleAvailable(),\n );\n\n return strategy(sha256_password || password)\n .then((hashedPassword) => {\n props.handleConfirm(hashedPassword);\n })\n .catch(setError);\n }}\n fields={[\n {\n name: 'error-block',\n type: 'block',\n extras: {\n children: isCryptoSubtleAvailable() ? (\n <Alert message=\"To access tokens management, you need enter your password\" />\n ) : (\n <Alert\n message={\n <span>\n <Link\n target=\"_blank\"\n href=\"https://developer.mozilla.org/en-US/docs/Web/API/Crypto/subtle\"\n >\n crypto.subtle\n </Link>{' '}\n is not available from your browser, so SHA-256 hash\n cannot be generated. Please generate the hash of\n your password by self.\n </span>\n }\n />\n ),\n },\n },\n {\n name: 'password',\n type: 'text',\n required: true,\n caption: 'Password',\n extras: () => ({type: 'password'}),\n visibilityCondition: {\n when: '',\n isActive: () => isCryptoSubtleAvailable(),\n },\n },\n {\n name: 'sha256_password',\n type: 'text',\n required: true,\n caption: 'Password Hash (SHA-256)',\n visibilityCondition: {\n when: '',\n isActive: () => !isCryptoSubtleAvailable(),\n },\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 isOAuth = useSelector(isManageTokensInOAuthMode);\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 if (isOAuth) {\n return Promise.resolve(undefined);\n }\n\n setVisible(true);\n\n return p.current.create();\n },\n };\n }, [setVisible, isOAuth]);\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 {useDispatch, 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 {\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 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 passwordSha256?: string;\n}> = ({onSuccessRemove, onClickGenerateTokenButton, passwordSha256}) => {\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 React.useEffect(() => {\n dispatch(\n manageTokensGetList({\n user,\n password_sha256: passwordSha256,\n }),\n );\n }, [passwordSha256, getPassword, user, dispatch]);\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 = (defaultState: ViewSection) => {\n const [section, setSection] = useState<ViewSection>(defaultState);\n\n return {section, setSection};\n};\n\nexport const ManageTokensModalSections: React.FC<{passwordSha256?: string}> = ({\n passwordSha256,\n}) => {\n const {section, setSection} = useViewSectionState(ViewSection.tokens);\n\n const content = useMemo(() => {\n switch (section) {\n case ViewSection.tokens:\n return (\n <AuthenticationTokensSection\n passwordSha256={passwordSha256}\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\nconst ManageTokenPasswordGuard = () => {\n const {getPassword} = useManageTokensPasswordModalContext();\n const dispatch = useDispatch();\n const [passwordSha256, setPassword] = React.useState<string | undefined>();\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n getPassword()\n .then((passwordSha256) => {\n setPassword(passwordSha256);\n setOpen(true);\n })\n .catch(() => {\n dispatch(closeManageTokensModal());\n });\n }, [getPassword]);\n\n if (!open) {\n return null;\n }\n\n return <ManageTokensModalSections passwordSha256={passwordSha256} />;\n};\n\nexport const ManageTokensModalContent = () => {\n return (\n <ManageTokensPasswordModalContextProvider>\n <ManageTokenPasswordGuard />\n </ManageTokensPasswordModalContextProvider>\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\nexport const isCryptoSubtleAvailable = () => {\n return Boolean(crypto?.subtle?.digest);\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","createPasswordStrategy","username","ytAuthCluster","isSha256Mode","password","hashedPassword","sha256","axios","post","_x","apply","regularPasswordStrategy","sha256Password","_x2","ManageTokensPasswordModalContext","PasswordModal","_useSelector","setError","useSelector","getCurrentUserName","getSettingsCluster","_Fragment","Dialog","open","hasCloseButton","onClose","handleCancel","headerProps","pristineSubmittable","modal","initialValues","onAdd","_data$getState$values","sha256_password","strategy","getState","values","isCryptoSubtleAvailable","handleConfirm","fields","Alert","message","Link","target","href","required","caption","visibilityCondition","when","isActive","footerProps","propsButtonCancel","PromiseWaiter","_classCallCheck","promise","resolve","_d","reject","_e","_createClass","key","_this","this","Promise","d","e","ManageTokensPasswordModalContextProvider","isOAuth","isManageTokensInOAuthMode","_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","password_sha256","manageTokensCreateToken","RevokeToken","_useState5","_useState6","Icon","awesome","Modal","content","onCancel","onConfirm","handleClickRemoveToken","onOutsideClick","AuthenticationTokensSection","onSuccessRemove","onClickGenerateTokenButton","passwordSha256","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","ManageTokensModalSections","defaultState","_useState7","_useState8","_useViewSectionState","section","setSection","generate","ManageTokenPasswordGuard","useDispatch","setPassword","setOpen","ManageTokensModalContent","_sha","str","buf","crypto","subtle","digest","TextEncoder","encode","Uint8Array","x","toString","join","_crypto","Boolean","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","defaultTheme","defaultView","handleClick","onKeyDown","useActionHandlers","Box","clickable","tabIndex","toggleReducer","state","nextValue","initialValue","useReducer"],"sourceRoot":""}
|