diff --git a/go.mod b/go.mod index 6f0a27797..e76ac68db 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/minio/console -go 1.19 +go 1.20 require ( github.com/blang/semver/v4 v4.0.0 diff --git a/portal-ui/build/asset-manifest.json b/portal-ui/build/asset-manifest.json index b762738ff..27521cd27 100644 --- a/portal-ui/build/asset-manifest.json +++ b/portal-ui/build/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { "main.css": "./static/css/main.57e739f5.css", - "main.js": "./static/js/main.bc62b390.js", + "main.js": "./static/js/main.078385cd.js", "static/js/1260.a025e586.chunk.js": "./static/js/1260.a025e586.chunk.js", "static/js/6914.8835970e.chunk.js": "./static/js/6914.8835970e.chunk.js", "static/js/9121.4999947f.chunk.js": "./static/js/9121.4999947f.chunk.js", @@ -24,8 +24,8 @@ "static/js/701.ab3ceba2.chunk.js": "./static/js/701.ab3ceba2.chunk.js", "static/js/7821.5a87cfb0.chunk.js": "./static/js/7821.5a87cfb0.chunk.js", "static/css/284.3279acb8.chunk.css": "./static/css/284.3279acb8.chunk.css", - "static/js/284.471411fa.chunk.js": "./static/js/284.471411fa.chunk.js", - "static/js/8388.a2d655e1.chunk.js": "./static/js/8388.a2d655e1.chunk.js", + "static/js/284.f9dbc9d8.chunk.js": "./static/js/284.f9dbc9d8.chunk.js", + "static/js/8388.fd34271e.chunk.js": "./static/js/8388.fd34271e.chunk.js", "static/css/6593.3279acb8.chunk.css": "./static/css/6593.3279acb8.chunk.css", "static/js/6593.f09d945f.chunk.js": "./static/js/6593.f09d945f.chunk.js", "static/css/2433.3279acb8.chunk.css": "./static/css/2433.3279acb8.chunk.css", @@ -38,13 +38,13 @@ "static/js/5351.41f5c7df.chunk.js": "./static/js/5351.41f5c7df.chunk.js", "static/js/6491.83aa26f7.chunk.js": "./static/js/6491.83aa26f7.chunk.js", "static/js/4902.f064f175.chunk.js": "./static/js/4902.f064f175.chunk.js", - "static/js/1432.94c60bd0.chunk.js": "./static/js/1432.94c60bd0.chunk.js", + "static/js/1432.6e142c2c.chunk.js": "./static/js/1432.6e142c2c.chunk.js", "static/js/3171.6750e8c7.chunk.js": "./static/js/3171.6750e8c7.chunk.js", "static/js/8360.bb4fd800.chunk.js": "./static/js/8360.bb4fd800.chunk.js", "static/js/6577.4b3c8b41.chunk.js": "./static/js/6577.4b3c8b41.chunk.js", "static/js/3875.5db2c08f.chunk.js": "./static/js/3875.5db2c08f.chunk.js", "static/js/3115.da3a98f3.chunk.js": "./static/js/3115.da3a98f3.chunk.js", - "static/js/5522.0cd4f3c8.chunk.js": "./static/js/5522.0cd4f3c8.chunk.js", + "static/js/5522.72ab8875.chunk.js": "./static/js/5522.72ab8875.chunk.js", "static/js/977.4c29a863.chunk.js": "./static/js/977.4c29a863.chunk.js", "static/js/6686.ede27280.chunk.js": "./static/js/6686.ede27280.chunk.js", "static/js/9059.155bb503.chunk.js": "./static/js/9059.155bb503.chunk.js", @@ -81,9 +81,9 @@ "static/js/51.b4820ff4.chunk.js": "./static/js/51.b4820ff4.chunk.js", "static/js/312.71a85ec1.chunk.js": "./static/js/312.71a85ec1.chunk.js", "static/js/2032.d32831e1.chunk.js": "./static/js/2032.d32831e1.chunk.js", - "static/js/4619.7a34a86e.chunk.js": "./static/js/4619.7a34a86e.chunk.js", - "static/js/8990.064fd97f.chunk.js": "./static/js/8990.064fd97f.chunk.js", - "static/js/8455.6eaf8924.chunk.js": "./static/js/8455.6eaf8924.chunk.js", + "static/js/4619.000c3900.chunk.js": "./static/js/4619.000c3900.chunk.js", + "static/js/8990.d6246293.chunk.js": "./static/js/8990.d6246293.chunk.js", + "static/js/8455.de8a804d.chunk.js": "./static/js/8455.de8a804d.chunk.js", "static/css/7233.3279acb8.chunk.css": "./static/css/7233.3279acb8.chunk.css", "static/js/7233.38b9bfcf.chunk.js": "./static/js/7233.38b9bfcf.chunk.js", "static/js/1604.8a9dcedd.chunk.js": "./static/js/1604.8a9dcedd.chunk.js", @@ -117,7 +117,7 @@ "static/js/1803.10c741c8.chunk.js": "./static/js/1803.10c741c8.chunk.js", "static/js/6662.34c547c9.chunk.js": "./static/js/6662.34c547c9.chunk.js", "static/js/91.66e7e796.chunk.js": "./static/js/91.66e7e796.chunk.js", - "static/js/6037.aa396ac9.chunk.js": "./static/js/6037.aa396ac9.chunk.js", + "static/js/6037.7ed8da7f.chunk.js": "./static/js/6037.7ed8da7f.chunk.js", "static/media/videoBG.mp4": "./static/media/videoBG.17363418b3c2246a0e27.mp4", "static/media/loginAnimationPoster.png": "./static/media/loginAnimationPoster.9aa924bfe619e71d5d29.png", "static/media/Inter-BoldItalic.woff": "./static/media/Inter-BoldItalic.b376885042f6c961a541.woff", @@ -140,7 +140,7 @@ "static/media/Inter-Regular.woff2": "./static/media/Inter-Regular.c8ba52b05a9ef10f4758.woff2", "index.html": "./index.html", "main.57e739f5.css.map": "./static/css/main.57e739f5.css.map", - "main.bc62b390.js.map": "./static/js/main.bc62b390.js.map", + "main.078385cd.js.map": "./static/js/main.078385cd.js.map", "1260.a025e586.chunk.js.map": "./static/js/1260.a025e586.chunk.js.map", "6914.8835970e.chunk.js.map": "./static/js/6914.8835970e.chunk.js.map", "9121.4999947f.chunk.js.map": "./static/js/9121.4999947f.chunk.js.map", @@ -163,8 +163,8 @@ "701.ab3ceba2.chunk.js.map": "./static/js/701.ab3ceba2.chunk.js.map", "7821.5a87cfb0.chunk.js.map": "./static/js/7821.5a87cfb0.chunk.js.map", "284.3279acb8.chunk.css.map": "./static/css/284.3279acb8.chunk.css.map", - "284.471411fa.chunk.js.map": "./static/js/284.471411fa.chunk.js.map", - "8388.a2d655e1.chunk.js.map": "./static/js/8388.a2d655e1.chunk.js.map", + "284.f9dbc9d8.chunk.js.map": "./static/js/284.f9dbc9d8.chunk.js.map", + "8388.fd34271e.chunk.js.map": "./static/js/8388.fd34271e.chunk.js.map", "6593.3279acb8.chunk.css.map": "./static/css/6593.3279acb8.chunk.css.map", "6593.f09d945f.chunk.js.map": "./static/js/6593.f09d945f.chunk.js.map", "2433.3279acb8.chunk.css.map": "./static/css/2433.3279acb8.chunk.css.map", @@ -177,13 +177,13 @@ "5351.41f5c7df.chunk.js.map": "./static/js/5351.41f5c7df.chunk.js.map", "6491.83aa26f7.chunk.js.map": "./static/js/6491.83aa26f7.chunk.js.map", "4902.f064f175.chunk.js.map": "./static/js/4902.f064f175.chunk.js.map", - "1432.94c60bd0.chunk.js.map": "./static/js/1432.94c60bd0.chunk.js.map", + "1432.6e142c2c.chunk.js.map": "./static/js/1432.6e142c2c.chunk.js.map", "3171.6750e8c7.chunk.js.map": "./static/js/3171.6750e8c7.chunk.js.map", "8360.bb4fd800.chunk.js.map": "./static/js/8360.bb4fd800.chunk.js.map", "6577.4b3c8b41.chunk.js.map": "./static/js/6577.4b3c8b41.chunk.js.map", "3875.5db2c08f.chunk.js.map": "./static/js/3875.5db2c08f.chunk.js.map", "3115.da3a98f3.chunk.js.map": "./static/js/3115.da3a98f3.chunk.js.map", - "5522.0cd4f3c8.chunk.js.map": "./static/js/5522.0cd4f3c8.chunk.js.map", + "5522.72ab8875.chunk.js.map": "./static/js/5522.72ab8875.chunk.js.map", "977.4c29a863.chunk.js.map": "./static/js/977.4c29a863.chunk.js.map", "6686.ede27280.chunk.js.map": "./static/js/6686.ede27280.chunk.js.map", "9059.155bb503.chunk.js.map": "./static/js/9059.155bb503.chunk.js.map", @@ -220,9 +220,9 @@ "51.b4820ff4.chunk.js.map": "./static/js/51.b4820ff4.chunk.js.map", "312.71a85ec1.chunk.js.map": "./static/js/312.71a85ec1.chunk.js.map", "2032.d32831e1.chunk.js.map": "./static/js/2032.d32831e1.chunk.js.map", - "4619.7a34a86e.chunk.js.map": "./static/js/4619.7a34a86e.chunk.js.map", - "8990.064fd97f.chunk.js.map": "./static/js/8990.064fd97f.chunk.js.map", - "8455.6eaf8924.chunk.js.map": "./static/js/8455.6eaf8924.chunk.js.map", + "4619.000c3900.chunk.js.map": "./static/js/4619.000c3900.chunk.js.map", + "8990.d6246293.chunk.js.map": "./static/js/8990.d6246293.chunk.js.map", + "8455.de8a804d.chunk.js.map": "./static/js/8455.de8a804d.chunk.js.map", "7233.3279acb8.chunk.css.map": "./static/css/7233.3279acb8.chunk.css.map", "7233.38b9bfcf.chunk.js.map": "./static/js/7233.38b9bfcf.chunk.js.map", "1604.8a9dcedd.chunk.js.map": "./static/js/1604.8a9dcedd.chunk.js.map", @@ -256,10 +256,10 @@ "1803.10c741c8.chunk.js.map": "./static/js/1803.10c741c8.chunk.js.map", "6662.34c547c9.chunk.js.map": "./static/js/6662.34c547c9.chunk.js.map", "91.66e7e796.chunk.js.map": "./static/js/91.66e7e796.chunk.js.map", - "6037.aa396ac9.chunk.js.map": "./static/js/6037.aa396ac9.chunk.js.map" + "6037.7ed8da7f.chunk.js.map": "./static/js/6037.7ed8da7f.chunk.js.map" }, "entrypoints": [ "static/css/main.57e739f5.css", - "static/js/main.bc62b390.js" + "static/js/main.078385cd.js" ] } \ No newline at end of file diff --git a/portal-ui/build/index.html b/portal-ui/build/index.html index 0058932bb..011d234e1 100644 --- a/portal-ui/build/index.html +++ b/portal-ui/build/index.html @@ -1 +1 @@ -MinIO Console
\ No newline at end of file +MinIO Console
\ No newline at end of file diff --git a/portal-ui/build/static/js/1432.6e142c2c.chunk.js b/portal-ui/build/static/js/1432.6e142c2c.chunk.js new file mode 100644 index 000000000..1f10f63b5 --- /dev/null +++ b/portal-ui/build/static/js/1432.6e142c2c.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1432],{14917:function(e,n,t){t(72791);var i=t(61889),o=t(72455),a=t(80184),r=(0,o.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}}));n.Z=function(e){var n=e.icon,t=e.title,o=e.subTitle,l=e.actions,s=e.className,c=r();return(0,a.jsx)(i.ZP,{container:!0,children:(0,a.jsxs)(i.ZP,{item:!0,xs:12,className:"".concat(c.stContainer," ").concat(s||""),children:[(0,a.jsxs)("div",{className:c.leftItems,children:[n?(0,a.jsx)("div",{className:c.headerBarIcon,children:n}):null,(0,a.jsxs)("div",{className:c.titleColumn,children:[(0,a.jsx)("h1",{style:{margin:0},children:t}),(0,a.jsx)("span",{className:c.headerBarSubheader,children:o})]})]}),(0,a.jsx)("div",{className:c.rightItems,children:l})]})})}},50276:function(e,n,t){var i=t(1413),o=t(29439),a=t(72791),r=t(64554),l=t(43896),s=t(83449),c=t(47283),u=t(82851),d=t(25787),f=t(13967),p=t(11135),m=t(95193),h=t(57689),x=t(80184),g={minHeight:60};n.Z=(0,d.Z)((function(e){return(0,p.Z)({tabsContainer:{display:"flex",height:"100%",width:"100%"},tabsHeaderContainer:{width:"300px",background:"#F8F8F8",borderRight:"1px solid #EAEAEA","& .MuiTabs-root":{"& .MuiTabs-indicator":{display:"none"},"& .MuiTab-root":{display:"flex",flexFlow:"row",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","& .MuiSvgIcon-root":{marginRight:8,marginBottom:0},"&.Mui-selected":{background:"#E5E5E5",fontWeight:600}},"&. MuiTabs-scroller":{display:"none"}}},tabContentContainer:{width:"100%","& .MuiTabPanel-root":{height:"100%"}},tabPanel:{height:"100%"},"@media (max-width: 900px)":{tabsContainer:{flexFlow:"column",flexDirection:"column"},tabsHeaderContainer:{width:"100%",borderBottom:" 1px solid #EAEAEA","& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root":{borderBottom:" 0px"}}}})}))((function(e){var n=e.children,t=e.classes,d=e.selectedTab,p=void 0===d?"0":d,v=e.routes,b=e.isRouteTabs,y=(0,f.Z)(),j=(0,h.TH)().pathname,Z=void 0===j?"":j,k=(0,m.Z)(y.breakpoints.down("md")),C=(0,a.useState)(p),w=(0,o.Z)(C,2),_=w[0],E=w[1],S=[],T=[];if((0,a.useEffect)((function(){if(b){var e=n.find((function(e){return e.tabConfig.to===Z}));e&&E(e.tabConfig.value)}}),[b,n,Z]),!n)return null;n.forEach((function(e){S.push(e.tabConfig),T.push(e.content)}));return(0,x.jsx)(s.ZP,{value:"".concat(_),children:(0,x.jsxs)(r.Z,{className:t.tabsContainer,children:[(0,x.jsx)(r.Z,{className:t.tabsHeaderContainer,children:(0,x.jsx)(c.Z,{onChange:function(e,n){E(n)},orientation:k?"horizontal":"vertical",variant:k?"scrollable":"standard",scrollButtons:"auto",className:t.tabList,children:S.map((function(e,n){return e?(0,x.jsx)(l.Z,(0,i.Z)((0,i.Z)({className:t.tabHeader,value:"".concat(n),style:g},e),{},{disableRipple:!0,disableTouchRipple:!0,focusRipple:!0}),"v-tab-".concat(n)):null}))})}),(0,x.jsxs)(r.Z,{className:t.tabContentContainer,children:[b?null:T.map((function(e,n){return(0,x.jsx)(u.Z,{classes:(0,i.Z)({},t.tabPanel),value:"".concat(n),children:e||null},"v-tab-p-".concat(n))})),b?(0,x.jsx)("div",{className:t.tabPanel,children:v}):null]})]})})}))},11432:function(e,n,t){t.r(n),t.d(n,{default:function(){return J}});var i=t(1413),o=t(72791),a=t(11135),r=t(25787),l=t(61889),s=t(58493),c=t(23814),u=t(75952),d=t(57689),f=t(11087),p=t(50276),m=t(74794),h=t(14917),x=t(29439),g=t(26181),v=t.n(g),b=t(64554),y=t(81207),j=t(10091),Z=t(90767),k=t(87995),C=t(81551),w=t(93433),_=t(21435),E=t(56028),S=t(244),T=t(13901),A=t(36909),I=t(40986),F=t(80184),N=function(e){var n=e.open,t=e.type,a=e.onCloseEndpoint,r=(0,o.useState)(""),l=(0,x.Z)(r,2),s=l[0],d=l[1],f=(0,o.useState)(""),p=(0,x.Z)(f,2),m=p[0],h=p[1],g=(0,o.useState)(""),v=(0,x.Z)(g,2),b=v[0],j=v[1],Z=(0,o.useState)(!1),N=(0,x.Z)(Z,2),R=N[0],q=N[1],L=(0,o.useState)(["name","endpoint"]),D=(0,x.Z)(L,2),P=D[0],M=D[1],W=(0,o.useState)(["name","endpoint","auth-token"]),B=(0,x.Z)(W,2),z=B[0],O=B[1],H=(0,C.TL)(),K=function(e){O(z.filter((function(n){return n!==e})))},U=function(e,n){P.includes(e)&&n?M(P.filter((function(n){return n!==e}))):n||P.includes(e)||M([].concat((0,w.Z)(P),[e]))},V="Add new Webhook",G=(0,F.jsx)(S.Z,{});switch(t){case"logger_webhook":V="New Logger Webhook",G=(0,F.jsx)(T.Z,{});break;case"audit_webhook":V="New Audit Webhook",G=(0,F.jsx)(A.Z,{})}return(0,F.jsx)(o.Fragment,{children:(0,F.jsxs)(E.Z,{modalOpen:n,title:V,onClose:a,titleIcon:G,children:[(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(_.Z,{id:"name",name:"name",onChange:function(e){K("name"),d(e.target.value),U("name",e.target.validity.valid)},error:P.includes("name")&&!z.includes("name")?"Invalid Name":"",label:"Name",value:s,pattern:"^(?=.*[a-zA-Z0-9]).{1,}$",required:!0})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(_.Z,{id:"endpoint",name:"endpoint",onChange:function(e){K("endpoint"),h(e.target.value),U("endpoint",e.target.validity.valid)},error:P.includes("endpoint")&&!z.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:m,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(_.Z,{id:"auth-token",name:"auth-token",onChange:function(e){K("auth-token"),j(e.target.value)},label:"Auth Token",value:b})}),R&&(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,F.jsx)(I.Z,{})}),(0,F.jsxs)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,F.jsx)(u.zxk,{id:"reset",type:"button",variant:"regular",disabled:R,onClick:a,label:"Cancel",sx:{marginRight:10}}),(0,F.jsx)(u.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:R||0!==P.length,label:"Save",onClick:function(){if(!R&&0===P.length)if(""!==s.trim())if(""!==m.trim()){q(!0);var e={key_values:[{key:"endpoint",value:m},{key:"auth_token",value:b}],arn_resource_id:s};y.Z.invoke("PUT","/api/v1/configs/".concat(t),e).then((function(e){q(!1),H((0,k.cN)(e.restart)),e.restart||H((0,k.y1)("Configuration saved successfully")),a(),H((0,k.Ie)(!0))})).catch((function(e){q(!1),H((0,k.Ih)(e))}))}else M([].concat((0,w.Z)(P),["endpoint"]));else M([].concat((0,w.Z)(P),["name"]))}})]})]})})},R=t(51691),q=t(23508),L=function(e){var n=e.modalOpen,t=e.onClose,i=e.selectedARN,a=(e.type,(0,o.useState)(!1)),r=(0,x.Z)(a,2),l=r[0],s=r[1],c=(0,C.TL)();(0,o.useEffect)((function(){l&&y.Z.invoke("POST","/api/v1/configs/".concat(i,"/reset")).then((function(){s(!1),c((0,k.cN)(!0)),c((0,k.Ie)(!0)),t()})).catch((function(e){s(!1),c((0,k.Ih)(e))}))}),[l,c,t,i]);var d=!i.includes(":"),f="Are you sure you want to delete the Configured Endpoint";return d&&(f="Are you sure you want to reset the Default"),(0,F.jsx)(q.Z,{title:d?"Reset Default Webhook":"Delete Webhook",confirmText:d?"Reset":"Delete",isOpen:n,isLoading:l,onConfirm:function(){s(!0)},titleIcon:(0,F.jsx)(u.NvT,{}),onClose:t,confirmationContent:(0,F.jsxs)(R.Z,{children:["".concat(f," "),(0,F.jsx)("strong",{children:i}),"?"]})})},D=t(81159),P=t(64163),M=function(e){var n,t,a,r=e.open,l=e.type,d=e.endpointInfo,f=e.onCloseEndpoint,p=(0,o.useState)(""),m=(0,x.Z)(p,2),h=m[0],g=m[1],v=(0,o.useState)(""),b=(0,x.Z)(v,2),j=b[0],Z=b[1],N=(0,o.useState)(""),R=(0,x.Z)(N,2),q=R[0],L=R[1],M=(0,o.useState)("on"),W=(0,x.Z)(M,2),B=W[0],z=W[1],O=(0,o.useState)(!1),H=(0,x.Z)(O,2),K=H[0],U=H[1],V=(0,o.useState)([]),G=(0,x.Z)(V,2),Y=G[0],$=G[1],Q=(0,C.TL)();(0,o.useEffect)((function(){if(d){var e=d.key_values.find((function(e){return"endpoint"===e.key})),n=d.key_values.find((function(e){return"auth_token"===e.key})),t=d.key_values.find((function(e){return"enable"===e.key})),i=[];if(e){var o=e.value;""===o?i.push("endpoint"):Z(o)}if(n){var a=n.value;""===a?i.push("auth-token"):L(a)}t&&"off"===t.value&&z(t.value),g(d.name||""),$(i)}}),[d]);var J=!h.includes(":"),X=d.key_values.filter((function(e){return!!e.env_override})),ee=(0,s.F_)(X),ne="Edit Webhook",te=(0,F.jsx)(S.Z,{});switch(l){case"logger_webhook":ne="Edit ".concat(J?" the Default ":"","Logger Webhook"),te=(0,F.jsx)(T.Z,{});break;case"audit_webhook":ne="Edit ".concat(J?" the Default ":"","Audit Webhook"),te=(0,F.jsx)(A.Z,{})}return X.length>0&&(ne="View env variable Webhook"),(0,F.jsx)(o.Fragment,{children:(0,F.jsx)(E.Z,{modalOpen:r,title:"".concat(ne).concat(J?"":" - ".concat(h)),onClose:f,titleIcon:te,children:X.length>0?(0,F.jsxs)(o.Fragment,{children:[(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(P.Z,{label:"Enabled",content:(null===(n=ee.enable)||void 0===n?void 0:n.value)||"-",actionButton:(0,F.jsx)(u.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,F.jsx)(u.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.enable.overrideEnv," environment variable"):"",placement:"left",children:(0,F.jsx)(u.zD0,{style:{width:20}})})})})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(P.Z,{label:"Endpoint",content:(null===(t=ee.endpoint)||void 0===t?void 0:t.value)||"-",actionButton:(0,F.jsx)(u.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,F.jsx)(u.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.endpoint.overrideEnv," environment variable"):"",placement:"left",children:(0,F.jsx)(u.zD0,{style:{width:20}})})})})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(P.Z,{label:"Auth Token",content:(null===(a=ee.auth_token)||void 0===a?void 0:a.value)||"-",actionButton:(0,F.jsx)(u.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,F.jsx)(u.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.auth_token.overrideEnv," environment variable"):"",placement:"left",children:(0,F.jsx)(u.zD0,{style:{width:20}})})})})})]}):(0,F.jsxs)(o.Fragment,{children:[(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(D.Z,{onChange:function(e){var n=e.target.checked?"on":"off";z(n)},id:"endpoint_enabled",name:"endpoint_enabled",label:"Enabled",value:"switch_on",checked:"on"===B})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(_.Z,{id:"endpoint",name:"endpoint",onChange:function(e){Z(e.target.value),function(e,n){Y.includes(e)&&n?$(Y.filter((function(n){return n!==e}))):n||Y.includes(e)||$([].concat((0,w.Z)(Y),[e]))}("endpoint",e.target.validity.valid)},error:Y.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:j,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,F.jsx)(_.Z,{id:"auth-token",name:"auth-token",onChange:function(e){L(e.target.value)},label:"Auth Token",value:q})}),K&&(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,F.jsx)(I.Z,{})}),(0,F.jsxs)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,F.jsx)(u.zxk,{id:"reset",type:"button",variant:"regular",disabled:K,onClick:f,label:"Cancel",sx:{marginRight:10}}),(0,F.jsx)(u.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:K||0!==Y.length,label:"Update",onClick:function(){if(!K&&0===Y.length)if(j&&""!==j.trim()){U(!0);var e={key_values:[{key:"endpoint",value:j},{key:"auth_token",value:q},{key:"enable",value:B}]};y.Z.invoke("PUT","/api/v1/configs/".concat(h),e).then((function(e){U(!1),Q((0,k.cN)(e.restart)),e.restart||Q((0,k.y1)("Configuration saved successfully")),f(),Q((0,k.Ie)(!0))})).catch((function(e){U(!1),Q((0,k.Ih)(e))}))}else $([].concat((0,w.Z)(Y),["endpoint"]))}})]})]})})})},W=function(e){e.setResetConfigurationOpen;var n=e.WebhookSettingslist,t=e.type,i=(0,o.useState)(!1),a=(0,x.Z)(i,2),r=a[0],l=a[1],s=(0,o.useState)(!1),c=(0,x.Z)(s,2),d=c[0],f=c[1],p=(0,o.useState)(!1),m=(0,x.Z)(p,2),h=m[0],g=m[1],v=(0,o.useState)(""),b=(0,x.Z)(v,2),y=b[0],j=b[1],Z=(0,o.useState)(null),k=(0,x.Z)(Z,2),C=k[0],w=k[1],_=[{type:"view",onClick:function(e){e.name&&(g(!0),w(e))}},{type:"delete",onClick:function(e){e.name&&(f(!0),j(e.name))},disableButtonFunction:function(e){var t=n.find((function(n){return n.name===e}));return!!t&&t.key_values.filter((function(e){return!!e.env_override})).length>0}}];return(0,F.jsxs)(u.rjZ,{container:!0,children:[r&&(0,F.jsx)(N,{open:r,type:t,onCloseEndpoint:function(){l(!1)}}),d&&(0,F.jsx)(L,{modalOpen:d,onClose:function(){f(!1),j("")},selectedARN:y,type:t}),h&&C&&(0,F.jsx)(M,{open:h,type:t,endpointInfo:C,onCloseEndpoint:function(){g(!1),w(null)}}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,F.jsx)(u.zxk,{id:"newWebhook",variant:"callAction",onClick:function(){l(!0)},children:"New Endpoint"})}),(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:{padding:"0 10px 10px"},children:(0,F.jsxs)(o.Fragment,{children:[(0,F.jsx)("h3",{children:"Currently Configured Endpoints"}),(0,F.jsx)(u.wQF,{columns:[{label:"Status",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"enable"===e.key}));if(null!==n&&void 0!==n&&n.env_override){var t=null!==n&&void 0!==n&&n.env_override.value&&"on"!==(null===n||void 0===n?void 0:n.env_override.value)&&null!==n&&void 0!==n&&n.env_override.value?"Disabled":"Enabled";return(0,F.jsxs)(u.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,F.jsx)(u.zD0,{style:{fill:"#052F51",width:"14px"}}),t?"Enabled":"Disabled"]})}return n&&"on"!==n.value&&n.value?(0,F.jsxs)(u.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,F.jsx)(u.qwj,{style:{fill:"#C83B51",width:14,height:14}}),"Disabled"]}):(0,F.jsxs)(u.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,F.jsx)(u.Yp9,{style:{fill:"#4CCB92",width:14,height:14}}),"Enabled"]})},width:50},{label:"Name",elementKey:"name"},{label:"Endpoint",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"endpoint"===e.key}));return n?n.env_override?n.env_override.value:n.value:""}}],itemActions:_,idField:"name",isLoading:!1,records:n,entityName:"endpoints",customPaperHeight:"calc(100vh - 750px)"})]})})]})},B=t(78687),z=(0,r.Z)((function(e){return(0,a.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},c.YI),c.Je),{},{settingsFormContainer:{display:"grid",gridTemplateColumns:"1fr",gridGap:"10px"}}))}))((function(e){var n=e.selectedConfiguration,t=e.classes,i=e.className,a=void 0===i?"":i,r=(0,C.TL)(),c=(0,d.s0)(),f=(0,d.TH)().pathname,p=void 0===f?"":f,m=p.substring(p.lastIndexOf("/")+1);m="settings"===m?"region":m;var h=(0,o.useState)([]),g=(0,x.Z)(h,2),w=g[0],_=g[1],E=(0,o.useState)(!1),S=(0,x.Z)(E,2),T=S[0],A=S[1],I=(0,o.useState)([]),N=(0,x.Z)(I,2),R=N[0],q=N[1],L=(0,o.useState)([]),D=(0,x.Z)(L,2),P=D[0],M=D[1],z=(0,o.useState)(!1),O=(0,x.Z)(z,2),H=O[0],K=O[1],U=(0,o.useState)({}),V=(0,x.Z)(U,2),G=V[0],Y=V[1],$=(0,B.v9)((function(e){return e.system.loadingConfigurations}));(0,o.useEffect)((function(){r((0,k.Ie)(!0))}),[m,r]),(0,o.useEffect)((function(){if($){var e=v()(n,"configuration_id",!1);if(e)return void y.Z.invoke("GET","/api/v1/configs/".concat(e)).then((function(n){M(n);var t=v()(n[0],"key_values",[]),i=s.DP[e].map((function(e){var n=t.find((function(n){return n.key===e.name})),i=(null===n||void 0===n?void 0:n.value)||"";return{key:e.name,value:e.customValueProcess?e.customValueProcess(i):i}}));q(i),Y((0,s.F_)(i)),r((0,k.Ie)(!1))})).catch((function(e){r((0,k.Ie)(!1)),r((0,k.Ih)(e))}));r((0,k.Ie)(!1))}}),[$,n,r]),(0,o.useEffect)((function(){if(T){var e={key_values:(0,s.DD)(w)};y.Z.invoke("PUT","/api/v1/configs/".concat(n.configuration_id),e).then((function(e){A(!1),r((0,k.cN)(e.restart)),r((0,k.Ie)(!0)),e.restart||r((0,k.y1)("Configuration saved successfully"))})).catch((function(e){A(!1),r((0,k.Ih)(e))}))}}),[T,r,n,w,c]);var Q=(0,o.useCallback)((function(e){_(e)}),[_]),J=function(){K(!0)};return(0,F.jsxs)(o.Fragment,{children:[H&&(0,F.jsx)(Z.Z,{configurationName:n.configuration_id,closeResetModalAndRefresh:function(e){K(!1),r((0,k.cN)(e)),e&&r((0,k.Ie)(!0))},resetOpen:H}),$?(0,F.jsx)(l.ZP,{item:!0,xs:12,sx:{textAlign:"center",paddingTop:"15px"},children:(0,F.jsx)(u.aNw,{})}):(0,F.jsx)(b.Z,{sx:{padding:"15px",height:"100%"},children:"logger_webhook"===n.configuration_id||"audit_webhook"===n.configuration_id?(0,F.jsx)(W,{WebhookSettingslist:P,setResetConfigurationOpen:J,type:n.configuration_id}):(0,F.jsx)(o.Fragment,{children:(0,F.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),A(!0)},className:a,style:{height:"100%",display:"flex",flexFlow:"column"},children:[(0,F.jsx)(l.ZP,{item:!0,xs:12,className:t.settingsFormContainer,children:(0,F.jsx)(j.default,{fields:s.DP[n.configuration_id],onChange:Q,defaultVals:R,overrideEnv:G})}),(0,F.jsxs)(l.ZP,{item:!0,xs:12,sx:{paddingTop:"15px ",textAlign:"right",maxHeight:"60px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:[(0,F.jsx)(u.zxk,{id:"restore-defaults",variant:"secondary",onClick:J,label:"Restore Defaults"}),"\xa0 \xa0",(0,F.jsx)(u.zxk,{id:"save",type:"submit",variant:"callAction",disabled:T,label:"Save"})]})]})})})]})})),O=function(){var e=(0,d.TH)().pathname,n=void 0===e?"":e,t=n.substring(n.lastIndexOf("/")+1),i=s.bx.find((function(e){return e.configuration_id===t})),o="".concat(t);return(0,F.jsx)(u.rjZ,{item:!0,xs:12,sx:{height:"100%","& .identity_ldap, .api":{"& label":{minWidth:220,marginRight:0}}},children:i&&(0,F.jsx)(z,{className:"".concat(o),selectedConfiguration:i})})},H=t(56087),K=t(47974),U=t(9505),V=t(45248),G=t(99779),Y=t(27454),$=function(){var e=(0,B.I0)(),n=(0,U.Z)((function(e){(0,V.zZ)(new Blob([window.atob(e.value)]),"minio-server-config-".concat(G.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),".conf"))}),(function(n){e((0,k.Ih)(n))})),t=(0,x.Z)(n,2),i=t[0],o=t[1];return(0,F.jsx)(Y.Z,{tooltip:"Warning!. The resulting file would contain server configuration information in plain text.",children:(0,F.jsx)(u.zxk,{id:"export-config",onClick:function(){o("GET","api/v1/configs/export")},icon:(0,F.jsx)(u.rG2,{}),label:"Export",variant:"regular",disabled:i})})},Q=function(){var e=(0,d.s0)(),n=(0,B.I0)(),t=(0,B.v9)((function(e){return e.system.serverNeedsRestart})),i=(0,o.useState)(void 0),a=(0,x.Z)(i,2),r=a[0],l=a[1],s=(0,o.useRef)(null),c=(0,U.Z)((function(e){n((0,k.cN)(!0)),l(!0)}),(function(e){n((0,k.Ih)(e))})),f=(0,x.Z)(c,2),p=f[0],m=f[1];(0,o.useEffect)((function(){!t&&r&&e(0)}),[t,r,e]);return(0,F.jsxs)(o.Fragment,{children:[(0,F.jsx)("input",{type:"file",onChange:function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var n=(0,x.Z)(e.target.files,1)[0],t=new FormData,i=new Blob([n],{type:n.type});t.append("file",i,n.name),m("POST","api/v1/configs/import",t),e.target.value=""}},style:{display:"none"},ref:s}),(0,F.jsx)(Y.Z,{tooltip:"The file must be valid and should have valid config values",children:(0,F.jsx)(u.zxk,{id:"import-config",onClick:function(){s&&s.current&&s.current.click()},icon:(0,F.jsx)(u._8t,{}),label:"Import",variant:"regular",disabled:p})})]})},J=(0,r.Z)((function(e){return(0,a.Z)((0,i.Z)((0,i.Z)((0,i.Z)({settingsOptionsContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap",border:"#E5E5E5 1px solid",borderRadius:2,backgroundColor:"#fff"}},c.qg),c.OR),c.Bz))}))((function(e){var n=e.classes,t=(0,d.TH)().pathname,i=void 0===t?"":t,a=i.substring(i.lastIndexOf("/")+1);return a="settings"===a?"region":a,(0,F.jsxs)(o.Fragment,{children:[(0,F.jsx)(K.Z,{label:"Settings"}),(0,F.jsxs)(m.Z,{children:[(0,F.jsx)(l.ZP,{item:!0,xs:12,children:(0,F.jsxs)("div",{id:"settings-container",className:n.settingsOptionsContainer,children:[(0,F.jsx)(h.Z,{icon:(0,F.jsx)(u.ewm,{}),title:"MinIO Configuration:",actions:(0,F.jsxs)(b.Z,{sx:{display:"flex",gap:2},children:[(0,F.jsx)(Q,{}),(0,F.jsx)($,{})]})}),(0,F.jsx)(p.Z,{selectedTab:a,isRouteTabs:!0,routes:(0,F.jsxs)(d.Z5,{children:[s.bx.map((function(e){return(0,F.jsx)(d.AW,{path:"".concat(e.configuration_id),element:(0,F.jsx)(O,{})},"configItem-".concat(e.configuration_label))})),(0,F.jsx)(d.AW,{path:"/",element:(0,F.jsx)(d.Fg,{to:"".concat(H.gA.SETTINGS,"/region")})})]}),children:s.bx.map((function(e){var n,t=e.configuration_id;return{tabConfig:{label:e.configuration_label,value:t,icon:e.icon,component:f.rU,to:(n=t,"".concat(H.gA.SETTINGS,"/").concat(n))}}}))})]})}),(0,F.jsx)(l.ZP,{item:!0,xs:12,sx:{paddingTop:"15px"},children:(0,F.jsx)(u.KfX,{title:"Learn more about Configurations",iconComponent:(0,F.jsx)(u.ewm,{}),help:(0,F.jsxs)(o.Fragment,{children:["MinIO supports a variety of configurations ranging from encryption, compression, region, notifications, etc.",(0,F.jsx)("br",{}),(0,F.jsx)("br",{}),"You can learn more at our"," ",(0,F.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con#id4",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})]})}))},58493:function(e,n,t){t.d(n,{DD:function(){return v},DP:function(){return g},F_:function(){return y},_0:function(){return b},bx:function(){return x}});var i=t(4942),o=t(1413),a=t(93433),r=(t(72791),t(87569)),l=t(61809),s=t(31292),c=t(98095),u=t(67055),d=t(21141),f=t(36909),p=t(13901),m=t(75952),h=t(80184),x=[{icon:(0,h.jsx)(r.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,h.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,h.jsx)(s.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,h.jsx)(c.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,h.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,h.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,h.jsx)(p.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,h.jsx)(f.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,h.jsx)(m.I$E,{className:"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTab-iconWrapper css-i4bv87-MuiSvgIcon-root"}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],g={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt",".log" or ".csv", you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*","application/json" or "application/xml", you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation. eg. 2s",type:"duration",placeholder:"Enter Max Sleep duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation. eg. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379", you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client auth",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},v=function(e){return e.filter((function(e){return""!==e.value}))},b=function(e,n,t){var i=e.target,o=i.value,r=i.checked,l=(0,a.Z)(t);return r?l.push(o):l=l.filter((function(e){return e!==o})),n(l),l},y=function(e){var n={};return e.forEach((function(e){if(e.env_override){var t={value:e.env_override.value,overrideEnv:e.env_override.name};n=(0,o.Z)((0,o.Z)({},n),{},(0,i.Z)({},e.key,t))}})),n}},90767:function(e,n,t){var i=t(29439),o=t(1413),a=t(72791),r=t(40986),l=t(51691),s=t(11135),c=t(25787),u=t(23814),d=t(81207),f=t(23508),p=t(75952),m=t(87995),h=t(81551),x=t(80184);n.Z=(0,c.Z)((function(e){return(0,s.Z)((0,o.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},u.Qw))}))((function(e){var n=e.classes,t=e.configurationName,o=e.closeResetModalAndRefresh,s=e.resetOpen,c=(0,h.TL)(),u=(0,a.useState)(!1),g=(0,i.Z)(u,2),v=g[0],b=g[1];(0,a.useEffect)((function(){v&&d.Z.invoke("POST","/api/v1/configs/".concat(t,"/reset")).then((function(e){b(!1),o(!0)})).catch((function(e){b(!1),c((0,m.Ih)(e))}))}),[o,t,v,c]);return(0,x.jsx)(f.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:s,titleIcon:(0,x.jsx)(p.NvT,{}),isLoading:v,onConfirm:function(){b(!0)},onClose:function(){o(!1)},confirmationContent:(0,x.jsxs)(a.Fragment,{children:[v&&(0,x.jsx)(r.Z,{}),(0,x.jsxs)(l.Z,{children:["Are you sure you want to restore these configurations to default values?",(0,x.jsx)("br",{}),(0,x.jsx)("b",{className:n.wrapText,children:"Please note that this may cause your system to not be accessible"})]})]})})}))}}]); +//# sourceMappingURL=1432.6e142c2c.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1432.6e142c2c.chunk.js.map b/portal-ui/build/static/js/1432.6e142c2c.chunk.js.map new file mode 100644 index 000000000..585504e0a --- /dev/null +++ b/portal-ui/build/static/js/1432.6e142c2c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/1432.6e142c2c.chunk.js","mappings":"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","sources":["screens/Console/Common/ScreenTitle/ScreenTitle.tsx","screens/Console/Common/VerticalTabs/VerticalTabs.tsx","screens/Console/EventDestinations/WebhookSettings/AddEndpointModal.tsx","screens/Console/EventDestinations/WebhookSettings/DeleteWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/EditWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/WebhookSettings.tsx","screens/Console/EventDestinations/CustomForms/EditConfiguration.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationForm.tsx","screens/Console/Configurations/ConfigurationPanels/ExportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ImportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx","screens/Console/Configurations/utils.tsx","screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n

{title}

\n {subTitle}\n
\n
\n\n
{actions}
\n
\n \n );\n};\n\nexport default ScreenTitle;\n","import React, { useEffect, useState } from \"react\";\nimport { Box, Tab, TabProps } from \"@mui/material\";\nimport { TabContext, TabList, TabPanel } from \"@mui/lab\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme, useTheme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useLocation } from \"react-router-dom\";\n\nexport type TabItemProps = {\n tabConfig: TabProps | any;\n content?: JSX.Element | JSX.Element[];\n};\n\ntype VerticalTabsProps = {\n classes: any;\n children: TabItemProps[];\n selectedTab?: string;\n routes?: any;\n isRouteTabs?: boolean;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n tabsContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n },\n tabsHeaderContainer: {\n width: \"300px\",\n background: \"#F8F8F8\",\n borderRight: \"1px solid #EAEAEA\",\n \"& .MuiTabs-root\": {\n \"& .MuiTabs-indicator\": {\n display: \"none\",\n },\n \"& .MuiTab-root\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"& .MuiSvgIcon-root\": {\n marginRight: 8,\n marginBottom: 0,\n },\n \"&.Mui-selected\": {\n background: \"#E5E5E5\",\n fontWeight: 600,\n },\n },\n\n \"&. MuiTabs-scroller\": {\n display: \"none\",\n },\n },\n },\n tabContentContainer: {\n width: \"100%\",\n \"& .MuiTabPanel-root\": {\n height: \"100%\",\n },\n },\n tabPanel: {\n height: \"100%\",\n },\n /*Below md breakpoint make it horizontal and style it for scrolling tabs*/\n \"@media (max-width: 900px)\": {\n tabsContainer: {\n flexFlow: \"column\",\n flexDirection: \"column\",\n },\n tabsHeaderContainer: {\n width: \"100%\",\n borderBottom: \" 1px solid #EAEAEA\",\n \"& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root\": {\n borderBottom: \" 0px\",\n },\n },\n },\n });\n\nconst tabStripStyle = {\n minHeight: 60,\n};\n\nconst VerticalTabs = ({\n children,\n classes,\n selectedTab = \"0\",\n routes,\n isRouteTabs,\n}: VerticalTabsProps) => {\n const theme = useTheme();\n const { pathname = \"\" } = useLocation();\n\n const isSmallScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [value, setValue] = useState(selectedTab);\n\n const headerList: TabProps[] = [];\n const contentList: React.ReactNode[] = [];\n\n useEffect(() => {\n if (isRouteTabs) {\n const tabConfigElement = children.find(\n (item) => item.tabConfig.to === pathname\n );\n\n if (tabConfigElement) {\n setValue(tabConfigElement.tabConfig.value);\n }\n }\n }, [isRouteTabs, children, pathname]);\n\n if (!children) return null;\n\n children.forEach((child) => {\n headerList.push(child.tabConfig);\n contentList.push(child.content);\n });\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n };\n\n return (\n \n \n \n \n {headerList.map((item, index) => {\n if (item) {\n return (\n \n );\n }\n return null;\n })}\n \n \n\n \n {!isRouteTabs\n ? contentList.map((item, index) => {\n return (\n \n {item ? item : null}\n \n );\n })\n : null}\n {isRouteTabs ? (\n
{routes}
\n ) : null}\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(VerticalTabs);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, Grid } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport { formFieldStyles } from \"../../Common/FormComponents/common/styleLibrary\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport api from \"../../../../common/api\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { LinearProgress } from \"@mui/material\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n onCloseEndpoint: () => void;\n}\n\nconst AddEndpointModal = ({ open, type, onCloseEndpoint }: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([\n \"name\",\n \"endpoint\",\n ]);\n const [initialInputs, setInitialInputs] = useState([\n \"name\",\n \"endpoint\",\n \"auth-token\",\n ]);\n\n const dispatch = useAppDispatch();\n\n const saveWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (name.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"name\"]);\n\n return;\n }\n\n if (endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n ],\n arn_resource_id: name,\n };\n\n api\n .invoke(\"PUT\", `/api/v1/configs/${type}`, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.restart));\n if (!res.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err: ErrorResponseHandler) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const initializeInput = (name: string) => {\n setInitialInputs(initialInputs.filter((item) => item !== name));\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n let title = \"Add new Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = \"New Logger Webhook\";\n icon = ;\n break;\n case \"audit_webhook\":\n title = \"New Audit Webhook\";\n icon = ;\n break;\n }\n\n return (\n \n \n \n ) => {\n initializeInput(\"name\");\n setName(event.target.value);\n validateInput(\"name\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"name\") && !initialInputs.includes(\"name\")\n ? \"Invalid Name\"\n : \"\"\n }\n label=\"Name\"\n value={name}\n pattern={\"^(?=.*[a-zA-Z0-9]).{1,}$\"}\n required\n />\n \n \n ) => {\n initializeInput(\"endpoint\");\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\") &&\n !initialInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n \n \n ) => {\n initializeInput(\"auth-token\");\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default AddEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { DialogContentText } from \"@mui/material\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../common/api\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteWebhookEndpoint {\n modalOpen: boolean;\n onClose: () => void;\n selectedARN: string;\n type: string;\n}\n\nconst DeleteWebhookEndpoint = ({\n modalOpen,\n onClose,\n selectedARN,\n type,\n}: IDeleteWebhookEndpoint) => {\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (deleteLoading) {\n api\n .invoke(\"POST\", `/api/v1/configs/${selectedARN}/reset`)\n .then(() => {\n setDeleteLoading(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(configurationIsLoading(true));\n onClose();\n })\n .catch((err: ErrorResponseHandler) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [deleteLoading, dispatch, onClose, selectedARN]);\n\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n const defaultWH = !selectedARN.includes(\":\");\n\n let message = \"Are you sure you want to delete the Configured Endpoint\";\n\n // Main webhook, we just reset\n if (defaultWH) {\n message = \"Are you sure you want to reset the Default\";\n }\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n \n {`${message} `}\n {selectedARN}?\n \n }\n />\n );\n};\n\nexport default DeleteWebhookEndpoint;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { Button, ConsoleIcon, Grid, Tooltip } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport { formFieldStyles } from \"../../Common/FormComponents/common/styleLibrary\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport api from \"../../../../common/api\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { LinearProgress } from \"@mui/material\";\nimport { IConfigurationSys } from \"../../Configurations/types\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport PredefinedList from \"../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport { overrideFields } from \"../../Configurations/utils\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n endpointInfo: IConfigurationSys;\n onCloseEndpoint: () => void;\n}\n\nconst EditEndpointModal = ({\n open,\n type,\n endpointInfo,\n onCloseEndpoint,\n}: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [endpointState, setEndpointState] = useState(\"on\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([]);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (endpointInfo) {\n const endpointLocate = endpointInfo.key_values.find(\n (key) => key.key === \"endpoint\"\n );\n const tokenLocate = endpointInfo.key_values.find(\n (key) => key.key === \"auth_token\"\n );\n const enable = endpointInfo.key_values.find(\n (key) => key.key === \"enable\"\n );\n\n let invalidInputs: string[] = [];\n\n if (endpointLocate) {\n const endpointValue = endpointLocate.value;\n\n if (endpointValue === \"\") {\n invalidInputs.push(\"endpoint\");\n } else {\n setEndpoint(endpointValue);\n }\n }\n\n if (tokenLocate) {\n const tokenValue = tokenLocate.value;\n\n if (tokenValue === \"\") {\n invalidInputs.push(\"auth-token\");\n } else {\n setAuthToken(tokenValue);\n }\n }\n\n if (enable) {\n if (enable.value === \"off\") {\n setEndpointState(enable.value);\n }\n }\n\n setName(endpointInfo.name || \"\");\n setInvalidInput(invalidInputs);\n }\n }, [endpointInfo]);\n\n const updateWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (!endpoint || endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n {\n key: \"enable\",\n value: endpointState,\n },\n ],\n };\n\n api\n .invoke(\"PUT\", `/api/v1/configs/${name}`, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.restart));\n if (!res.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err: ErrorResponseHandler) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n const defaultWH = !name.includes(\":\");\n const hasOverride = endpointInfo.key_values.filter(\n (itm) => !!itm.env_override\n );\n\n const overrideValues = overrideFields(hasOverride);\n\n let title = \"Edit Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Logger Webhook`;\n icon = ;\n break;\n case \"audit_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Audit Webhook`;\n icon = ;\n break;\n }\n\n if (hasOverride.length > 0) {\n title = \"View env variable Webhook\";\n }\n\n return (\n \n \n {hasOverride.length > 0 ? (\n \n \n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n }\n />\n \n \n ) : (\n \n \n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setEndpointState(value);\n }}\n id={\"endpoint_enabled\"}\n name={\"endpoint_enabled\"}\n label={\"Enabled\"}\n value={\"switch_on\"}\n checked={endpointState === \"on\"}\n />\n \n \n ) => {\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n \n \n ) => {\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default EditEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { IConfigurationSys, IElementValue } from \"../../Configurations/types\";\nimport {\n Button,\n ConsoleIcon,\n DataTable,\n Grid,\n TierOfflineIcon,\n TierOnlineIcon,\n} from \"mds\";\nimport AddEndpointModal from \"./AddEndpointModal\";\nimport DeleteWebhookEndpoint from \"./DeleteWebhookEndpoint\";\nimport EditWebhookEndpoint from \"./EditWebhookEndpoint\";\n\ninterface WebhookSettingsProps {\n WebhookSettingslist: IConfigurationSys[];\n setResetConfigurationOpen: () => void;\n type: string;\n}\n\nconst WebhookSettings = ({\n setResetConfigurationOpen,\n WebhookSettingslist,\n type,\n}: WebhookSettingsProps) => {\n const [newEndpointOpen, setNewEndpointOpen] = useState(false);\n const [deleteWebhookOpen, setDeleteWebhookOpen] = useState(false);\n const [editWebhookOpen, setEditWebhookOpen] = useState(false);\n const [selectedARN, setSelectedARN] = useState(\"\");\n const [selectedEndpoint, setSelectedEndpoint] =\n useState(null);\n\n const renderEndpoint = (item: IElementValue[]) => {\n const endpointFilter = item.find((itm) => itm.key === \"endpoint\");\n\n if (endpointFilter) {\n if (endpointFilter.env_override) {\n return endpointFilter.env_override.value;\n }\n\n return endpointFilter.value;\n }\n\n return \"\";\n };\n\n const renderWebhookStatus = (item: IElementValue[]) => {\n const EnableFilter = item.find((itm) => itm.key === \"enable\");\n\n if (EnableFilter?.env_override) {\n const overrideEnabled =\n !EnableFilter?.env_override.value ||\n EnableFilter?.env_override.value === \"on\" ||\n !EnableFilter?.env_override.value\n ? \"Enabled\"\n : \"Disabled\";\n return (\n \n \n {overrideEnabled ? \"Enabled\" : \"Disabled\"}\n \n );\n }\n\n // If enable is not set, then enabled by default\n if (!EnableFilter || EnableFilter.value === \"on\" || !EnableFilter.value) {\n return (\n \n \n Enabled\n \n );\n }\n\n return (\n \n \n Disabled\n \n );\n };\n\n const onCloseDelete = () => {\n setDeleteWebhookOpen(false);\n setSelectedARN(\"\");\n };\n\n const onCloseEditWebhook = () => {\n setEditWebhookOpen(false);\n setSelectedEndpoint(null);\n };\n\n const actions = [\n {\n type: \"view\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setEditWebhookOpen(true);\n setSelectedEndpoint(item);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setDeleteWebhookOpen(true);\n setSelectedARN(item.name);\n }\n },\n disableButtonFunction: (item: string) => {\n const wHook = WebhookSettingslist.find(\n (element) => element.name === item\n );\n\n if (wHook) {\n const hasOverride = wHook.key_values.filter(\n (itm) => !!itm.env_override\n );\n\n // Has override values, we cannot delete.\n if (hasOverride.length > 0) {\n return true;\n }\n\n return false;\n }\n return false;\n },\n },\n ];\n return (\n \n {newEndpointOpen && (\n {\n setNewEndpointOpen(false);\n }}\n />\n )}\n {deleteWebhookOpen && (\n \n )}\n {editWebhookOpen && selectedEndpoint && (\n \n )}\n \n {\n setNewEndpointOpen(true);\n }}\n >\n New Endpoint\n \n \n \n \n

Currently Configured Endpoints

\n \n
\n
\n
\n );\n};\nexport default WebhookSettings;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { Button, Loader } from \"mds\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport api from \"../../../../common/api\";\nimport ConfTargetGeneric from \"../ConfTargetGeneric\";\n\nimport {\n fieldBasic,\n settingsCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n fieldsConfigurations,\n overrideFields,\n removeEmptyFields,\n} from \"../../Configurations/utils\";\nimport {\n IConfigurationElement,\n IConfigurationSys,\n IElementValue,\n IOverrideEnv,\n KVField,\n} from \"../../Configurations/types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ResetConfigurationModal from \"./ResetConfigurationModal\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport WebhookSettings from \"../WebhookSettings/WebhookSettings\";\nimport { useSelector } from \"react-redux\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...settingsCommon,\n settingsFormContainer: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gridGap: \"10px\",\n },\n });\n\ninterface IAddNotificationEndpointProps {\n selectedConfiguration: IConfigurationElement;\n classes: any;\n className?: string;\n}\n\nconst EditConfiguration = ({\n selectedConfiguration,\n classes,\n className = \"\",\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n //Local States\n const [valuesObj, setValueObj] = useState([]);\n const [saving, setSaving] = useState(false);\n const [configValues, setConfigValues] = useState([]);\n const [configSubsysList, setConfigSubsysList] = useState(\n []\n );\n const [resetConfigurationOpen, setResetConfigurationOpen] =\n useState(false);\n const [overrideEnvs, setOverrideEnvs] = useState({});\n\n const loadingConfig = useSelector(\n (state: AppState) => state.system.loadingConfigurations\n );\n\n useEffect(() => {\n dispatch(configurationIsLoading(true));\n }, [selConfigTab, dispatch]);\n\n useEffect(() => {\n if (loadingConfig) {\n const configId = get(selectedConfiguration, \"configuration_id\", false);\n\n if (configId) {\n api\n .invoke(\"GET\", `/api/v1/configs/${configId}`)\n .then((res) => {\n setConfigSubsysList(res);\n let values: IElementValue[] = get(res[0], \"key_values\", []);\n\n const fieldsConfig: KVField[] = fieldsConfigurations[configId];\n\n const keyVals = fieldsConfig.map((field) => {\n const includedValue = values.find(\n (element: IElementValue) => element.key === field.name\n );\n const customValue = includedValue?.value || \"\";\n\n return {\n key: field.name,\n value: field.customValueProcess\n ? field.customValueProcess(customValue)\n : customValue,\n };\n });\n\n setConfigValues(keyVals);\n setOverrideEnvs(overrideFields(keyVals));\n dispatch(configurationIsLoading(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(configurationIsLoading(false));\n dispatch(setErrorSnackMessage(err));\n });\n\n return;\n }\n dispatch(configurationIsLoading(false));\n }\n }, [loadingConfig, selectedConfiguration, dispatch]);\n\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesObj),\n };\n api\n .invoke(\n \"PUT\",\n `/api/v1/configs/${selectedConfiguration.configuration_id}`,\n payload\n )\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.restart));\n dispatch(configurationIsLoading(true));\n if (!res.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [saving, dispatch, selectedConfiguration, valuesObj, navigate]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueObj(newValue);\n },\n [setValueObj]\n );\n\n const continueReset = (restart: boolean) => {\n setResetConfigurationOpen(false);\n dispatch(setServerNeedsRestart(restart));\n if (restart) {\n dispatch(configurationIsLoading(true));\n }\n };\n\n const resetConfigurationMOpen = () => {\n setResetConfigurationOpen(true);\n };\n\n return (\n \n {resetConfigurationOpen && (\n \n )}\n {loadingConfig ? (\n \n \n \n ) : (\n \n {selectedConfiguration.configuration_id === \"logger_webhook\" ||\n selectedConfiguration.configuration_id === \"audit_webhook\" ? (\n \n ) : (\n \n \n \n \n \n \n \n    \n \n \n \n \n )}\n \n )}\n \n );\n};\n\nexport default withStyles(styles)(EditConfiguration);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { Grid } from \"mds\";\nimport { configurationElements } from \"../utils\";\nimport EditConfiguration from \"../../EventDestinations/CustomForms/EditConfiguration\";\n\nconst ConfigurationsList = () => {\n const { pathname = \"\" } = useLocation();\n\n const configName = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n\n const validActiveConfig = configurationElements.find(\n (element) => element.configuration_id === configName\n );\n const containerClassName = `${configName}`;\n return (\n \n {validActiveConfig && (\n \n )}\n \n );\n};\n\nexport default ConfigurationsList;\n","import React from \"react\";\nimport { Button, UploadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { performDownload } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useDispatch } from \"react-redux\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst ExportConfigButton = () => {\n const dispatch = useDispatch();\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n performDownload(\n new Blob([window.atob(res.value)]),\n `minio-server-config-${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\"\n )}.conf`\n );\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n }\n );\n\n return (\n \n {\n invokeApi(\"GET\", `api/v1/configs/export`);\n }}\n icon={}\n label={\"Export\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n );\n};\n\nexport default ExportConfigButton;\n","import React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { Button, DownloadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst ImportConfigButton = () => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const needsRestart = useSelector(\n (state: AppState) => state.system.serverNeedsRestart\n );\n\n const [refreshPage, setRefreshPage] = useState(\n undefined\n );\n const fileUpload = useRef(null);\n\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n dispatch(setServerNeedsRestart(true)); //import should refreshPage as per mc.\n setRefreshPage(true);\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n }\n );\n\n useEffect(() => {\n if (!needsRestart && refreshPage) {\n navigate(0); // refresh the page.\n }\n }, [needsRestart, refreshPage, navigate]);\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n const [fileToUpload] = e.target.files;\n\n const formData = new FormData();\n const blobFile = new Blob([fileToUpload], { type: fileToUpload.type });\n\n formData.append(\"file\", blobFile, fileToUpload.name);\n // @ts-ignore\n invokeApi(\"POST\", `api/v1/configs/import`, formData);\n\n e.target.value = \"\";\n };\n\n return (\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n }}\n icon={}\n label={\"Import\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n \n );\n};\n\nexport default ImportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { configurationElements } from \"../utils\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { HelpBox, SettingsIcon } from \"mds\";\nimport { Link, Navigate, Route, Routes, useLocation } from \"react-router-dom\";\nimport VerticalTabs from \"../../Common/VerticalTabs/VerticalTabs\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport ScreenTitle from \"../../Common/ScreenTitle/ScreenTitle\";\nimport ConfigurationForm from \"./ConfigurationForm\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ExportConfigButton from \"./ExportConfigButton\";\nimport ImportConfigButton from \"./ImportConfigButton\";\nimport { Box } from \"@mui/material\";\n\ninterface IConfigurationOptions {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n settingsOptionsContainer: {\n display: \"flex\" as const,\n flexDirection: \"row\" as const,\n justifyContent: \"flex-start\" as const,\n flexWrap: \"wrap\" as const,\n border: \"#E5E5E5 1px solid\",\n borderRadius: 2,\n backgroundColor: \"#fff\",\n },\n ...searchField,\n ...actionsTray,\n ...containerForHeader,\n });\n\nconst getRoutePath = (path: string) => {\n return `${IAM_PAGES.SETTINGS}/${path}`;\n};\n\nconst ConfigurationOptions = ({ classes }: IConfigurationOptions) => {\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n return (\n \n \n\n \n \n \n }\n title={\"MinIO Configuration:\"}\n actions={\n \n \n \n \n }\n />\n \n {configurationElements.map((element) => (\n }\n />\n ))}\n }\n />\n \n }\n >\n {configurationElements.map((element) => {\n const { configuration_id, configuration_label, icon } = element;\n return {\n tabConfig: {\n label: configuration_label,\n value: configuration_id,\n icon: icon,\n component: Link,\n to: getRoutePath(configuration_id),\n },\n };\n })}\n \n \n \n \n }\n help={\n \n MinIO supports a variety of configurations ranging from\n encryption, compression, region, notifications, etc.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(ConfigurationOptions);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\",\".log\" or \".csv\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\",\"application/json\" or \"application/xml\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation. eg. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation. eg. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip: \"Enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client auth\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[]\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...deleteDialogStyles,\n });\n\ninterface IResetConfiguration {\n classes: any;\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n classes,\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api\n .invoke(\"POST\", `/api/v1/configs/${configurationName}/reset`)\n .then((res) => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n
\n \n Please note that this may cause your system to not be accessible\n \n
\n
\n }\n />\n );\n};\n\nexport default withStyles(styles)(ResetConfigurationModal);\n"],"names":["useStyles","makeStyles","theme","headerBarIcon","marginRight","color","palette","primary","main","width","height","display","headerBarSubheader","maxWidth","stContainer","alignItems","justifyContent","padding","borderBottom","flexFlow","titleColumn","fontSize","leftItems","rightItems","marginLeft","_ref","icon","title","subTitle","actions","className","classes","_jsx","Grid","container","children","_jsxs","item","xs","concat","style","margin","tabStripStyle","minHeight","withStyles","createStyles","tabsContainer","tabsHeaderContainer","background","borderRight","marginBottom","fontWeight","tabContentContainer","tabPanel","flexDirection","_ref$selectedTab","selectedTab","routes","isRouteTabs","useTheme","_useLocation$pathname","useLocation","pathname","isSmallScreen","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","value","setValue","headerList","contentList","useEffect","tabConfigElement","find","tabConfig","to","forEach","child","push","content","TabContext","Box","TabList","onChange","event","newValue","orientation","variant","scrollButtons","tabList","map","index","Tab","_objectSpread","tabHeader","disableRipple","disableTouchRipple","focusRipple","TabPanel","open","type","onCloseEndpoint","name","setName","_useState3","_useState4","endpoint","setEndpoint","_useState5","_useState6","authToken","setAuthToken","_useState7","_useState8","saving","setSaving","_useState9","_useState10","invalidInputs","setInvalidInput","_useState11","_useState12","initialInputs","setInitialInputs","dispatch","useAppDispatch","initializeInput","filter","validateInput","valid","includes","_toConsumableArray","Webhook","CallToActionIcon","PendingActionsIcon","Fragment","ModalWrapper","modalOpen","onClose","titleIcon","sx","formFieldStyles","InputBoxWrapper","id","target","validity","error","label","pattern","required","LinearProgress","Button","disabled","onClick","length","trim","payload","key_values","key","arn_resource_id","api","then","res","setServerNeedsRestart","restart","setSnackBarMessage","configurationIsLoading","catch","err","setErrorSnackMessage","selectedARN","deleteLoading","setDeleteLoading","defaultWH","message","ConfirmDialog","confirmText","isOpen","isLoading","onConfirm","ConfirmDeleteIcon","confirmationContent","DialogContentText","_overrideValues$enabl","_overrideValues$endpo","_overrideValues$auth_","endpointInfo","endpointState","setEndpointState","endpointLocate","tokenLocate","enable","endpointValue","tokenValue","hasOverride","itm","env_override","overrideValues","overrideFields","PredefinedList","actionButton","paddingRight","Tooltip","tooltip","overrideEnv","placement","ConsoleIcon","auth_token","FormSwitchWrapper","e","checked","setResetConfigurationOpen","WebhookSettingslist","newEndpointOpen","setNewEndpointOpen","deleteWebhookOpen","setDeleteWebhookOpen","editWebhookOpen","setEditWebhookOpen","setSelectedARN","selectedEndpoint","setSelectedEndpoint","disableButtonFunction","wHook","element","AddEndpointModal","DeleteWebhookEndpoint","EditWebhookEndpoint","DataTable","columns","elementKey","renderFunction","EnableFilter","overrideEnabled","justifyItems","fill","TierOfflineIcon","TierOnlineIcon","endpointFilter","itemActions","idField","records","entityName","customPaperHeight","fieldBasic","settingsCommon","settingsFormContainer","gridTemplateColumns","gridGap","selectedConfiguration","_ref$className","navigate","useNavigate","selConfigTab","substring","lastIndexOf","valuesObj","setValueObj","configValues","setConfigValues","configSubsysList","setConfigSubsysList","resetConfigurationOpen","overrideEnvs","setOverrideEnvs","loadingConfig","useSelector","state","system","loadingConfigurations","configId","get","values","keyVals","fieldsConfigurations","field","includedValue","customValue","customValueProcess","removeEmptyFields","configuration_id","onValueChange","useCallback","resetConfigurationMOpen","ResetConfigurationModal","configurationName","closeResetModalAndRefresh","resetOpen","textAlign","paddingTop","Loader","WebhookSettings","noValidate","onSubmit","preventDefault","ConfTargetGeneric","fields","defaultVals","maxHeight","configName","validActiveConfig","configurationElements","containerClassName","minWidth","EditConfiguration","useDispatch","_useApi","useApi","performDownload","Blob","window","atob","DateTime","toFormat","_useApi2","isReqLoading","invokeApi","TooltipWrapper","UploadIcon","needsRestart","serverNeedsRestart","undefined","refreshPage","setRefreshPage","fileUpload","useRef","files","fileToUpload","formData","FormData","blobFile","append","ref","current","click","DownloadIcon","settingsOptionsContainer","flexWrap","border","borderRadius","backgroundColor","searchField","actionsTray","containerForHeader","PageHeaderWrapper","PageLayout","ScreenTitle","SettingsIcon","gap","ImportConfigButton","ExportConfigButton","VerticalTabs","Routes","Route","path","ConfigurationForm","configuration_label","Navigate","IAM_PAGES","component","Link","HelpBox","iconComponent","help","href","rel","PublicIcon","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","LogsIcon","region","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","origValue","formFields","selectSAs","setSelectedSAs","selectedSAs","targetD","elements","overrideReturn","envItem","_defineProperty","wrapText","whiteSpace","wordWrap","deleteDialogStyles","resetLoading","setResetLoading","React"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/1432.94c60bd0.chunk.js b/portal-ui/build/static/js/1432.94c60bd0.chunk.js deleted file mode 100644 index b808abcbc..000000000 --- a/portal-ui/build/static/js/1432.94c60bd0.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1432],{14917:function(e,n,t){t(72791);var i=t(61889),o=t(72455),a=t(80184),r=(0,o.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}}));n.Z=function(e){var n=e.icon,t=e.title,o=e.subTitle,l=e.actions,s=e.className,c=r();return(0,a.jsx)(i.ZP,{container:!0,children:(0,a.jsxs)(i.ZP,{item:!0,xs:12,className:"".concat(c.stContainer," ").concat(s||""),children:[(0,a.jsxs)("div",{className:c.leftItems,children:[n?(0,a.jsx)("div",{className:c.headerBarIcon,children:n}):null,(0,a.jsxs)("div",{className:c.titleColumn,children:[(0,a.jsx)("h1",{style:{margin:0},children:t}),(0,a.jsx)("span",{className:c.headerBarSubheader,children:o})]})]}),(0,a.jsx)("div",{className:c.rightItems,children:l})]})})}},50276:function(e,n,t){var i=t(1413),o=t(29439),a=t(72791),r=t(64554),l=t(43896),s=t(83449),c=t(47283),u=t(82851),d=t(25787),f=t(13967),p=t(11135),x=t(95193),m=t(57689),h=t(80184),g={minHeight:60};n.Z=(0,d.Z)((function(e){return(0,p.Z)({tabsContainer:{display:"flex",height:"100%",width:"100%"},tabsHeaderContainer:{width:"300px",background:"#F8F8F8",borderRight:"1px solid #EAEAEA","& .MuiTabs-root":{"& .MuiTabs-indicator":{display:"none"},"& .MuiTab-root":{display:"flex",flexFlow:"row",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","& .MuiSvgIcon-root":{marginRight:8,marginBottom:0},"&.Mui-selected":{background:"#E5E5E5",fontWeight:600}},"&. MuiTabs-scroller":{display:"none"}}},tabContentContainer:{width:"100%","& .MuiTabPanel-root":{height:"100%"}},tabPanel:{height:"100%"},"@media (max-width: 900px)":{tabsContainer:{flexFlow:"column",flexDirection:"column"},tabsHeaderContainer:{width:"100%",borderBottom:" 1px solid #EAEAEA","& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root":{borderBottom:" 0px"}}}})}))((function(e){var n=e.children,t=e.classes,d=e.selectedTab,p=void 0===d?"0":d,v=e.routes,b=e.isRouteTabs,j=(0,f.Z)(),y=(0,m.TH)().pathname,Z=void 0===y?"":y,k=(0,x.Z)(j.breakpoints.down("md")),w=(0,a.useState)(p),C=(0,o.Z)(w,2),_=C[0],E=C[1],I=[],T=[];if((0,a.useEffect)((function(){if(b){var e=n.find((function(e){return e.tabConfig.to===Z}));e&&E(e.tabConfig.value)}}),[b,n,Z]),!n)return null;n.forEach((function(e){I.push(e.tabConfig),T.push(e.content)}));return(0,h.jsx)(s.ZP,{value:"".concat(_),children:(0,h.jsxs)(r.Z,{className:t.tabsContainer,children:[(0,h.jsx)(r.Z,{className:t.tabsHeaderContainer,children:(0,h.jsx)(c.Z,{onChange:function(e,n){E(n)},orientation:k?"horizontal":"vertical",variant:k?"scrollable":"standard",scrollButtons:"auto",className:t.tabList,children:I.map((function(e,n){return e?(0,h.jsx)(l.Z,(0,i.Z)((0,i.Z)({className:t.tabHeader,value:"".concat(n),style:g},e),{},{disableRipple:!0,disableTouchRipple:!0,focusRipple:!0}),"v-tab-".concat(n)):null}))})}),(0,h.jsxs)(r.Z,{className:t.tabContentContainer,children:[b?null:T.map((function(e,n){return(0,h.jsx)(u.Z,{classes:(0,i.Z)({},t.tabPanel),value:"".concat(n),children:e||null},"v-tab-p-".concat(n))})),b?(0,h.jsx)("div",{className:t.tabPanel,children:v}):null]})]})})}))},11432:function(e,n,t){t.r(n),t.d(n,{default:function(){return J}});var i=t(1413),o=t(72791),a=t(11135),r=t(25787),l=t(61889),s=t(58493),c=t(23814),u=t(75952),d=t(57689),f=t(11087),p=t(50276),x=t(74794),m=t(14917),h=t(29439),g=t(26181),v=t.n(g),b=t(64554),j=t(81207),y=t(10091),Z=t(90767),k=t(87995),w=t(81551),C=t(93433),_=t(21435),E=t(56028),I=t(244),T=t(13901),S=t(36909),F=t(40986),A=t(80184),R=function(e){var n=e.open,t=e.type,a=e.onCloseEndpoint,r=(0,o.useState)(""),l=(0,h.Z)(r,2),s=l[0],d=l[1],f=(0,o.useState)(""),p=(0,h.Z)(f,2),x=p[0],m=p[1],g=(0,o.useState)(""),v=(0,h.Z)(g,2),b=v[0],y=v[1],Z=(0,o.useState)(!1),R=(0,h.Z)(Z,2),N=R[0],D=R[1],q=(0,o.useState)(["name","endpoint"]),P=(0,h.Z)(q,2),M=P[0],W=P[1],B=(0,o.useState)(["name","endpoint","auth-token"]),O=(0,h.Z)(B,2),z=O[0],L=O[1],H=(0,w.TL)(),G=function(e){L(z.filter((function(n){return n!==e})))},K=function(e,n){M.includes(e)&&n?W(M.filter((function(n){return n!==e}))):n||M.includes(e)||W([].concat((0,C.Z)(M),[e]))},Y="Add new Webhook",U=(0,A.jsx)(I.Z,{});switch(t){case"logger_webhook":Y="New Logger Webhook",U=(0,A.jsx)(T.Z,{});break;case"audit_webhook":Y="New Audit Webhook",U=(0,A.jsx)(S.Z,{})}return(0,A.jsx)(o.Fragment,{children:(0,A.jsxs)(E.Z,{modalOpen:n,title:Y,onClose:a,titleIcon:U,children:[(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(_.Z,{id:"name",name:"name",onChange:function(e){G("name"),d(e.target.value),K("name",e.target.validity.valid)},error:M.includes("name")&&!z.includes("name")?"Invalid Name":"",label:"Name",value:s,pattern:"^(?=.*[a-zA-Z0-9]).{1,}$",required:!0})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(_.Z,{id:"endpoint",name:"endpoint",onChange:function(e){G("endpoint"),m(e.target.value),K("endpoint",e.target.validity.valid)},error:M.includes("endpoint")&&!z.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:x,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(_.Z,{id:"auth-token",name:"auth-token",onChange:function(e){G("auth-token"),y(e.target.value)},label:"Auth Token",value:b})}),N&&(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,A.jsx)(F.Z,{})}),(0,A.jsxs)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,A.jsx)(u.zxk,{id:"reset",type:"button",variant:"regular",disabled:N,onClick:a,label:"Cancel",sx:{marginRight:10}}),(0,A.jsx)(u.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:N||0!==M.length,label:"Save",onClick:function(){if(!N&&0===M.length)if(""!==s.trim())if(""!==x.trim()){D(!0);var e={key_values:[{key:"endpoint",value:x},{key:"auth_token",value:b}],arn_resource_id:s};j.Z.invoke("PUT","/api/v1/configs/".concat(t),e).then((function(e){D(!1),H((0,k.cN)(e.restart)),e.restart||H((0,k.y1)("Configuration saved successfully")),a(),H((0,k.Ie)(!0))})).catch((function(e){D(!1),H((0,k.Ih)(e))}))}else W([].concat((0,C.Z)(M),["endpoint"]));else W([].concat((0,C.Z)(M),["name"]))}})]})]})})},N=t(51691),D=t(23508),q=function(e){var n=e.modalOpen,t=e.onClose,i=e.selectedARN,a=(e.type,(0,o.useState)(!1)),r=(0,h.Z)(a,2),l=r[0],s=r[1],c=(0,w.TL)();(0,o.useEffect)((function(){l&&j.Z.invoke("POST","/api/v1/configs/".concat(i,"/reset")).then((function(){s(!1),c((0,k.cN)(!0)),c((0,k.Ie)(!0)),t()})).catch((function(e){s(!1),c((0,k.Ih)(e))}))}),[l,c,t,i]);var d=!i.includes(":"),f="Are you sure you want to delete the Configured Endpoint";return d&&(f="Are you sure you want to reset the Default"),(0,A.jsx)(D.Z,{title:d?"Reset Default Webhook":"Delete Webhook",confirmText:d?"Reset":"Delete",isOpen:n,isLoading:l,onConfirm:function(){s(!0)},titleIcon:(0,A.jsx)(u.NvT,{}),onClose:t,confirmationContent:(0,A.jsxs)(N.Z,{children:["".concat(f," "),(0,A.jsx)("strong",{children:i}),"?"]})})},P=t(81159),M=t(64163),W=function(e){var n,t,a,r=e.open,l=e.type,d=e.endpointInfo,f=e.onCloseEndpoint,p=(0,o.useState)(""),x=(0,h.Z)(p,2),m=x[0],g=x[1],v=(0,o.useState)(""),b=(0,h.Z)(v,2),y=b[0],Z=b[1],R=(0,o.useState)(""),N=(0,h.Z)(R,2),D=N[0],q=N[1],W=(0,o.useState)("on"),B=(0,h.Z)(W,2),O=B[0],z=B[1],L=(0,o.useState)(!1),H=(0,h.Z)(L,2),G=H[0],K=H[1],Y=(0,o.useState)([]),U=(0,h.Z)(Y,2),V=U[0],$=U[1],Q=(0,w.TL)();(0,o.useEffect)((function(){if(d){var e=d.key_values.find((function(e){return"endpoint"===e.key})),n=d.key_values.find((function(e){return"auth_token"===e.key})),t=d.key_values.find((function(e){return"enable"===e.key})),i=[];if(e){var o=e.value;""===o?i.push("endpoint"):Z(o)}if(n){var a=n.value;""===a?i.push("auth-token"):q(a)}t&&"off"===t.value&&z(t.value),g(d.name||""),$(i)}}),[d]);var J=!m.includes(":"),X=d.key_values.filter((function(e){return!!e.env_override})),ee=(0,s.F_)(X),ne="Edit Webhook",te=(0,A.jsx)(I.Z,{});switch(l){case"logger_webhook":ne="Edit ".concat(J?" the Default ":"","Logger Webhook"),te=(0,A.jsx)(T.Z,{});break;case"audit_webhook":ne="Edit ".concat(J?" the Default ":"","Audit Webhook"),te=(0,A.jsx)(S.Z,{})}return X.length>0&&(ne="View env variable Webhook"),(0,A.jsx)(o.Fragment,{children:(0,A.jsx)(E.Z,{modalOpen:r,title:"".concat(ne).concat(J?"":" - ".concat(m)),onClose:f,titleIcon:te,children:X.length>0?(0,A.jsxs)(o.Fragment,{children:[(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(M.Z,{label:"Enabled",content:(null===(n=ee.enable)||void 0===n?void 0:n.value)||"-",actionButton:(0,A.jsx)(u.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,A.jsx)(u.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.enable.overrideEnv," environment variable"):"",placement:"left",children:(0,A.jsx)(u.zD0,{style:{width:20}})})})})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(M.Z,{label:"Endpoint",content:(null===(t=ee.endpoint)||void 0===t?void 0:t.value)||"-",actionButton:(0,A.jsx)(u.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,A.jsx)(u.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.endpoint.overrideEnv," environment variable"):"",placement:"left",children:(0,A.jsx)(u.zD0,{style:{width:20}})})})})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(M.Z,{label:"Auth Token",content:(null===(a=ee.auth_token)||void 0===a?void 0:a.value)||"-",actionButton:(0,A.jsx)(u.rjZ,{item:!0,sx:{display:"flex",justifyContent:"flex-end",paddingRight:"10px"},children:(0,A.jsx)(u.ua7,{tooltip:ee.enable?"This value is set from the ".concat(ee.auth_token.overrideEnv," environment variable"):"",placement:"left",children:(0,A.jsx)(u.zD0,{style:{width:20}})})})})})]}):(0,A.jsxs)(o.Fragment,{children:[(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(P.Z,{onChange:function(e){var n=e.target.checked?"on":"off";z(n)},id:"endpoint_enabled",name:"endpoint_enabled",label:"Enabled",value:"switch_on",checked:"on"===O})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(_.Z,{id:"endpoint",name:"endpoint",onChange:function(e){Z(e.target.value),function(e,n){V.includes(e)&&n?$(V.filter((function(n){return n!==e}))):n||V.includes(e)||$([].concat((0,C.Z)(V),[e]))}("endpoint",e.target.validity.valid)},error:V.includes("endpoint")?"Invalid Endpoint set":"",label:"Endpoint",value:y,pattern:"^(https?):\\/\\/([a-zA-Z0-9\\-.]+)(:[0-9]+)?(\\/[a-zA-Z0-9\\-.\\/]*)?$",required:!0})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:(0,i.Z)({},c.DF.formFieldRow),children:(0,A.jsx)(_.Z,{id:"auth-token",name:"auth-token",onChange:function(e){q(e.target.value)},label:"Auth Token",value:D})}),G&&(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:{marginBottom:10},children:(0,A.jsx)(F.Z,{})}),(0,A.jsxs)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:[(0,A.jsx)(u.zxk,{id:"reset",type:"button",variant:"regular",disabled:G,onClick:f,label:"Cancel",sx:{marginRight:10}}),(0,A.jsx)(u.zxk,{id:"save-lifecycle",type:"submit",variant:"callAction",color:"primary",disabled:G||0!==V.length,label:"Update",onClick:function(){if(!G&&0===V.length)if(y&&""!==y.trim()){K(!0);var e={key_values:[{key:"endpoint",value:y},{key:"auth_token",value:D},{key:"enable",value:O}]};j.Z.invoke("PUT","/api/v1/configs/".concat(m),e).then((function(e){K(!1),Q((0,k.cN)(e.restart)),e.restart||Q((0,k.y1)("Configuration saved successfully")),f(),Q((0,k.Ie)(!0))})).catch((function(e){K(!1),Q((0,k.Ih)(e))}))}else $([].concat((0,C.Z)(V),["endpoint"]))}})]})]})})})},B=function(e){e.setResetConfigurationOpen;var n=e.WebhookSettingslist,t=e.type,i=(0,o.useState)(!1),a=(0,h.Z)(i,2),r=a[0],l=a[1],s=(0,o.useState)(!1),c=(0,h.Z)(s,2),d=c[0],f=c[1],p=(0,o.useState)(!1),x=(0,h.Z)(p,2),m=x[0],g=x[1],v=(0,o.useState)(""),b=(0,h.Z)(v,2),j=b[0],y=b[1],Z=(0,o.useState)(null),k=(0,h.Z)(Z,2),w=k[0],C=k[1],_=[{type:"view",onClick:function(e){e.name&&(g(!0),C(e))}},{type:"delete",onClick:function(e){e.name&&(f(!0),y(e.name))},disableButtonFunction:function(e){var t=n.find((function(n){return n.name===e}));return!!t&&t.key_values.filter((function(e){return!!e.env_override})).length>0}}];return(0,A.jsxs)(u.rjZ,{container:!0,children:[r&&(0,A.jsx)(R,{open:r,type:t,onCloseEndpoint:function(){l(!1)}}),d&&(0,A.jsx)(q,{modalOpen:d,onClose:function(){f(!1),y("")},selectedARN:j,type:t}),m&&w&&(0,A.jsx)(W,{open:m,type:t,endpointInfo:w,onCloseEndpoint:function(){g(!1),C(null)}}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:{display:"flex",justifyContent:"flex-end"},children:(0,A.jsx)(u.zxk,{id:"newWebhook",variant:"callAction",onClick:function(){l(!0)},children:"New Endpoint"})}),(0,A.jsx)(u.rjZ,{item:!0,xs:12,sx:{padding:"0 10px 10px"},children:(0,A.jsxs)(o.Fragment,{children:[(0,A.jsx)("h3",{children:"Currently Configured Endpoints"}),(0,A.jsx)(u.wQF,{columns:[{label:"Status",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"enable"===e.key}));if(null!==n&&void 0!==n&&n.env_override){var t=null!==n&&void 0!==n&&n.env_override.value&&"on"!==(null===n||void 0===n?void 0:n.env_override.value)&&null!==n&&void 0!==n&&n.env_override.value?"Disabled":"Enabled";return(0,A.jsxs)(u.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,A.jsx)(u.zD0,{style:{fill:"#052F51",width:"14px"}}),t?"Enabled":"Disabled"]})}return n&&"on"!==n.value&&n.value?(0,A.jsxs)(u.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,A.jsx)(u.qwj,{style:{fill:"#C83B51",width:14,height:14}}),"Disabled"]}):(0,A.jsxs)(u.rjZ,{container:!0,sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyItems:"start",fontSize:"8px"},children:[(0,A.jsx)(u.Yp9,{style:{fill:"#4CCB92",width:14,height:14}}),"Enabled"]})},width:50},{label:"Name",elementKey:"name"},{label:"Endpoint",elementKey:"key_values",renderFunction:function(e){var n=e.find((function(e){return"endpoint"===e.key}));return n?n.env_override?n.env_override.value:n.value:""}}],itemActions:_,idField:"name",isLoading:!1,records:n,entityName:"endpoints",customPaperHeight:"calc(100vh - 750px)"})]})})]})},O=t(78687),z=(0,r.Z)((function(e){return(0,a.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},c.YI),c.Je),{},{settingsFormContainer:{display:"grid",gridTemplateColumns:"1fr",gridGap:"10px"}}))}))((function(e){var n=e.selectedConfiguration,t=e.classes,i=e.className,a=void 0===i?"":i,r=(0,w.TL)(),c=(0,d.s0)(),f=(0,d.TH)().pathname,p=void 0===f?"":f,x=p.substring(p.lastIndexOf("/")+1);x="settings"===x?"region":x;var m=(0,o.useState)([]),g=(0,h.Z)(m,2),C=g[0],_=g[1],E=(0,o.useState)(!1),I=(0,h.Z)(E,2),T=I[0],S=I[1],F=(0,o.useState)([]),R=(0,h.Z)(F,2),N=R[0],D=R[1],q=(0,o.useState)([]),P=(0,h.Z)(q,2),M=P[0],W=P[1],z=(0,o.useState)(!1),L=(0,h.Z)(z,2),H=L[0],G=L[1],K=(0,o.useState)({}),Y=(0,h.Z)(K,2),U=Y[0],V=Y[1],$=(0,O.v9)((function(e){return e.system.loadingConfigurations}));(0,o.useEffect)((function(){r((0,k.Ie)(!0))}),[x,r]),(0,o.useEffect)((function(){if($){var e=v()(n,"configuration_id",!1);if(e)return void j.Z.invoke("GET","/api/v1/configs/".concat(e)).then((function(e){W(e);var n=v()(e[0],"key_values",[]);D(n),V((0,s.F_)(n)),r((0,k.Ie)(!1))})).catch((function(e){r((0,k.Ie)(!1)),r((0,k.Ih)(e))}));r((0,k.Ie)(!1))}}),[$,n,r]),(0,o.useEffect)((function(){if(T){var e={key_values:(0,s.DD)(C)};j.Z.invoke("PUT","/api/v1/configs/".concat(n.configuration_id),e).then((function(e){S(!1),r((0,k.cN)(e.restart)),r((0,k.Ie)(!0)),e.restart||r((0,k.y1)("Configuration saved successfully"))})).catch((function(e){S(!1),r((0,k.Ih)(e))}))}}),[T,r,n,C,c]);var Q=(0,o.useCallback)((function(e){_(e)}),[_]),J=function(){G(!0)};return(0,A.jsxs)(o.Fragment,{children:[H&&(0,A.jsx)(Z.Z,{configurationName:n.configuration_id,closeResetModalAndRefresh:function(e){G(!1),r((0,k.cN)(e)),e&&r((0,k.Ie)(!0))},resetOpen:H}),$?(0,A.jsx)(l.ZP,{item:!0,xs:12,sx:{textAlign:"center",paddingTop:"15px"},children:(0,A.jsx)(u.aNw,{})}):(0,A.jsx)(b.Z,{sx:{padding:"15px",height:"100%"},children:"logger_webhook"===n.configuration_id||"audit_webhook"===n.configuration_id?(0,A.jsx)(B,{WebhookSettingslist:M,setResetConfigurationOpen:J,type:n.configuration_id}):(0,A.jsx)(o.Fragment,{children:(0,A.jsxs)("form",{noValidate:!0,onSubmit:function(e){e.preventDefault(),S(!0)},className:a,style:{height:"100%",display:"flex",flexFlow:"column"},children:[(0,A.jsx)(l.ZP,{item:!0,xs:12,className:t.settingsFormContainer,children:(0,A.jsx)(y.default,{fields:s.DP[n.configuration_id],onChange:Q,defaultVals:N,overrideEnv:U})}),(0,A.jsxs)(l.ZP,{item:!0,xs:12,sx:{paddingTop:"15px ",textAlign:"right",maxHeight:"60px",display:"flex",alignItems:"center",justifyContent:"flex-end"},children:[(0,A.jsx)(u.zxk,{id:"restore-defaults",variant:"secondary",onClick:J,label:"Restore Defaults"}),"\xa0 \xa0",(0,A.jsx)(u.zxk,{id:"save",type:"submit",variant:"callAction",disabled:T,label:"Save"})]})]})})})]})})),L=function(){var e=(0,d.TH)().pathname,n=void 0===e?"":e,t=n.substring(n.lastIndexOf("/")+1),i=s.bx.find((function(e){return e.configuration_id===t})),o="".concat(t);return(0,A.jsx)(l.ZP,{item:!0,xs:12,sx:{height:"100%","& .identity_ldap, .api":{"& label":{minWidth:220,marginRight:0}}},children:i&&(0,A.jsx)(z,{className:"".concat(o),selectedConfiguration:i})})},H=t(56087),G=t(47974),K=t(9505),Y=t(45248),U=t(99779),V=t(27454),$=function(){var e=(0,O.I0)(),n=(0,K.Z)((function(e){(0,Y.zZ)(new Blob([window.atob(e.value)]),"minio-server-config-".concat(U.ou.now().toFormat("LL-dd-yyyy-HH-mm-ss"),".conf"))}),(function(n){e((0,k.Ih)(n))})),t=(0,h.Z)(n,2),i=t[0],o=t[1];return(0,A.jsx)(V.Z,{tooltip:"Warning!. The resulting file would contain server configuration information in plain text.",children:(0,A.jsx)(u.zxk,{id:"export-config",onClick:function(){o("GET","api/v1/configs/export")},icon:(0,A.jsx)(u.rG2,{}),label:"Export",variant:"regular",disabled:i})})},Q=function(){var e=(0,d.s0)(),n=(0,O.I0)(),t=(0,O.v9)((function(e){return e.system.serverNeedsRestart})),i=(0,o.useState)(void 0),a=(0,h.Z)(i,2),r=a[0],l=a[1],s=(0,o.useRef)(null),c=(0,K.Z)((function(e){n((0,k.cN)(!0)),l(!0)}),(function(e){n((0,k.Ih)(e))})),f=(0,h.Z)(c,2),p=f[0],x=f[1];(0,o.useEffect)((function(){!t&&r&&e(0)}),[t,r,e]);return(0,A.jsxs)(o.Fragment,{children:[(0,A.jsx)("input",{type:"file",onChange:function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();var n=(0,h.Z)(e.target.files,1)[0],t=new FormData,i=new Blob([n],{type:n.type});t.append("file",i,n.name),x("POST","api/v1/configs/import",t),e.target.value=""}},style:{display:"none"},ref:s}),(0,A.jsx)(V.Z,{tooltip:"The file must be valid and should have valid config values",children:(0,A.jsx)(u.zxk,{id:"import-config",onClick:function(){s&&s.current&&s.current.click()},icon:(0,A.jsx)(u._8t,{}),label:"Import",variant:"regular",disabled:p})})]})},J=(0,r.Z)((function(e){return(0,a.Z)((0,i.Z)((0,i.Z)((0,i.Z)({settingsOptionsContainer:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap",border:"#E5E5E5 1px solid",borderRadius:2,backgroundColor:"#fff"}},c.qg),c.OR),c.Bz))}))((function(e){var n=e.classes,t=(0,d.TH)().pathname,i=void 0===t?"":t,a=i.substring(i.lastIndexOf("/")+1);return a="settings"===a?"region":a,(0,A.jsxs)(o.Fragment,{children:[(0,A.jsx)(G.Z,{label:"Settings"}),(0,A.jsxs)(x.Z,{children:[(0,A.jsx)(l.ZP,{item:!0,xs:12,children:(0,A.jsxs)("div",{id:"settings-container",className:n.settingsOptionsContainer,children:[(0,A.jsx)(m.Z,{icon:(0,A.jsx)(u.ewm,{}),title:"MinIO Configuration:",actions:(0,A.jsxs)(b.Z,{sx:{display:"flex",gap:2},children:[(0,A.jsx)(Q,{}),(0,A.jsx)($,{})]})}),(0,A.jsx)(p.Z,{selectedTab:a,isRouteTabs:!0,routes:(0,A.jsxs)(d.Z5,{children:[s.bx.map((function(e){return(0,A.jsx)(d.AW,{path:"".concat(e.configuration_id),element:(0,A.jsx)(L,{})},"configItem-".concat(e.configuration_label))})),(0,A.jsx)(d.AW,{path:"/",element:(0,A.jsx)(d.Fg,{to:"".concat(H.gA.SETTINGS,"/region")})})]}),children:s.bx.map((function(e){var n,t=e.configuration_id;return{tabConfig:{label:e.configuration_label,value:t,icon:e.icon,component:f.rU,to:(n=t,"".concat(H.gA.SETTINGS,"/").concat(n))}}}))})]})}),(0,A.jsx)(l.ZP,{item:!0,xs:12,sx:{paddingTop:"15px"},children:(0,A.jsx)(u.KfX,{title:"Learn more about Configurations",iconComponent:(0,A.jsx)(u.ewm,{}),help:(0,A.jsxs)(o.Fragment,{children:["MinIO supports a variety of configurations ranging from encryption, compression, region, notifications, etc.",(0,A.jsx)("br",{}),(0,A.jsx)("br",{}),"You can learn more at our"," ",(0,A.jsx)("a",{href:"https://min.io/docs/minio/linux/reference/minio-mc-admin/mc-admin-config.html?ref=con#id4",target:"_blank",rel:"noopener",children:"documentation"}),"."]})})})]})]})}))},58493:function(e,n,t){t.d(n,{DD:function(){return g},DP:function(){return h},F_:function(){return b},_0:function(){return v},bx:function(){return m}});var i=t(4942),o=t(1413),a=t(93433),r=(t(72791),t(87569)),l=t(61809),s=t(31292),c=t(98095),u=t(67055),d=t(21141),f=t(36909),p=t(13901),x=t(80184),m=[{icon:(0,x.jsx)(r.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,x.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,x.jsx)(s.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,x.jsx)(c.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,x.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,x.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,x.jsx)(p.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,x.jsx)(f.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"}],h={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt",".log" or ".csv", you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*","application/json" or "application/xml", you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation. eg. 2s",type:"duration",placeholder:"Enter Max Sleep duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation. eg. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379", you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}]},g=function(e){return e.filter((function(e){return""!==e.value}))},v=function(e,n,t){var i=e.target,o=i.value,r=i.checked,l=(0,a.Z)(t);return r?l.push(o):l=l.filter((function(e){return e!==o})),n(l),l},b=function(e){var n={};return e.forEach((function(e){if(e.env_override){var t={value:e.env_override.value,overrideEnv:e.env_override.name};n=(0,o.Z)((0,o.Z)({},n),{},(0,i.Z)({},e.key,t))}})),n}},90767:function(e,n,t){var i=t(29439),o=t(1413),a=t(72791),r=t(40986),l=t(51691),s=t(11135),c=t(25787),u=t(23814),d=t(81207),f=t(23508),p=t(75952),x=t(87995),m=t(81551),h=t(80184);n.Z=(0,c.Z)((function(e){return(0,s.Z)((0,o.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},u.Qw))}))((function(e){var n=e.classes,t=e.configurationName,o=e.closeResetModalAndRefresh,s=e.resetOpen,c=(0,m.TL)(),u=(0,a.useState)(!1),g=(0,i.Z)(u,2),v=g[0],b=g[1];(0,a.useEffect)((function(){v&&d.Z.invoke("POST","/api/v1/configs/".concat(t,"/reset")).then((function(e){b(!1),o(!0)})).catch((function(e){b(!1),c((0,x.Ih)(e))}))}),[o,t,v,c]);return(0,h.jsx)(f.Z,{title:"Restore Defaults",confirmText:"Yes, Reset Configuration",isOpen:s,titleIcon:(0,h.jsx)(p.NvT,{}),isLoading:v,onConfirm:function(){b(!0)},onClose:function(){o(!1)},confirmationContent:(0,h.jsxs)(a.Fragment,{children:[v&&(0,h.jsx)(r.Z,{}),(0,h.jsxs)(l.Z,{children:["Are you sure you want to restore these configurations to default values?",(0,h.jsx)("br",{}),(0,h.jsx)("b",{className:n.wrapText,children:"Please note that this may cause your system to not be accessible"})]})]})})}))}}]); -//# sourceMappingURL=1432.94c60bd0.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/1432.94c60bd0.chunk.js.map b/portal-ui/build/static/js/1432.94c60bd0.chunk.js.map deleted file mode 100644 index 357b9d215..000000000 --- a/portal-ui/build/static/js/1432.94c60bd0.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/1432.94c60bd0.chunk.js","mappings":"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","sources":["screens/Console/Common/ScreenTitle/ScreenTitle.tsx","screens/Console/Common/VerticalTabs/VerticalTabs.tsx","screens/Console/EventDestinations/WebhookSettings/AddEndpointModal.tsx","screens/Console/EventDestinations/WebhookSettings/DeleteWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/EditWebhookEndpoint.tsx","screens/Console/EventDestinations/WebhookSettings/WebhookSettings.tsx","screens/Console/EventDestinations/CustomForms/EditConfiguration.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationForm.tsx","screens/Console/Configurations/ConfigurationPanels/ExportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ImportConfigButton.tsx","screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx","screens/Console/Configurations/utils.tsx","screens/Console/EventDestinations/CustomForms/ResetConfigurationModal.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n

{title}

\n {subTitle}\n
\n
\n\n
{actions}
\n
\n \n );\n};\n\nexport default ScreenTitle;\n","import React, { useEffect, useState } from \"react\";\nimport { Box, Tab, TabProps } from \"@mui/material\";\nimport { TabContext, TabList, TabPanel } from \"@mui/lab\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme, useTheme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport useMediaQuery from \"@mui/material/useMediaQuery\";\nimport { useLocation } from \"react-router-dom\";\n\nexport type TabItemProps = {\n tabConfig: TabProps | any;\n content?: JSX.Element | JSX.Element[];\n};\n\ntype VerticalTabsProps = {\n classes: any;\n children: TabItemProps[];\n selectedTab?: string;\n routes?: any;\n isRouteTabs?: boolean;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n tabsContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n },\n tabsHeaderContainer: {\n width: \"300px\",\n background: \"#F8F8F8\",\n borderRight: \"1px solid #EAEAEA\",\n \"& .MuiTabs-root\": {\n \"& .MuiTabs-indicator\": {\n display: \"none\",\n },\n \"& .MuiTab-root\": {\n display: \"flex\",\n flexFlow: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n borderBottom: \"1px solid #EAEAEA\",\n \"& .MuiSvgIcon-root\": {\n marginRight: 8,\n marginBottom: 0,\n },\n \"&.Mui-selected\": {\n background: \"#E5E5E5\",\n fontWeight: 600,\n },\n },\n\n \"&. MuiTabs-scroller\": {\n display: \"none\",\n },\n },\n },\n tabContentContainer: {\n width: \"100%\",\n \"& .MuiTabPanel-root\": {\n height: \"100%\",\n },\n },\n tabPanel: {\n height: \"100%\",\n },\n /*Below md breakpoint make it horizontal and style it for scrolling tabs*/\n \"@media (max-width: 900px)\": {\n tabsContainer: {\n flexFlow: \"column\",\n flexDirection: \"column\",\n },\n tabsHeaderContainer: {\n width: \"100%\",\n borderBottom: \" 1px solid #EAEAEA\",\n \"& .MuiTabs-root .MuiTabs-scroller .MuiButtonBase-root\": {\n borderBottom: \" 0px\",\n },\n },\n },\n });\n\nconst tabStripStyle = {\n minHeight: 60,\n};\n\nconst VerticalTabs = ({\n children,\n classes,\n selectedTab = \"0\",\n routes,\n isRouteTabs,\n}: VerticalTabsProps) => {\n const theme = useTheme();\n const { pathname = \"\" } = useLocation();\n\n const isSmallScreen = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [value, setValue] = useState(selectedTab);\n\n const headerList: TabProps[] = [];\n const contentList: React.ReactNode[] = [];\n\n useEffect(() => {\n if (isRouteTabs) {\n const tabConfigElement = children.find(\n (item) => item.tabConfig.to === pathname\n );\n\n if (tabConfigElement) {\n setValue(tabConfigElement.tabConfig.value);\n }\n }\n }, [isRouteTabs, children, pathname]);\n\n if (!children) return null;\n\n children.forEach((child) => {\n headerList.push(child.tabConfig);\n contentList.push(child.content);\n });\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setValue(newValue);\n };\n\n return (\n \n \n \n \n {headerList.map((item, index) => {\n if (item) {\n return (\n \n );\n }\n return null;\n })}\n \n \n\n \n {!isRouteTabs\n ? contentList.map((item, index) => {\n return (\n \n {item ? item : null}\n \n );\n })\n : null}\n {isRouteTabs ? (\n
{routes}
\n ) : null}\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(VerticalTabs);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Button, Grid } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport { formFieldStyles } from \"../../Common/FormComponents/common/styleLibrary\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport api from \"../../../../common/api\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { LinearProgress } from \"@mui/material\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n onCloseEndpoint: () => void;\n}\n\nconst AddEndpointModal = ({ open, type, onCloseEndpoint }: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([\n \"name\",\n \"endpoint\",\n ]);\n const [initialInputs, setInitialInputs] = useState([\n \"name\",\n \"endpoint\",\n \"auth-token\",\n ]);\n\n const dispatch = useAppDispatch();\n\n const saveWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (name.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"name\"]);\n\n return;\n }\n\n if (endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n ],\n arn_resource_id: name,\n };\n\n api\n .invoke(\"PUT\", `/api/v1/configs/${type}`, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.restart));\n if (!res.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err: ErrorResponseHandler) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const initializeInput = (name: string) => {\n setInitialInputs(initialInputs.filter((item) => item !== name));\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n let title = \"Add new Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = \"New Logger Webhook\";\n icon = ;\n break;\n case \"audit_webhook\":\n title = \"New Audit Webhook\";\n icon = ;\n break;\n }\n\n return (\n \n \n \n ) => {\n initializeInput(\"name\");\n setName(event.target.value);\n validateInput(\"name\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"name\") && !initialInputs.includes(\"name\")\n ? \"Invalid Name\"\n : \"\"\n }\n label=\"Name\"\n value={name}\n pattern={\"^(?=.*[a-zA-Z0-9]).{1,}$\"}\n required\n />\n \n \n ) => {\n initializeInput(\"endpoint\");\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\") &&\n !initialInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n \n \n ) => {\n initializeInput(\"auth-token\");\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n \n );\n};\n\nexport default AddEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { DialogContentText } from \"@mui/material\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../common/api\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IDeleteWebhookEndpoint {\n modalOpen: boolean;\n onClose: () => void;\n selectedARN: string;\n type: string;\n}\n\nconst DeleteWebhookEndpoint = ({\n modalOpen,\n onClose,\n selectedARN,\n type,\n}: IDeleteWebhookEndpoint) => {\n const [deleteLoading, setDeleteLoading] = useState(false);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (deleteLoading) {\n api\n .invoke(\"POST\", `/api/v1/configs/${selectedARN}/reset`)\n .then(() => {\n setDeleteLoading(false);\n dispatch(setServerNeedsRestart(true));\n dispatch(configurationIsLoading(true));\n onClose();\n })\n .catch((err: ErrorResponseHandler) => {\n setDeleteLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [deleteLoading, dispatch, onClose, selectedARN]);\n\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n const defaultWH = !selectedARN.includes(\":\");\n\n let message = \"Are you sure you want to delete the Configured Endpoint\";\n\n // Main webhook, we just reset\n if (defaultWH) {\n message = \"Are you sure you want to reset the Default\";\n }\n\n return (\n }\n onClose={onClose}\n confirmationContent={\n \n {`${message} `}\n {selectedARN}?\n \n }\n />\n );\n};\n\nexport default DeleteWebhookEndpoint;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { Button, ConsoleIcon, Grid, Tooltip } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Webhook } from \"@mui/icons-material\";\nimport { formFieldStyles } from \"../../Common/FormComponents/common/styleLibrary\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport api from \"../../../../common/api\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { useAppDispatch } from \"../../../../store\";\nimport { LinearProgress } from \"@mui/material\";\nimport { IConfigurationSys } from \"../../Configurations/types\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport PredefinedList from \"../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport { overrideFields } from \"../../Configurations/utils\";\n\ninterface IEndpointModal {\n open: boolean;\n type: string;\n endpointInfo: IConfigurationSys;\n onCloseEndpoint: () => void;\n}\n\nconst EditEndpointModal = ({\n open,\n type,\n endpointInfo,\n onCloseEndpoint,\n}: IEndpointModal) => {\n const [name, setName] = useState(\"\");\n const [endpoint, setEndpoint] = useState(\"\");\n const [authToken, setAuthToken] = useState(\"\");\n const [endpointState, setEndpointState] = useState(\"on\");\n const [saving, setSaving] = useState(false);\n const [invalidInputs, setInvalidInput] = useState([]);\n\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (endpointInfo) {\n const endpointLocate = endpointInfo.key_values.find(\n (key) => key.key === \"endpoint\"\n );\n const tokenLocate = endpointInfo.key_values.find(\n (key) => key.key === \"auth_token\"\n );\n const enable = endpointInfo.key_values.find(\n (key) => key.key === \"enable\"\n );\n\n let invalidInputs: string[] = [];\n\n if (endpointLocate) {\n const endpointValue = endpointLocate.value;\n\n if (endpointValue === \"\") {\n invalidInputs.push(\"endpoint\");\n } else {\n setEndpoint(endpointValue);\n }\n }\n\n if (tokenLocate) {\n const tokenValue = tokenLocate.value;\n\n if (tokenValue === \"\") {\n invalidInputs.push(\"auth-token\");\n } else {\n setAuthToken(tokenValue);\n }\n }\n\n if (enable) {\n if (enable.value === \"off\") {\n setEndpointState(enable.value);\n }\n }\n\n setName(endpointInfo.name || \"\");\n setInvalidInput(invalidInputs);\n }\n }, [endpointInfo]);\n\n const updateWebhook = () => {\n if (saving) {\n return;\n }\n\n if (invalidInputs.length !== 0) {\n return;\n }\n\n if (!endpoint || endpoint.trim() === \"\") {\n setInvalidInput([...invalidInputs, \"endpoint\"]);\n\n return;\n }\n\n setSaving(true);\n\n const payload = {\n key_values: [\n {\n key: \"endpoint\",\n value: endpoint,\n },\n {\n key: \"auth_token\",\n value: authToken,\n },\n {\n key: \"enable\",\n value: endpointState,\n },\n ],\n };\n\n api\n .invoke(\"PUT\", `/api/v1/configs/${name}`, payload)\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.restart));\n if (!res.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n\n onCloseEndpoint();\n dispatch(configurationIsLoading(true));\n })\n .catch((err: ErrorResponseHandler) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const validateInput = (name: string, valid: boolean) => {\n if (invalidInputs.includes(name) && valid) {\n setInvalidInput(invalidInputs.filter((item) => item !== name));\n return;\n }\n\n if (!valid && !invalidInputs.includes(name)) {\n setInvalidInput([...invalidInputs, name]);\n }\n };\n\n const defaultWH = !name.includes(\":\");\n const hasOverride = endpointInfo.key_values.filter(\n (itm) => !!itm.env_override\n );\n\n const overrideValues = overrideFields(hasOverride);\n\n let title = \"Edit Webhook\";\n let icon = ;\n\n switch (type) {\n case \"logger_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Logger Webhook`;\n icon = ;\n break;\n case \"audit_webhook\":\n title = `Edit ${defaultWH ? \" the Default \" : \"\"}Audit Webhook`;\n icon = ;\n break;\n }\n\n if (hasOverride.length > 0) {\n title = \"View env variable Webhook\";\n }\n\n return (\n \n \n {hasOverride.length > 0 ? (\n \n \n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n }\n />\n \n \n \n \n \n \n \n }\n />\n \n \n ) : (\n \n \n ) => {\n const value = e.target.checked ? \"on\" : \"off\";\n setEndpointState(value);\n }}\n id={\"endpoint_enabled\"}\n name={\"endpoint_enabled\"}\n label={\"Enabled\"}\n value={\"switch_on\"}\n checked={endpointState === \"on\"}\n />\n \n \n ) => {\n setEndpoint(event.target.value);\n validateInput(\"endpoint\", event.target.validity.valid);\n }}\n error={\n invalidInputs.includes(\"endpoint\")\n ? \"Invalid Endpoint set\"\n : \"\"\n }\n label=\"Endpoint\"\n value={endpoint}\n pattern={\n \"^(https?):\\\\/\\\\/([a-zA-Z0-9\\\\-.]+)(:[0-9]+)?(\\\\/[a-zA-Z0-9\\\\-.\\\\/]*)?$\"\n }\n required\n />\n \n \n ) => {\n setAuthToken(event.target.value);\n }}\n label=\"Auth Token\"\n value={authToken}\n />\n \n {saving && (\n \n \n \n )}\n \n \n \n \n \n )}\n \n \n );\n};\n\nexport default EditEndpointModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { IConfigurationSys, IElementValue } from \"../../Configurations/types\";\nimport {\n Button,\n ConsoleIcon,\n DataTable,\n Grid,\n TierOfflineIcon,\n TierOnlineIcon,\n} from \"mds\";\nimport AddEndpointModal from \"./AddEndpointModal\";\nimport DeleteWebhookEndpoint from \"./DeleteWebhookEndpoint\";\nimport EditWebhookEndpoint from \"./EditWebhookEndpoint\";\n\ninterface WebhookSettingsProps {\n WebhookSettingslist: IConfigurationSys[];\n setResetConfigurationOpen: () => void;\n type: string;\n}\n\nconst WebhookSettings = ({\n setResetConfigurationOpen,\n WebhookSettingslist,\n type,\n}: WebhookSettingsProps) => {\n const [newEndpointOpen, setNewEndpointOpen] = useState(false);\n const [deleteWebhookOpen, setDeleteWebhookOpen] = useState(false);\n const [editWebhookOpen, setEditWebhookOpen] = useState(false);\n const [selectedARN, setSelectedARN] = useState(\"\");\n const [selectedEndpoint, setSelectedEndpoint] =\n useState(null);\n\n const renderEndpoint = (item: IElementValue[]) => {\n const endpointFilter = item.find((itm) => itm.key === \"endpoint\");\n\n if (endpointFilter) {\n if (endpointFilter.env_override) {\n return endpointFilter.env_override.value;\n }\n\n return endpointFilter.value;\n }\n\n return \"\";\n };\n\n const renderWebhookStatus = (item: IElementValue[]) => {\n const EnableFilter = item.find((itm) => itm.key === \"enable\");\n\n if (EnableFilter?.env_override) {\n const overrideEnabled =\n !EnableFilter?.env_override.value ||\n EnableFilter?.env_override.value === \"on\" ||\n !EnableFilter?.env_override.value\n ? \"Enabled\"\n : \"Disabled\";\n return (\n \n \n {overrideEnabled ? \"Enabled\" : \"Disabled\"}\n \n );\n }\n\n // If enable is not set, then enabled by default\n if (!EnableFilter || EnableFilter.value === \"on\" || !EnableFilter.value) {\n return (\n \n \n Enabled\n \n );\n }\n\n return (\n \n \n Disabled\n \n );\n };\n\n const onCloseDelete = () => {\n setDeleteWebhookOpen(false);\n setSelectedARN(\"\");\n };\n\n const onCloseEditWebhook = () => {\n setEditWebhookOpen(false);\n setSelectedEndpoint(null);\n };\n\n const actions = [\n {\n type: \"view\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setEditWebhookOpen(true);\n setSelectedEndpoint(item);\n }\n },\n },\n {\n type: \"delete\",\n onClick: (item: IConfigurationSys) => {\n if (item.name) {\n setDeleteWebhookOpen(true);\n setSelectedARN(item.name);\n }\n },\n disableButtonFunction: (item: string) => {\n const wHook = WebhookSettingslist.find(\n (element) => element.name === item\n );\n\n if (wHook) {\n const hasOverride = wHook.key_values.filter(\n (itm) => !!itm.env_override\n );\n\n // Has override values, we cannot delete.\n if (hasOverride.length > 0) {\n return true;\n }\n\n return false;\n }\n return false;\n },\n },\n ];\n return (\n \n {newEndpointOpen && (\n {\n setNewEndpointOpen(false);\n }}\n />\n )}\n {deleteWebhookOpen && (\n \n )}\n {editWebhookOpen && selectedEndpoint && (\n \n )}\n \n {\n setNewEndpointOpen(true);\n }}\n >\n New Endpoint\n \n \n \n \n

Currently Configured Endpoints

\n \n
\n
\n
\n );\n};\nexport default WebhookSettings;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect, useState } from \"react\";\nimport { Button, Loader } from \"mds\";\nimport { useLocation, useNavigate } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport api from \"../../../../common/api\";\nimport ConfTargetGeneric from \"../ConfTargetGeneric\";\n\nimport {\n fieldBasic,\n settingsCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n fieldsConfigurations,\n overrideFields,\n removeEmptyFields,\n} from \"../../Configurations/utils\";\nimport {\n IConfigurationElement,\n IConfigurationSys,\n IElementValue,\n IOverrideEnv,\n} from \"../../Configurations/types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ResetConfigurationModal from \"./ResetConfigurationModal\";\nimport {\n configurationIsLoading,\n setErrorSnackMessage,\n setServerNeedsRestart,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport WebhookSettings from \"../WebhookSettings/WebhookSettings\";\nimport { useSelector } from \"react-redux\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...settingsCommon,\n settingsFormContainer: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gridGap: \"10px\",\n },\n });\n\ninterface IAddNotificationEndpointProps {\n selectedConfiguration: IConfigurationElement;\n classes: any;\n className?: string;\n}\n\nconst EditConfiguration = ({\n selectedConfiguration,\n classes,\n className = \"\",\n}: IAddNotificationEndpointProps) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n //Local States\n const [valuesObj, setValueObj] = useState([]);\n const [saving, setSaving] = useState(false);\n const [configValues, setConfigValues] = useState([]);\n const [configSubsysList, setConfigSubsysList] = useState(\n []\n );\n const [resetConfigurationOpen, setResetConfigurationOpen] =\n useState(false);\n const [overrideEnvs, setOverrideEnvs] = useState({});\n\n const loadingConfig = useSelector(\n (state: AppState) => state.system.loadingConfigurations\n );\n\n useEffect(() => {\n dispatch(configurationIsLoading(true));\n }, [selConfigTab, dispatch]);\n\n useEffect(() => {\n if (loadingConfig) {\n const configId = get(selectedConfiguration, \"configuration_id\", false);\n\n if (configId) {\n api\n .invoke(\"GET\", `/api/v1/configs/${configId}`)\n .then((res) => {\n setConfigSubsysList(res);\n const keyVals = get(res[0], \"key_values\", []);\n setConfigValues(keyVals);\n setOverrideEnvs(overrideFields(keyVals));\n dispatch(configurationIsLoading(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(configurationIsLoading(false));\n dispatch(setErrorSnackMessage(err));\n });\n\n return;\n }\n dispatch(configurationIsLoading(false));\n }\n }, [loadingConfig, selectedConfiguration, dispatch]);\n\n useEffect(() => {\n if (saving) {\n const payload = {\n key_values: removeEmptyFields(valuesObj),\n };\n api\n .invoke(\n \"PUT\",\n `/api/v1/configs/${selectedConfiguration.configuration_id}`,\n payload\n )\n .then((res) => {\n setSaving(false);\n dispatch(setServerNeedsRestart(res.restart));\n dispatch(configurationIsLoading(true));\n if (!res.restart) {\n dispatch(setSnackBarMessage(\"Configuration saved successfully\"));\n }\n })\n .catch((err: ErrorResponseHandler) => {\n setSaving(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [saving, dispatch, selectedConfiguration, valuesObj, navigate]);\n\n //Fetch Actions\n const submitForm = (event: React.FormEvent) => {\n event.preventDefault();\n setSaving(true);\n };\n\n const onValueChange = useCallback(\n (newValue: IElementValue[]) => {\n setValueObj(newValue);\n },\n [setValueObj]\n );\n\n const continueReset = (restart: boolean) => {\n setResetConfigurationOpen(false);\n dispatch(setServerNeedsRestart(restart));\n if (restart) {\n dispatch(configurationIsLoading(true));\n }\n };\n\n const resetConfigurationMOpen = () => {\n setResetConfigurationOpen(true);\n };\n\n return (\n \n {resetConfigurationOpen && (\n \n )}\n {loadingConfig ? (\n \n \n \n ) : (\n \n {selectedConfiguration.configuration_id === \"logger_webhook\" ||\n selectedConfiguration.configuration_id === \"audit_webhook\" ? (\n \n ) : (\n \n \n \n \n \n \n \n    \n \n \n \n \n )}\n \n )}\n \n );\n};\n\nexport default withStyles(styles)(EditConfiguration);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport Grid from \"@mui/material/Grid\";\nimport { configurationElements } from \"../utils\";\nimport EditConfiguration from \"../../EventDestinations/CustomForms/EditConfiguration\";\n\nconst ConfigurationsList = () => {\n const { pathname = \"\" } = useLocation();\n\n const configName = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n\n const validActiveConfig = configurationElements.find(\n (element) => element.configuration_id === configName\n );\n const containerClassName = `${configName}`;\n return (\n \n {validActiveConfig && (\n \n )}\n \n );\n};\n\nexport default ConfigurationsList;\n","import React from \"react\";\nimport { Button, UploadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport { performDownload } from \"../../../../common/utils\";\nimport { DateTime } from \"luxon\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useDispatch } from \"react-redux\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst ExportConfigButton = () => {\n const dispatch = useDispatch();\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n performDownload(\n new Blob([window.atob(res.value)]),\n `minio-server-config-${DateTime.now().toFormat(\n \"LL-dd-yyyy-HH-mm-ss\"\n )}.conf`\n );\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n }\n );\n\n return (\n \n {\n invokeApi(\"GET\", `api/v1/configs/export`);\n }}\n icon={}\n label={\"Export\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n );\n};\n\nexport default ExportConfigButton;\n","import React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { Button, DownloadIcon } from \"mds\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport {\n setErrorSnackMessage,\n setServerNeedsRestart,\n} from \"../../../../systemSlice\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { AppState } from \"../../../../store\";\n\nconst ImportConfigButton = () => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const needsRestart = useSelector(\n (state: AppState) => state.system.serverNeedsRestart\n );\n\n const [refreshPage, setRefreshPage] = useState(\n undefined\n );\n const fileUpload = useRef(null);\n\n const [isReqLoading, invokeApi] = useApi(\n (res: any) => {\n //base64 encoded information so decode before downloading.\n dispatch(setServerNeedsRestart(true)); //import should refreshPage as per mc.\n setRefreshPage(true);\n },\n (err) => {\n dispatch(setErrorSnackMessage(err));\n }\n );\n\n useEffect(() => {\n if (!needsRestart && refreshPage) {\n navigate(0); // refresh the page.\n }\n }, [needsRestart, refreshPage, navigate]);\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n const [fileToUpload] = e.target.files;\n\n const formData = new FormData();\n const blobFile = new Blob([fileToUpload], { type: fileToUpload.type });\n\n formData.append(\"file\", blobFile, fileToUpload.name);\n // @ts-ignore\n invokeApi(\"POST\", `api/v1/configs/import`, formData);\n\n e.target.value = \"\";\n };\n\n return (\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n }}\n icon={}\n label={\"Import\"}\n variant={\"regular\"}\n disabled={isReqLoading}\n />\n \n \n );\n};\n\nexport default ImportConfigButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\n\nimport { configurationElements } from \"../utils\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { HelpBox, SettingsIcon } from \"mds\";\nimport { Link, Navigate, Route, Routes, useLocation } from \"react-router-dom\";\nimport VerticalTabs from \"../../Common/VerticalTabs/VerticalTabs\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport ScreenTitle from \"../../Common/ScreenTitle/ScreenTitle\";\nimport ConfigurationForm from \"./ConfigurationForm\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport PageHeaderWrapper from \"../../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ExportConfigButton from \"./ExportConfigButton\";\nimport ImportConfigButton from \"./ImportConfigButton\";\nimport { Box } from \"@mui/material\";\n\ninterface IConfigurationOptions {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n settingsOptionsContainer: {\n display: \"flex\" as const,\n flexDirection: \"row\" as const,\n justifyContent: \"flex-start\" as const,\n flexWrap: \"wrap\" as const,\n border: \"#E5E5E5 1px solid\",\n borderRadius: 2,\n backgroundColor: \"#fff\",\n },\n ...searchField,\n ...actionsTray,\n ...containerForHeader,\n });\n\nconst getRoutePath = (path: string) => {\n return `${IAM_PAGES.SETTINGS}/${path}`;\n};\n\nconst ConfigurationOptions = ({ classes }: IConfigurationOptions) => {\n const { pathname = \"\" } = useLocation();\n\n let selConfigTab = pathname.substring(pathname.lastIndexOf(\"/\") + 1);\n selConfigTab = selConfigTab === \"settings\" ? \"region\" : selConfigTab;\n\n return (\n \n \n\n \n \n \n }\n title={\"MinIO Configuration:\"}\n actions={\n \n \n \n \n }\n />\n \n {configurationElements.map((element) => (\n }\n />\n ))}\n }\n />\n \n }\n >\n {configurationElements.map((element) => {\n const { configuration_id, configuration_label, icon } = element;\n return {\n tabConfig: {\n label: configuration_label,\n value: configuration_id,\n icon: icon,\n component: Link,\n to: getRoutePath(configuration_id),\n },\n };\n })}\n \n \n \n \n }\n help={\n \n MinIO supports a variety of configurations ranging from\n encryption, compression, region, notifications, etc.\n
\n
\n You can learn more at our{\" \"}\n \n documentation\n \n .\n
\n }\n />\n
\n
\n
\n );\n};\n\nexport default withStyles(styles)(ConfigurationOptions);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\",\".log\" or \".csv\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\",\"application/json\" or \"application/xml\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation. eg. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation. eg. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[]\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { DialogContentText, LinearProgress } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport api from \"../../../../common/api\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n wrapText: {\n maxWidth: \"200px\",\n whiteSpace: \"normal\",\n wordWrap: \"break-word\",\n },\n ...deleteDialogStyles,\n });\n\ninterface IResetConfiguration {\n classes: any;\n configurationName: string;\n closeResetModalAndRefresh: (reloadConfiguration: boolean) => void;\n\n resetOpen: boolean;\n}\n\nconst ResetConfigurationModal = ({\n classes,\n configurationName,\n closeResetModalAndRefresh,\n resetOpen,\n}: IResetConfiguration) => {\n const dispatch = useAppDispatch();\n const [resetLoading, setResetLoading] = useState(false);\n\n useEffect(() => {\n if (resetLoading) {\n api\n .invoke(\"POST\", `/api/v1/configs/${configurationName}/reset`)\n .then((res) => {\n setResetLoading(false);\n closeResetModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setResetLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [closeResetModalAndRefresh, configurationName, resetLoading, dispatch]);\n\n const resetConfiguration = () => {\n setResetLoading(true);\n };\n\n return (\n }\n isLoading={resetLoading}\n onConfirm={resetConfiguration}\n onClose={() => {\n closeResetModalAndRefresh(false);\n }}\n confirmationContent={\n \n {resetLoading && }\n \n Are you sure you want to restore these configurations to default\n values?\n
\n \n Please note that this may cause your system to not be accessible\n \n
\n
\n }\n />\n );\n};\n\nexport default withStyles(styles)(ResetConfigurationModal);\n"],"names":["useStyles","makeStyles","theme","headerBarIcon","marginRight","color","palette","primary","main","width","height","display","headerBarSubheader","maxWidth","stContainer","alignItems","justifyContent","padding","borderBottom","flexFlow","titleColumn","fontSize","leftItems","rightItems","marginLeft","_ref","icon","title","subTitle","actions","className","classes","_jsx","Grid","container","children","_jsxs","item","xs","concat","style","margin","tabStripStyle","minHeight","withStyles","createStyles","tabsContainer","tabsHeaderContainer","background","borderRight","marginBottom","fontWeight","tabContentContainer","tabPanel","flexDirection","_ref$selectedTab","selectedTab","routes","isRouteTabs","useTheme","_useLocation$pathname","useLocation","pathname","isSmallScreen","useMediaQuery","breakpoints","down","_useState","useState","_useState2","_slicedToArray","value","setValue","headerList","contentList","useEffect","tabConfigElement","find","tabConfig","to","forEach","child","push","content","TabContext","Box","TabList","onChange","event","newValue","orientation","variant","scrollButtons","tabList","map","index","Tab","_objectSpread","tabHeader","disableRipple","disableTouchRipple","focusRipple","TabPanel","open","type","onCloseEndpoint","name","setName","_useState3","_useState4","endpoint","setEndpoint","_useState5","_useState6","authToken","setAuthToken","_useState7","_useState8","saving","setSaving","_useState9","_useState10","invalidInputs","setInvalidInput","_useState11","_useState12","initialInputs","setInitialInputs","dispatch","useAppDispatch","initializeInput","filter","validateInput","valid","includes","_toConsumableArray","Webhook","CallToActionIcon","PendingActionsIcon","Fragment","ModalWrapper","modalOpen","onClose","titleIcon","sx","formFieldStyles","InputBoxWrapper","id","target","validity","error","label","pattern","required","LinearProgress","Button","disabled","onClick","length","trim","payload","key_values","key","arn_resource_id","api","then","res","setServerNeedsRestart","restart","setSnackBarMessage","configurationIsLoading","catch","err","setErrorSnackMessage","selectedARN","deleteLoading","setDeleteLoading","defaultWH","message","ConfirmDialog","confirmText","isOpen","isLoading","onConfirm","ConfirmDeleteIcon","confirmationContent","DialogContentText","_overrideValues$enabl","_overrideValues$endpo","_overrideValues$auth_","endpointInfo","endpointState","setEndpointState","endpointLocate","tokenLocate","enable","endpointValue","tokenValue","hasOverride","itm","env_override","overrideValues","overrideFields","PredefinedList","actionButton","paddingRight","Tooltip","tooltip","overrideEnv","placement","ConsoleIcon","auth_token","FormSwitchWrapper","e","checked","setResetConfigurationOpen","WebhookSettingslist","newEndpointOpen","setNewEndpointOpen","deleteWebhookOpen","setDeleteWebhookOpen","editWebhookOpen","setEditWebhookOpen","setSelectedARN","selectedEndpoint","setSelectedEndpoint","disableButtonFunction","wHook","element","AddEndpointModal","DeleteWebhookEndpoint","EditWebhookEndpoint","DataTable","columns","elementKey","renderFunction","EnableFilter","overrideEnabled","justifyItems","fill","TierOfflineIcon","TierOnlineIcon","endpointFilter","itemActions","idField","records","entityName","customPaperHeight","fieldBasic","settingsCommon","settingsFormContainer","gridTemplateColumns","gridGap","selectedConfiguration","_ref$className","navigate","useNavigate","selConfigTab","substring","lastIndexOf","valuesObj","setValueObj","configValues","setConfigValues","configSubsysList","setConfigSubsysList","resetConfigurationOpen","overrideEnvs","setOverrideEnvs","loadingConfig","useSelector","state","system","loadingConfigurations","configId","get","keyVals","removeEmptyFields","configuration_id","onValueChange","useCallback","resetConfigurationMOpen","ResetConfigurationModal","configurationName","closeResetModalAndRefresh","resetOpen","textAlign","paddingTop","Loader","WebhookSettings","noValidate","onSubmit","preventDefault","ConfTargetGeneric","fields","fieldsConfigurations","defaultVals","maxHeight","configName","validActiveConfig","configurationElements","containerClassName","minWidth","EditConfiguration","useDispatch","_useApi","useApi","performDownload","Blob","window","atob","DateTime","toFormat","_useApi2","isReqLoading","invokeApi","TooltipWrapper","UploadIcon","needsRestart","serverNeedsRestart","undefined","refreshPage","setRefreshPage","fileUpload","useRef","files","fileToUpload","formData","FormData","blobFile","append","ref","current","click","DownloadIcon","settingsOptionsContainer","flexWrap","border","borderRadius","backgroundColor","searchField","actionsTray","containerForHeader","PageHeaderWrapper","PageLayout","ScreenTitle","SettingsIcon","gap","ImportConfigButton","ExportConfigButton","VerticalTabs","Routes","Route","path","ConfigurationForm","configuration_label","Navigate","IAM_PAGES","component","Link","HelpBox","iconComponent","help","href","rel","PublicIcon","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","region","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","formFields","field","selectSAs","setSelectedSAs","selectedSAs","targetD","elements","overrideReturn","envItem","_defineProperty","wrapText","whiteSpace","wordWrap","deleteDialogStyles","resetLoading","setResetLoading","React"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/284.471411fa.chunk.js b/portal-ui/build/static/js/284.471411fa.chunk.js deleted file mode 100644 index b0c991121..000000000 --- a/portal-ui/build/static/js/284.471411fa.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[284],{92217:function(e,i,n){var t=n(1413),o=n(72791),a=n(61889),s=n(30829),r=n(20068),l=n(64554),c=n(11135),d=n(25787),x=n(75952),p=n(23814),u=n(78029),h=n.n(u),m=n(9534),f=n(27454),v=n(80184);i.Z=(0,d.Z)((function(e){return(0,c.Z)((0,t.Z)({},p.YI))}))((function(e){var i=e.value,n=e.label,t=void 0===n?"":n,c=e.tooltip,d=void 0===c?"":c,p=e.mode,u=void 0===p?"json":p,j=e.classes,g=e.onBeforeChange,Z=(e.readOnly,e.editorHeight),b=void 0===Z?"250px":Z;return(0,v.jsxs)(o.Fragment,{children:[(0,v.jsx)(a.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,v.jsxs)(s.Z,{className:j.inputLabel,children:[(0,v.jsx)("span",{children:t}),""!==d&&(0,v.jsx)("div",{className:j.tooltipContainer,children:(0,v.jsx)(r.Z,{title:d,placement:"top-start",children:(0,v.jsx)("div",{className:j.tooltip,children:(0,v.jsx)(x.byK,{})})})})]})}),(0,v.jsx)(a.ZP,{item:!0,xs:12,style:{maxHeight:b,overflow:"auto",border:"1px solid #eaeaea"},children:(0,v.jsx)(m.Z,{value:i,language:u,onChange:function(e){g(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:b||"initial",color:"#000000"}})}),(0,v.jsx)(a.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,v.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,v.jsx)(f.Z,{tooltip:"Copy to Clipboard",children:(0,v.jsx)(h(),{text:i,children:(0,v.jsx)(x.zxk,{type:"button",id:"copy-code-mirror",icon:(0,v.jsx)(x.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},21435:function(e,i,n){var t=n(29439),o=n(1413),a=n(72791),s=n(27391),r=n(61889),l=n(30829),c=n(20068),d=n(13400),x=n(20165),p=n(3579),u=n(11135),h=n(72455),m=n(25787),f=n(23814),v=n(75952),j=n(28182),g=n(80184),Z=(0,h.Z)((function(e){return(0,u.Z)((0,o.Z)({},f.gM))}));function b(e){var i=Z();return(0,g.jsx)(s.Z,(0,o.Z)({InputProps:{classes:i}},e))}i.Z=(0,m.Z)((function(e){return(0,u.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},f.YI),f.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var i=e.label,n=e.onChange,s=e.value,u=e.id,h=e.name,m=e.type,f=void 0===m?"text":m,Z=e.autoComplete,y=void 0===Z?"off":Z,C=e.disabled,P=void 0!==C&&C,I=e.multiline,w=void 0!==I&&I,M=e.tooltip,S=void 0===M?"":M,z=e.index,B=void 0===z?0:z,L=e.error,F=void 0===L?"":L,A=e.required,N=void 0!==A&&A,k=e.placeholder,R=void 0===k?"":k,O=e.min,E=e.max,T=e.overlayId,W=e.overlayIcon,H=void 0===W?null:W,K=e.overlayObject,V=void 0===K?null:K,_=e.extraInputProps,Y=void 0===_?{}:_,q=e.overlayAction,D=e.noLabelMinWidth,G=void 0!==D&&D,J=e.pattern,Q=void 0===J?"":J,U=e.autoFocus,X=void 0!==U&&U,$=e.classes,ee=e.className,ie=void 0===ee?"":ee,ne=e.onKeyPress,te=e.onFocus,oe=e.onPaste,ae=(0,o.Z)({"data-index":B},Y),se=(0,a.useState)(!1),re=(0,t.Z)(se,2),le=re[0],ce=re[1];"number"===f&&O&&(ae.min=O),"number"===f&&E&&(ae.max=E),""!==Q&&(ae.pattern=Q);var de=H,xe=f;return"password"===f&&null===H&&(de=le?(0,g.jsx)(x.Z,{}):(0,g.jsx)(p.Z,{}),xe=le?"text":"password"),(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)(r.ZP,{container:!0,className:(0,j.Z)(""!==ie?ie:"",""!==F?$.errorInField:$.inputBoxContainer),children:[""!==i&&(0,g.jsxs)(l.Z,{htmlFor:u,className:G?$.noMinWidthLabel:$.inputLabel,children:[(0,g.jsxs)("span",{children:[i,N?"*":""]}),""!==S&&(0,g.jsx)("div",{className:$.tooltipContainer,children:(0,g.jsx)(c.Z,{title:S,placement:"top-start",children:(0,g.jsx)("div",{className:$.tooltip,children:(0,g.jsx)(v.byK,{})})})})]}),(0,g.jsxs)("div",{className:$.textBoxContainer,children:[(0,g.jsx)(b,{id:u,name:h,fullWidth:!0,value:s,autoFocus:X,disabled:P,onChange:n,type:xe,multiline:w,autoComplete:y,inputProps:ae,error:""!==F,helperText:F,placeholder:R,className:$.inputRebase,onKeyPress:ne,onFocus:te,onPaste:oe}),de&&(0,g.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==i?"withLabel":""),children:(0,g.jsx)(d.Z,{onClick:q?function(){q()}:function(){return ce(!le)},id:T,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),V&&(0,g.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==i?"withLabel":""),children:V})]})]})})}))},25739:function(e,i,n){n(72791);var t=n(64554),o=n(50896),a=n(80184);i.Z=function(e){var i=e.children,n=e.title,s=e.helpbox,r=e.icon;return(0,a.jsxs)(t.Z,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:{md:"2fr 1.2fr",xs:"1fr"},border:"1px solid #eaeaea"},children:[(0,a.jsxs)(t.Z,{children:[(0,a.jsx)(o.Z,{icon:r,children:n}),(0,a.jsx)(t.Z,{sx:{height:16}}),i]}),s]})}},52545:function(e,i,n){n.r(i),n.d(i,{default:function(){return y}});var t=n(29439),o=n(72791),a=n(61889),s=n(64554),r=n(75952),l=n(74794),c=n(21435),d=n(80184),x=function(e){var i=e.icon,n=e.description;return(0,d.jsxs)(s.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[i," ",(0,d.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},p=function(){return(0,d.jsxs)(s.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,d.jsxs)(s.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,d.jsx)(r.M9A,{}),(0,d.jsx)("div",{children:"Learn more about Policies"})]}),(0,d.jsxs)(s.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,d.jsxs)(s.Z,{sx:{paddingBottom:"20px"},children:[(0,d.jsx)(x,{icon:(0,d.jsx)(r.v42,{}),description:"Create Policies"}),(0,d.jsxs)(s.Z,{sx:{paddingTop:"20px"},children:["MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users."," "]})]}),(0,d.jsx)(s.Z,{sx:{paddingBottom:"20px"},children:"MinIO PBAC is built for compatibility with AWS IAM policy syntax, structure, and behavior."}),(0,d.jsx)(s.Z,{sx:{paddingBottom:"20px"},children:"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default."})]})]})},u=n(92217),h=n(56087),m=n(25739),f=n(87995),v=n(57689),j=n(81551),g=n(19859),Z=n(47974),b=n(25043),y=function(){var e=(0,j.TL)(),i=(0,v.s0)(),n=(0,o.useState)(!1),x=(0,t.Z)(n,2),y=x[0],C=x[1],P=(0,o.useState)(""),I=(0,t.Z)(P,2),w=I[0],M=I[1],S=(0,o.useState)(g.L),z=(0,t.Z)(S,2),B=z[0],L=z[1],F=""!==w.trim()&&-1===w.indexOf(" ")&&""!==B.trim();return(0,d.jsx)(o.Fragment,{children:(0,d.jsxs)(a.ZP,{item:!0,xs:12,children:[(0,d.jsx)(Z.Z,{label:(0,d.jsx)(r.hbI,{label:"Policies",onClick:function(){return i(h.gA.POLICIES)}})}),(0,d.jsx)(l.Z,{children:(0,d.jsx)(m.Z,{title:"Create Policy",icon:(0,d.jsx)(r.sR0,{}),helpbox:(0,d.jsx)(p,{}),children:(0,d.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(n){n.preventDefault(),y||(C(!0),b.h.policies.addPolicy({name:w,policy:B}).then((function(e){C(!1),i("".concat(h.gA.POLICIES))})).catch((function(i){C(!1),e((0,f.Ih)(i))})))},children:(0,d.jsxs)(a.ZP,{container:!0,item:!0,spacing:1,children:[(0,d.jsx)(a.ZP,{item:!0,xs:12,children:(0,d.jsx)(c.Z,{id:"policy-name",name:"policy-name",label:"Policy Name",autoFocus:!0,value:w,error:function(e){return-1!==e.indexOf(" ")?"Policy name cannot contain spaces":""}(w),onChange:function(e){M(e.target.value)}})}),(0,d.jsx)(a.ZP,{item:!0,xs:12,children:(0,d.jsx)(u.Z,{label:"Write Policy",value:B,onBeforeChange:function(e,i,n){L(n)},editorHeight:"350px"})}),(0,d.jsx)(a.ZP,{item:!0,xs:12,textAlign:"right",children:(0,d.jsxs)(s.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[(0,d.jsx)(r.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){M(""),L("")},label:"Clear"}),(0,d.jsx)(r.zxk,{id:"save-policy",type:"submit",variant:"callAction",color:"primary",disabled:y||!F,label:"Save"})]})})]})})})})]})})}},19859:function(e,i,n){n.d(i,{L:function(){return t}});var t='{\n "Version": "2012-10-17",\n "Statement": [\n \n ]\n}'},3579:function(e,i,n){var t=n(64836);i.Z=void 0;var o=t(n(45649)),a=n(80184),s=(0,o.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");i.Z=s},20165:function(e,i,n){var t=n(64836);i.Z=void 0;var o=t(n(45649)),a=n(80184),s=(0,o.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");i.Z=s}}]); -//# sourceMappingURL=284.471411fa.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/284.471411fa.chunk.js.map b/portal-ui/build/static/js/284.471411fa.chunk.js.map deleted file mode 100644 index 1c709c623..000000000 --- a/portal-ui/build/static/js/284.471411fa.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/284.471411fa.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormLayout.tsx","screens/Console/Policies/AddPolicyHelpBox.tsx","screens/Console/Policies/AddPolicyScreen.tsx","screens/Console/Policies/utils.ts","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, CopyIcon, HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n
\n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport SectionTitle from \"./SectionTitle\";\n\ntype Props = {\n title: string;\n icon: React.ReactNode;\n helpbox?: React.ReactNode;\n children: React.ReactNode;\n};\n\nconst FormLayout: React.FC = ({ children, title, helpbox, icon }) => {\n return (\n \n \n {title}\n \n {children}\n \n\n {helpbox}\n \n );\n};\n\nexport default FormLayout;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { HelpIconFilled, IAMPoliciesIcon } from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\n\nconst AddPolicyHelpBox = () => {\n return (\n \n \n \n
Learn more about Policies
\n \n \n \n }\n description={`Create Policies`}\n />\n \n MinIO uses Policy-Based Access Control (PBAC) to define the\n authorized actions and resources to which an authenticated user has\n access. Each policy describes one or more actions and conditions\n that outline the permissions of a user or group of users.{\" \"}\n \n \n \n MinIO PBAC is built for compatibility with AWS IAM policy syntax,\n structure, and behavior.\n \n \n Each user can access only those resources and operations which are\n explicitly granted by the built-in role. MinIO denies access to any\n other resource or action by default.\n \n \n \n );\n};\n\nexport default AddPolicyHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box } from \"@mui/material\";\nimport { AddAccessRuleIcon, BackLink, Button } from \"mds\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddPolicyHelpBox from \"./AddPolicyHelpBox\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport FormLayout from \"../Common/FormLayout\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport { emptyPolicy } from \"./utils\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"../../../api\";\nimport { Error, HttpResponse, Policy } from \"../../../api/consoleApi\";\n\nconst AddPolicyScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [addLoading, setAddLoading] = useState(false);\n const [policyName, setPolicyName] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(emptyPolicy);\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((res: HttpResponse) => {\n setAddLoading(false);\n navigate(`${IAM_PAGES.POLICIES}`);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddLoading(false);\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const resetForm = () => {\n setPolicyName(\"\");\n setPolicyDefinition(\"\");\n };\n\n const validatePolicyname = (policyName: string) => {\n if (policyName.indexOf(\" \") !== -1) {\n return \"Policy name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave =\n policyName.trim() !== \"\" &&\n policyName.indexOf(\" \") === -1 &&\n policyDefinition.trim() !== \"\";\n\n return (\n \n \n navigate(IAM_PAGES.POLICIES)}\n />\n }\n />\n \n }\n helpbox={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n ) => {\n setPolicyName(e.target.value);\n }}\n />\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddPolicyScreen;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const emptyPolicy =\n \"{\\n\" +\n ' \"Version\": \"2012-10-17\",\\n' +\n ' \"Statement\": [\\n' +\n \" \\n\" +\n \" ]\\n\" +\n \"}\";\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;"],"names":["withStyles","theme","createStyles","_objectSpread","fieldBasic","_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","classes","onBeforeChange","_ref$editorHeight","readOnly","editorHeight","_jsxs","React","children","_jsx","Grid","item","xs","sx","marginBottom","InputLabel","className","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","style","maxHeight","overflow","border","CodeEditor","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","Box","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","TooltipWrapper","CopyToClipboard","text","Button","type","icon","CopyIcon","variant","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","name","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","helpbox","gap","gridTemplateColumns","md","SectionTitle","FeatureItem","description","marginRight","fontStyle","flex","borderRadius","flexFlow","fontWeight","paddingBottom","HelpIconFilled","IAMPoliciesIcon","paddingTop","dispatch","useAppDispatch","navigate","useNavigate","addLoading","setAddLoading","_useState3","_useState4","policyName","setPolicyName","_useState5","emptyPolicy","_useState6","policyDefinition","setPolicyDefinition","validSave","trim","indexOf","Fragment","PageHeaderWrapper","BackLink","IAM_PAGES","PageLayout","FormLayout","AddAccessRuleIcon","AddPolicyHelpBox","noValidate","onSubmit","e","preventDefault","api","policy","then","res","catch","err","setErrorSnackMessage","spacing","InputBoxWrapper","validatePolicyname","CodeMirrorWrapper","editor","data","textAlign","marginTop","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/284.f9dbc9d8.chunk.js b/portal-ui/build/static/js/284.f9dbc9d8.chunk.js new file mode 100644 index 000000000..4c840f669 --- /dev/null +++ b/portal-ui/build/static/js/284.f9dbc9d8.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[284],{92217:function(e,i,n){var o=n(1413),t=n(72791),a=n(61889),r=n(30829),s=n(20068),l=n(64554),c=n(11135),d=n(25787),x=n(75952),p=n(23814),u=n(78029),h=n.n(u),m=n(9534),f=n(27454),v=n(80184);i.Z=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)({},p.YI))}))((function(e){var i=e.value,n=e.label,o=void 0===n?"":n,c=e.tooltip,d=void 0===c?"":c,p=e.mode,u=void 0===p?"json":p,j=e.classes,g=e.onBeforeChange,Z=(e.readOnly,e.editorHeight),y=void 0===Z?"250px":Z;return(0,v.jsxs)(t.Fragment,{children:[(0,v.jsx)(a.ZP,{item:!0,xs:12,sx:{marginBottom:"10px"},children:(0,v.jsxs)(r.Z,{className:j.inputLabel,children:[(0,v.jsx)("span",{children:o}),""!==d&&(0,v.jsx)("div",{className:j.tooltipContainer,children:(0,v.jsx)(s.Z,{title:d,placement:"top-start",children:(0,v.jsx)("div",{className:j.tooltip,children:(0,v.jsx)(x.byK,{})})})})]})}),(0,v.jsx)(a.ZP,{item:!0,xs:12,style:{maxHeight:y,overflow:"auto",border:"1px solid #eaeaea"},children:(0,v.jsx)(m.Z,{value:i,language:u,onChange:function(e){g(null,null,e.target.value)},id:"code_wrapper",padding:15,style:{fontSize:12,backgroundColor:"#fefefe",fontFamily:"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace",minHeight:y||"initial",color:"#000000"}})}),(0,v.jsx)(a.ZP,{item:!0,xs:12,sx:{background:"#f7f7f7",border:"1px solid #eaeaea",borderTop:0},children:(0,v.jsx)(l.Z,{sx:{display:"flex",alignItems:"center",padding:"2px",paddingRight:"5px",justifyContent:"flex-end","& button":{height:"26px",width:"26px",padding:"2px"," .min-icon":{marginLeft:"0"}}},children:(0,v.jsx)(f.Z,{tooltip:"Copy to Clipboard",children:(0,v.jsx)(h(),{text:i,children:(0,v.jsx)(x.zxk,{type:"button",id:"copy-code-mirror",icon:(0,v.jsx)(x.TIy,{}),color:"primary",variant:"regular"})})})})})]})}))},21435:function(e,i,n){var o=n(29439),t=n(1413),a=n(72791),r=n(27391),s=n(61889),l=n(30829),c=n(20068),d=n(13400),x=n(20165),p=n(3579),u=n(11135),h=n(72455),m=n(25787),f=n(23814),v=n(75952),j=n(28182),g=n(80184),Z=(0,h.Z)((function(e){return(0,u.Z)((0,t.Z)({},f.gM))}));function y(e){var i=Z();return(0,g.jsx)(r.Z,(0,t.Z)({InputProps:{classes:i}},e))}i.Z=(0,m.Z)((function(e){return(0,u.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},f.YI),f.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var i=e.label,n=e.onChange,r=e.value,u=e.id,h=e.name,m=e.type,f=void 0===m?"text":m,Z=e.autoComplete,b=void 0===Z?"off":Z,C=e.disabled,P=void 0!==C&&C,I=e.multiline,w=void 0!==I&&I,M=e.tooltip,S=void 0===M?"":M,z=e.index,B=void 0===z?0:z,L=e.error,F=void 0===L?"":L,A=e.required,k=void 0!==A&&A,N=e.placeholder,R=void 0===N?"":N,O=e.min,T=e.max,E=e.overlayId,W=e.overlayIcon,H=void 0===W?null:W,K=e.overlayObject,V=void 0===K?null:K,_=e.extraInputProps,Y=void 0===_?{}:_,q=e.overlayAction,D=e.noLabelMinWidth,G=void 0!==D&&D,J=e.pattern,Q=void 0===J?"":J,U=e.autoFocus,X=void 0!==U&&U,$=e.classes,ee=e.className,ie=void 0===ee?"":ee,ne=e.onKeyPress,oe=e.onFocus,te=e.onPaste,ae=(0,t.Z)({"data-index":B},Y),re=(0,a.useState)(!1),se=(0,o.Z)(re,2),le=se[0],ce=se[1];"number"===f&&O&&(ae.min=O),"number"===f&&T&&(ae.max=T),""!==Q&&(ae.pattern=Q);var de=H,xe=f;return"password"===f&&null===H&&(de=le?(0,g.jsx)(x.Z,{}):(0,g.jsx)(p.Z,{}),xe=le?"text":"password"),(0,g.jsx)(a.Fragment,{children:(0,g.jsxs)(s.ZP,{container:!0,className:(0,j.Z)(""!==ie?ie:"",""!==F?$.errorInField:$.inputBoxContainer),children:[""!==i&&(0,g.jsxs)(l.Z,{htmlFor:u,className:G?$.noMinWidthLabel:$.inputLabel,children:[(0,g.jsxs)("span",{children:[i,k?"*":""]}),""!==S&&(0,g.jsx)("div",{className:$.tooltipContainer,children:(0,g.jsx)(c.Z,{title:S,placement:"top-start",children:(0,g.jsx)("div",{className:$.tooltip,children:(0,g.jsx)(v.byK,{})})})})]}),(0,g.jsxs)("div",{className:$.textBoxContainer,children:[(0,g.jsx)(y,{id:u,name:h,fullWidth:!0,value:r,autoFocus:X,disabled:P,onChange:n,type:xe,multiline:w,autoComplete:b,inputProps:ae,error:""!==F,helperText:F,placeholder:R,className:$.inputRebase,onKeyPress:ne,onFocus:oe,onPaste:te}),de&&(0,g.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==i?"withLabel":""),children:(0,g.jsx)(d.Z,{onClick:q?function(){q()}:function(){return ce(!le)},id:E,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),V&&(0,g.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==i?"withLabel":""),children:V})]})]})})}))},25739:function(e,i,n){n(72791);var o=n(64554),t=n(50896),a=n(80184);i.Z=function(e){var i=e.children,n=e.title,r=e.helpbox,s=e.icon;return(0,a.jsxs)(o.Z,{sx:{display:"grid",padding:"25px",gap:"25px",gridTemplateColumns:{md:"2fr 1.2fr",xs:"1fr"},border:"1px solid #eaeaea"},children:[(0,a.jsxs)(o.Z,{children:[(0,a.jsx)(t.Z,{icon:s,children:n}),(0,a.jsx)(o.Z,{sx:{height:16}}),i]}),r]})}},52545:function(e,i,n){n.r(i),n.d(i,{default:function(){return b}});var o=n(29439),t=n(72791),a=n(61889),r=n(64554),s=n(75952),l=n(74794),c=n(21435),d=n(80184),x=function(e){var i=e.icon,n=e.description;return(0,d.jsxs)(r.Z,{sx:{display:"flex","& .min-icon":{marginRight:"10px",height:"23px",width:"23px",marginBottom:"10px"}},children:[i," ",(0,d.jsx)("div",{style:{fontSize:"14px",fontStyle:"italic",color:"#5E5E5E"},children:n})]})},p=function(){return(0,d.jsxs)(r.Z,{sx:{flex:1,border:"1px solid #eaeaea",borderRadius:"2px",display:"flex",flexFlow:"column",padding:"20px"},children:[(0,d.jsxs)(r.Z,{sx:{fontSize:"16px",fontWeight:600,display:"flex",alignItems:"center",marginBottom:"16px",paddingBottom:"20px","& .min-icon":{height:"21px",width:"21px",marginRight:"15px"}},children:[(0,d.jsx)(s.M9A,{}),(0,d.jsx)("div",{children:"Learn more about Policies"})]}),(0,d.jsxs)(r.Z,{sx:{fontSize:"14px",marginBottom:"15px"},children:[(0,d.jsxs)(r.Z,{sx:{paddingBottom:"20px"},children:[(0,d.jsx)(x,{icon:(0,d.jsx)(s.v42,{}),description:"Create Policies"}),(0,d.jsxs)(r.Z,{sx:{paddingTop:"20px"},children:["MinIO uses Policy-Based Access Control (PBAC) to define the authorized actions and resources to which an authenticated user has access. Each policy describes one or more actions and conditions that outline the permissions of a user or group of users."," "]})]}),(0,d.jsx)(r.Z,{sx:{paddingBottom:"20px"},children:"MinIO PBAC is built for compatibility with AWS IAM policy syntax, structure, and behavior."}),(0,d.jsx)(r.Z,{sx:{paddingBottom:"20px"},children:"Each user can access only those resources and operations which are explicitly granted by the built-in role. MinIO denies access to any other resource or action by default."})]})]})},u=n(92217),h=n(56087),m=n(25739),f=n(87995),v=n(57689),j=n(81551),g=n(19859),Z=n(47974),y=n(25043),b=function(){var e=(0,j.TL)(),i=(0,v.s0)(),n=(0,t.useState)(!1),x=(0,o.Z)(n,2),b=x[0],C=x[1],P=(0,t.useState)(""),I=(0,o.Z)(P,2),w=I[0],M=I[1],S=(0,t.useState)(g.L),z=(0,o.Z)(S,2),B=z[0],L=z[1],F=""!==w.trim()&&-1===w.indexOf(" ")&&""!==B.trim();return(0,d.jsx)(t.Fragment,{children:(0,d.jsxs)(a.ZP,{item:!0,xs:12,children:[(0,d.jsx)(Z.Z,{label:(0,d.jsx)(s.hbI,{label:"Policies",onClick:function(){return i(h.gA.POLICIES)}})}),(0,d.jsx)(l.Z,{children:(0,d.jsx)(m.Z,{title:"Create Policy",icon:(0,d.jsx)(s.sR0,{}),helpbox:(0,d.jsx)(p,{}),children:(0,d.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(n){n.preventDefault(),b||(C(!0),y.h.policies.addPolicy({name:w,policy:B}).then((function(e){C(!1),i("".concat(h.gA.POLICIES))})).catch((function(i){C(!1),e((0,f.Ih)({errorMessage:"There was an error creating a Policy ",detailedError:"There was an error creating a Policy: "+(i.error.detailedMessage||"")+". Please check Policy syntax."}))})))},children:(0,d.jsxs)(a.ZP,{container:!0,item:!0,spacing:1,children:[(0,d.jsx)(a.ZP,{item:!0,xs:12,children:(0,d.jsx)(c.Z,{id:"policy-name",name:"policy-name",label:"Policy Name",autoFocus:!0,value:w,error:function(e){return-1!==e.indexOf(" ")?"Policy name cannot contain spaces":""}(w),onChange:function(e){M(e.target.value)}})}),(0,d.jsx)(a.ZP,{item:!0,xs:12,children:(0,d.jsx)(u.Z,{label:"Write Policy",value:B,onBeforeChange:function(e,i,n){L(n)},editorHeight:"350px"})}),(0,d.jsx)(a.ZP,{item:!0,xs:12,textAlign:"right",children:(0,d.jsxs)(r.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"flex-end",marginTop:"20px",gap:"15px"},children:[(0,d.jsx)(s.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){M(""),L("")},label:"Clear"}),(0,d.jsx)(s.zxk,{id:"save-policy",type:"submit",variant:"callAction",color:"primary",disabled:b||!F,label:"Save"})]})})]})})})})]})})}},19859:function(e,i,n){n.d(i,{L:function(){return o}});var o='{\n "Version": "2012-10-17",\n "Statement": [\n \n ]\n}'},3579:function(e,i,n){var o=n(64836);i.Z=void 0;var t=o(n(45649)),a=n(80184),r=(0,t.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");i.Z=r},20165:function(e,i,n){var o=n(64836);i.Z=void 0;var t=o(n(45649)),a=n(80184),r=(0,t.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");i.Z=r}}]); +//# sourceMappingURL=284.f9dbc9d8.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/284.f9dbc9d8.chunk.js.map b/portal-ui/build/static/js/284.f9dbc9d8.chunk.js.map new file mode 100644 index 000000000..f5405b9a3 --- /dev/null +++ b/portal-ui/build/static/js/284.f9dbc9d8.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/284.f9dbc9d8.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormLayout.tsx","screens/Console/Policies/AddPolicyHelpBox.tsx","screens/Console/Policies/AddPolicyScreen.tsx","screens/Console/Policies/utils.ts","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, CopyIcon, HelpIcon } from \"mds\";\nimport { fieldBasic } from \"../common/styleLibrary\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport CodeEditor from \"@uiw/react-textarea-code-editor\";\nimport TooltipWrapper from \"../../TooltipWrapper/TooltipWrapper\";\n\ninterface ICodeWrapper {\n value: string;\n label?: string;\n mode?: string;\n tooltip?: string;\n classes: any;\n onChange?: (editor: any, data: any, value: string) => any;\n onBeforeChange: (editor: any, data: any, value: string) => any;\n readOnly?: boolean;\n editorHeight?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n });\n\nconst CodeMirrorWrapper = ({\n value,\n label = \"\",\n tooltip = \"\",\n mode = \"json\",\n classes,\n onBeforeChange,\n readOnly = false,\n editorHeight = \"250px\",\n}: ICodeWrapper) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n\n \n {\n onBeforeChange(null, null, evn.target.value);\n }}\n id={\"code_wrapper\"}\n padding={15}\n style={{\n fontSize: 12,\n backgroundColor: \"#fefefe\",\n fontFamily:\n \"ui-monospace,SFMono-Regular,SF Mono,Consolas,Liberation Mono,Menlo,monospace\",\n minHeight: editorHeight || \"initial\",\n color: \"#000000\",\n }}\n />\n \n \n \n \n \n }\n color={\"primary\"}\n variant={\"regular\"}\n />\n \n \n \n \n
\n );\n};\n\nexport default withStyles(styles)(CodeMirrorWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport SectionTitle from \"./SectionTitle\";\n\ntype Props = {\n title: string;\n icon: React.ReactNode;\n helpbox?: React.ReactNode;\n children: React.ReactNode;\n};\n\nconst FormLayout: React.FC = ({ children, title, helpbox, icon }) => {\n return (\n \n \n {title}\n \n {children}\n \n\n {helpbox}\n \n );\n};\n\nexport default FormLayout;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { HelpIconFilled, IAMPoliciesIcon } from \"mds\";\n\nconst FeatureItem = ({\n icon,\n description,\n}: {\n icon: any;\n description: string;\n}) => {\n return (\n \n {icon}{\" \"}\n
\n {description}\n
\n \n );\n};\n\nconst AddPolicyHelpBox = () => {\n return (\n \n \n \n
Learn more about Policies
\n \n \n \n }\n description={`Create Policies`}\n />\n \n MinIO uses Policy-Based Access Control (PBAC) to define the\n authorized actions and resources to which an authenticated user has\n access. Each policy describes one or more actions and conditions\n that outline the permissions of a user or group of users.{\" \"}\n \n \n \n MinIO PBAC is built for compatibility with AWS IAM policy syntax,\n structure, and behavior.\n \n \n Each user can access only those resources and operations which are\n explicitly granted by the built-in role. MinIO denies access to any\n other resource or action by default.\n \n \n \n );\n};\n\nexport default AddPolicyHelpBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box } from \"@mui/material\";\nimport { AddAccessRuleIcon, BackLink, Button } from \"mds\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport AddPolicyHelpBox from \"./AddPolicyHelpBox\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport FormLayout from \"../Common/FormLayout\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useAppDispatch } from \"../../../store\";\nimport { emptyPolicy } from \"./utils\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { api } from \"../../../api\";\nimport { Error, HttpResponse, Policy } from \"../../../api/consoleApi\";\n\nconst AddPolicyScreen = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const [addLoading, setAddLoading] = useState(false);\n const [policyName, setPolicyName] = useState(\"\");\n const [policyDefinition, setPolicyDefinition] = useState(emptyPolicy);\n\n const addRecord = (event: React.FormEvent) => {\n event.preventDefault();\n if (addLoading) {\n return;\n }\n setAddLoading(true);\n api.policies\n .addPolicy({\n name: policyName,\n policy: policyDefinition,\n })\n .then((res: HttpResponse) => {\n setAddLoading(false);\n navigate(`${IAM_PAGES.POLICIES}`);\n })\n .catch((err: HttpResponse) => {\n setAddLoading(false);\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"There was an error creating a Policy \",\n detailedError:\n \"There was an error creating a Policy: \" +\n (err.error.detailedMessage || \"\") +\n \". Please check Policy syntax.\",\n })\n );\n });\n };\n\n const resetForm = () => {\n setPolicyName(\"\");\n setPolicyDefinition(\"\");\n };\n\n const validatePolicyname = (policyName: string) => {\n if (policyName.indexOf(\" \") !== -1) {\n return \"Policy name cannot contain spaces\";\n } else return \"\";\n };\n\n const validSave =\n policyName.trim() !== \"\" &&\n policyName.indexOf(\" \") === -1 &&\n policyDefinition.trim() !== \"\";\n\n return (\n \n \n navigate(IAM_PAGES.POLICIES)}\n />\n }\n />\n \n }\n helpbox={}\n >\n ) => {\n addRecord(e);\n }}\n >\n \n \n ) => {\n setPolicyName(e.target.value);\n }}\n />\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AddPolicyScreen;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const emptyPolicy =\n \"{\\n\" +\n ' \"Version\": \"2012-10-17\",\\n' +\n ' \"Statement\": [\\n' +\n \" \\n\" +\n \" ]\\n\" +\n \"}\";\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;"],"names":["withStyles","theme","createStyles","_objectSpread","fieldBasic","_ref","value","_ref$label","label","_ref$tooltip","tooltip","_ref$mode","mode","classes","onBeforeChange","_ref$editorHeight","readOnly","editorHeight","_jsxs","React","children","_jsx","Grid","item","xs","sx","marginBottom","InputLabel","className","inputLabel","tooltipContainer","Tooltip","title","placement","HelpIcon","style","maxHeight","overflow","border","CodeEditor","language","onChange","evn","target","id","padding","fontSize","backgroundColor","fontFamily","minHeight","color","background","borderTop","Box","display","alignItems","paddingRight","justifyContent","height","width","marginLeft","TooltipWrapper","CopyToClipboard","text","Button","type","icon","CopyIcon","variant","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","name","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","disabled","_ref$multiline","multiline","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","_useState","useState","_useState2","_slicedToArray","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","fullWidth","helperText","inputRebase","concat","IconButton","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","helpbox","gap","gridTemplateColumns","md","SectionTitle","FeatureItem","description","marginRight","fontStyle","flex","borderRadius","flexFlow","fontWeight","paddingBottom","HelpIconFilled","IAMPoliciesIcon","paddingTop","dispatch","useAppDispatch","navigate","useNavigate","addLoading","setAddLoading","_useState3","_useState4","policyName","setPolicyName","_useState5","emptyPolicy","_useState6","policyDefinition","setPolicyDefinition","validSave","trim","indexOf","Fragment","PageHeaderWrapper","BackLink","IAM_PAGES","PageLayout","FormLayout","AddAccessRuleIcon","AddPolicyHelpBox","noValidate","onSubmit","e","preventDefault","api","policy","then","res","catch","err","setErrorSnackMessage","errorMessage","detailedError","detailedMessage","spacing","InputBoxWrapper","validatePolicyname","CodeMirrorWrapper","editor","data","textAlign","marginTop","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4619.000c3900.chunk.js b/portal-ui/build/static/js/4619.000c3900.chunk.js new file mode 100644 index 000000000..242648f61 --- /dev/null +++ b/portal-ui/build/static/js/4619.000c3900.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4619],{94619:function(e,t,i){i.r(t);var a=i(29439),n=i(1413),l=i(72791),o=i(56028),s=i(61889),r=i(75952),c=i(21435),d=i(11135),u=i(25787),p=i(23814),x=i(81207),h=i(90673),v=i(87995),f=i(81551),m=i(80184);t.default=(0,u.Z)((function(e){return(0,d.Z)((0,n.Z)((0,n.Z)({},p.DF),p.ID))}))((function(e){var t=e.modalOpen,i=e.onClose,n=e.classes,d=e.bucket,u=e.prefilledRoute,p=(0,f.TL)(),Z=(0,l.useState)(""),b=(0,a.Z)(Z,2),j=b[0],y=b[1],C=(0,l.useState)("readonly"),g=(0,a.Z)(C,2),P=g[0],k=g[1];(0,l.useEffect)((function(){u&&y(u)}),[u]);return(0,m.jsx)(o.Z,{modalOpen:t,title:"Add Anonymous Access Rule",onClose:i,titleIcon:(0,m.jsx)(r.sR0,{}),children:(0,m.jsxs)(s.ZP,{container:!0,children:[(0,m.jsx)(s.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,m.jsx)(c.Z,{value:j,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:function(e){y(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."})}),(0,m.jsx)(s.ZP,{item:!0,xs:12,children:(0,m.jsx)(h.Z,{id:"access",name:"Access",onChange:function(e){k(e.target.value)},label:"Access",value:P,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1})}),(0,m.jsxs)(s.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,m.jsx)(r.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){y(""),k("readonly")},label:"Clear"}),(0,m.jsx)(r.zxk,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===j.trim(),onClick:function(){x.Z.invoke("PUT","/api/v1/bucket/".concat(d,"/access-rules"),{prefix:j,access:P}).then((function(e){p((0,v.y1)("Access Rule added successfully")),i()})).catch((function(e){p((0,v.Ih)(e)),i()}))},label:"Save"})]})]})})}))},21435:function(e,t,i){var a=i(29439),n=i(1413),l=i(72791),o=i(27391),s=i(61889),r=i(30829),c=i(20068),d=i(13400),u=i(20165),p=i(3579),x=i(11135),h=i(72455),v=i(25787),f=i(23814),m=i(75952),Z=i(28182),b=i(80184),j=(0,h.Z)((function(e){return(0,x.Z)((0,n.Z)({},f.gM))}));function y(e){var t=j();return(0,b.jsx)(o.Z,(0,n.Z)({InputProps:{classes:t}},e))}t.Z=(0,v.Z)((function(e){return(0,x.Z)((0,n.Z)((0,n.Z)((0,n.Z)({},f.YI),f.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,i=e.onChange,o=e.value,x=e.id,h=e.name,v=e.type,f=void 0===v?"text":v,j=e.autoComplete,C=void 0===j?"off":j,g=e.disabled,P=void 0!==g&&g,k=e.multiline,w=void 0!==k&&k,N=e.tooltip,F=void 0===N?"":N,A=e.index,I=void 0===A?0:A,R=e.error,z=void 0===R?"":R,L=e.required,M=void 0!==L&&L,T=e.placeholder,W=void 0===T?"":T,B=e.min,E=e.max,S=e.overlayId,H=e.overlayIcon,K=void 0===H?null:H,O=e.overlayObject,D=void 0===O?null:O,Y=e.extraInputProps,_=void 0===Y?{}:Y,q=e.overlayAction,G=e.noLabelMinWidth,U=void 0!==G&&G,V=e.pattern,J=void 0===V?"":V,Q=e.autoFocus,X=void 0!==Q&&Q,$=e.classes,ee=e.className,te=void 0===ee?"":ee,ie=e.onKeyPress,ae=e.onFocus,ne=e.onPaste,le=(0,n.Z)({"data-index":I},_),oe=(0,l.useState)(!1),se=(0,a.Z)(oe,2),re=se[0],ce=se[1];"number"===f&&B&&(le.min=B),"number"===f&&E&&(le.max=E),""!==J&&(le.pattern=J);var de=K,ue=f;return"password"===f&&null===K&&(de=re?(0,b.jsx)(u.Z,{}):(0,b.jsx)(p.Z,{}),ue=re?"text":"password"),(0,b.jsx)(l.Fragment,{children:(0,b.jsxs)(s.ZP,{container:!0,className:(0,Z.Z)(""!==te?te:"",""!==z?$.errorInField:$.inputBoxContainer),children:[""!==t&&(0,b.jsxs)(r.Z,{htmlFor:x,className:U?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[t,M?"*":""]}),""!==F&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(c.Z,{title:F,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(m.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(y,{id:x,name:h,fullWidth:!0,value:o,autoFocus:X,disabled:P,onChange:i,type:ue,multiline:w,autoComplete:C,inputProps:le,error:""!==z,helperText:z,placeholder:W,className:$.inputRebase,onKeyPress:ie,onFocus:ae,onPaste:ne}),de&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,b.jsx)(d.Z,{onClick:q?function(){q()}:function(){return ce(!re)},id:S,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),D&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:D})]})]})})}))},90673:function(e,t,i){var a=i(1413),n=i(72791),l=i(61889),o=i(4834),s=i(30829),r=i(20068),c=i(68096),d=i(58406),u=i(77865),p=i(11135),x=i(25787),h=i(23814),v=i(75952),f=i(80184),m=(0,x.Z)((function(e){return(0,p.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(o.ZP);t.Z=(0,x.Z)((function(e){return(0,p.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},h.YI),h.Hr),{},{fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var t=e.classes,i=e.id,a=e.name,o=e.onChange,p=e.options,x=e.label,h=e.tooltip,Z=void 0===h?"":h,b=e.value,j=e.disabled,y=void 0!==j&&j;return(0,f.jsx)(n.Fragment,{children:(0,f.jsxs)(l.ZP,{item:!0,xs:12,className:t.fieldContainer,children:[""!==x&&(0,f.jsxs)(s.Z,{htmlFor:i,className:t.inputLabel,children:[(0,f.jsx)("span",{children:x}),""!==Z&&(0,f.jsx)("div",{className:t.tooltipContainer,children:(0,f.jsx)(r.Z,{title:Z,placement:"top-start",children:(0,f.jsx)("div",{className:t.tooltip,children:(0,f.jsx)(v.byK,{})})})})]}),(0,f.jsx)(c.Z,{fullWidth:!0,children:(0,f.jsx)(d.Z,{id:i,name:a,value:b,onChange:o,input:(0,f.jsx)(m,{}),disabled:y,children:p.map((function(e){return(0,f.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(a,"-").concat(e.label))}))})})]})})}))},3579:function(e,t,i){var a=i(64836);t.Z=void 0;var n=a(i(45649)),l=i(80184),o=(0,n.default)((0,l.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=o},20165:function(e,t,i){var a=i(64836);t.Z=void 0;var n=a(i(45649)),l=i(80184),o=(0,n.default)((0,l.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=o}}]); +//# sourceMappingURL=4619.000c3900.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4619.000c3900.chunk.js.map b/portal-ui/build/static/js/4619.000c3900.chunk.js.map new file mode 100644 index 000000000..a0257c2ca --- /dev/null +++ b/portal-ui/build/static/js/4619.000c3900.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/4619.000c3900.chunk.js","mappings":"4RA4JA,WAAeA,EAAAA,EAAAA,IA9GA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTC,EAAAA,IACAC,EAAAA,IACF,GA0GL,EAxGsB,SAAHC,GAMI,IALrBC,EAASD,EAATC,UACAC,EAAOF,EAAPE,QACAC,EAAOH,EAAPG,QACAC,EAAMJ,EAANI,OACAC,EAAcL,EAAdK,eAEMC,GAAWC,EAAAA,EAAAA,MAEjBC,GAA4BC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAjCI,EAAMF,EAAA,GAAEG,EAASH,EAAA,GACxBI,GAA4CL,EAAAA,EAAAA,UAAc,YAAWM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA9DE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,IAExCG,EAAAA,EAAAA,YAAU,WACJb,GACFQ,EAAUR,EAEd,GAAG,CAACA,IA6BJ,OACEc,EAAAA,EAAAA,KAACC,EAAAA,EAAY,CACXnB,UAAWA,EACXoB,MAAM,4BACNnB,QAASA,EACToB,WAAWH,EAAAA,EAAAA,KAACI,EAAAA,IAAiB,IAAIC,UAEjCC,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CAACC,WAAS,EAAAH,SAAA,EACbL,EAAAA,EAAAA,KAACO,EAAAA,GAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,UAAW3B,EAAQ4B,aAAaP,UACjDL,EAAAA,EAAAA,KAACa,EAAAA,EAAe,CACdC,MAAOrB,EACPsB,MAAO,SACPC,GAAI,SACJC,KAAM,SACNC,YAAa,eACbC,SAAU,SAACC,GACT1B,EAAU0B,EAAEC,OAAOP,MACrB,EACAQ,QACE,6SAINtB,EAAAA,EAAAA,KAACO,EAAAA,GAAI,CAACE,MAAI,EAACC,GAAI,GAAGL,UAChBL,EAAAA,EAAAA,KAACuB,EAAAA,EAAa,CACZP,GAAG,SACHC,KAAK,SACLE,SAAU,SAACC,GACTtB,EAAkBsB,EAAEC,OAAOP,MAC7B,EACAC,MAAM,SACND,MAAOjB,EACP2B,QA3DY,CACpB,CAAET,MAAO,WAAYD,MAAO,YAC5B,CAAEC,MAAO,YAAaD,MAAO,aAC7B,CAAEC,MAAO,YAAaD,MAAO,cAyDrBW,UAAU,OAGdnB,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,UAAW3B,EAAQ0C,eAAerB,SAAA,EACnDL,EAAAA,EAAAA,KAAC2B,EAAAA,IAAM,CACLX,GAAI,QACJY,KAAK,SACLC,QAAQ,UACRC,QA9DQ,WAChBpC,EAAU,IACVI,EAAkB,WACpB,EA4DUiB,MAAO,WAGTf,EAAAA,EAAAA,KAAC2B,EAAAA,IAAM,CACLX,GAAI,kBACJY,KAAK,SACLC,QAAQ,aACRJ,SAA4B,KAAlBhC,EAAOsC,OACjBD,QAlEY,WACpBE,EAAAA,EAAAA,OACU,MAAM,kBAADC,OAAoBhD,EAAM,iBAAiB,CACtDQ,OAAQA,EACRyC,OAAQrC,IAETsC,MAAK,SAACC,GACLjD,GAASkD,EAAAA,EAAAA,IAAmB,mCAC5BtD,GACF,IACCuD,OAAM,SAACC,GACNpD,GAASqD,EAAAA,EAAAA,IAAqBD,IAC9BxD,GACF,GACJ,EAqDUgC,MAAO,gBAMnB,G,qNC5DM0B,GAAcC,EAAAA,EAAAA,IAAW,SAAClE,GAAY,OAC1CC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,GAAC,CAAC,EACTiE,EAAAA,IACH,IAGJ,SAASC,EAAWC,GAClB,IAAM7D,EAAUyD,IAEhB,OACEzC,EAAAA,EAAAA,KAAC8C,EAAAA,GAASpE,EAAAA,EAAAA,GAAA,CACRqE,WAAY,CAAE/D,QAAAA,IACV6D,GAGV,CAwJA,KAAetE,EAAAA,EAAAA,IA7LA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTsE,EAAAA,IACAC,EAAAA,IAAa,IAChBC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,MAGR,GAyKL,EAtJwB,SAAH1E,GA8BC,IA7BpBkC,EAAKlC,EAALkC,MACAI,EAAQtC,EAARsC,SACAL,EAAKjC,EAALiC,MACAE,EAAEnC,EAAFmC,GACAC,EAAIpC,EAAJoC,KAAIyC,EAAA7E,EACJ+C,KAAAA,OAAI,IAAA8B,EAAG,OAAMA,EAAAC,EAAA9E,EACb+E,aAAAA,OAAY,IAAAD,EAAG,MAAKA,EAAAE,EAAAhF,EACpB4C,SAAAA,OAAQ,IAAAoC,GAAQA,EAAAC,EAAAjF,EAChBkF,UAAAA,OAAS,IAAAD,GAAQA,EAAAE,EAAAnF,EACjByC,QAAAA,OAAO,IAAA0C,EAAG,GAAEA,EAAAC,EAAApF,EACZqF,MAAAA,OAAK,IAAAD,EAAG,EAACA,EAAAE,EAAAtF,EACTuF,MAAAA,OAAK,IAAAD,EAAG,GAAEA,EAAAE,EAAAxF,EACVyF,SAAAA,OAAQ,IAAAD,GAAQA,EAAAE,EAAA1F,EAChBqC,YAAAA,OAAW,IAAAqD,EAAG,GAAEA,EAChBC,EAAG3F,EAAH2F,IACAC,EAAG5F,EAAH4F,IACAC,EAAS7F,EAAT6F,UAASC,EAAA9F,EACT+F,YAAAA,OAAW,IAAAD,EAAG,KAAIA,EAAAE,EAAAhG,EAClBiG,cAAAA,OAAa,IAAAD,EAAG,KAAIA,EAAAE,EAAAlG,EACpBmG,gBAAAA,OAAe,IAAAD,EAAG,CAAC,EAACA,EACpB1B,EAAaxE,EAAbwE,cAAa4B,EAAApG,EACbqG,gBAAAA,OAAe,IAAAD,GAAQA,EAAAE,EAAAtG,EACvBuG,QAAAA,OAAO,IAAAD,EAAG,GAAEA,EAAAE,EAAAxG,EACZyG,UAAAA,OAAS,IAAAD,GAAQA,EACjBrG,EAAOH,EAAPG,QAAOuG,GAAA1G,EACP8B,UAAAA,QAAS,IAAA4E,GAAG,GAAEA,GACdC,GAAU3G,EAAV2G,WACAC,GAAO5G,EAAP4G,QACAC,GAAO7G,EAAP6G,QAEIC,IAAejH,EAAAA,EAAAA,GAAA,CAAK,aAAcwF,GAAUc,GAChD3F,IAA8CC,EAAAA,EAAAA,WAAkB,GAAMC,IAAAC,EAAAA,EAAAA,GAAAH,GAAA,GAA/DuG,GAAerG,GAAA,GAAEsG,GAAkBtG,GAAA,GAE7B,WAATqC,GAAqB4C,IACvBmB,GAAgB,IAAInB,GAGT,WAAT5C,GAAqB6C,IACvBkB,GAAgB,IAAIlB,GAGN,KAAZW,IACFO,GAAoB,QAAIP,GAG1B,IAAIU,GAAsBlB,EACtBmB,GAAsBnE,EAW1B,MATa,aAATA,GAAuC,OAAhBgD,IACzBkB,GAAsBF,IACpB5F,EAAAA,EAAAA,KAACgG,EAAAA,EAAiB,KAElBhG,EAAAA,EAAAA,KAACiG,EAAAA,EAAgB,IAEnBF,GAAsBH,GAAkB,OAAS,aAIjD5F,EAAAA,EAAAA,KAACkG,EAAAA,SAAc,CAAA7F,UACbC,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CACHC,WAAS,EACTG,WAAWwF,EAAAA,EAAAA,GACK,KAAdxF,GAAmBA,GAAY,GACrB,KAAVyD,EAAepF,EAAQoH,aAAepH,EAAQqH,mBAC9ChG,SAAA,CAES,KAAVU,IACCT,EAAAA,EAAAA,MAACgG,EAAAA,EAAU,CACTC,QAASvF,EACTL,UACEuE,EAAkBlG,EAAQwH,gBAAkBxH,EAAQyH,WACrDpG,SAAA,EAEDC,EAAAA,EAAAA,MAAA,QAAAD,SAAA,CACGU,EACAuD,EAAW,IAAM,MAEP,KAAZhD,IACCtB,EAAAA,EAAAA,KAAA,OAAKW,UAAW3B,EAAQ0H,iBAAiBrG,UACvCL,EAAAA,EAAAA,KAAC2G,EAAAA,EAAO,CAACzG,MAAOoB,EAASsF,UAAU,YAAWvG,UAC5CL,EAAAA,EAAAA,KAAA,OAAKW,UAAW3B,EAAQsC,QAAQjB,UAC9BL,EAAAA,EAAAA,KAAC6G,EAAAA,IAAQ,cAQrBvG,EAAAA,EAAAA,MAAA,OAAKK,UAAW3B,EAAQkE,iBAAiB7C,SAAA,EACvCL,EAAAA,EAAAA,KAAC4C,EAAU,CACT5B,GAAIA,EACJC,KAAMA,EACN6F,WAAS,EACThG,MAAOA,EACPwE,UAAWA,EACX7D,SAAUA,EACVN,SAAUA,EACVS,KAAMmE,GACNhC,UAAWA,EACXH,aAAcA,EACd+B,WAAYA,GACZvB,MAAiB,KAAVA,EACP2C,WAAY3C,EACZlD,YAAaA,EACbP,UAAW3B,EAAQgI,YACnBxB,WAAYA,GACZC,QAASA,GACTC,QAASA,KAEVI,KACC9F,EAAAA,EAAAA,KAAA,OACEW,UAAS,GAAAsB,OAAKjD,EAAQqE,cAAa,KAAApB,OACvB,KAAVlB,EAAe,YAAc,IAC5BV,UAEHL,EAAAA,EAAAA,KAACiH,EAAAA,EAAU,CACTnF,QACEuB,EACI,WACEA,GACF,EACA,kBAAMwC,IAAoBD,GAAgB,EAEhD5E,GAAI0D,EACJwC,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAAMhH,SAEzByF,OAINhB,IACC9E,EAAAA,EAAAA,KAAA,OACEW,UAAS,GAAAsB,OAAKjD,EAAQqE,cAAa,KAAApB,OACvB,KAAVlB,EAAe,YAAc,IAC5BV,SAEFyE,WAOf,G,oLCtMMwC,GAAe/I,EAAAA,EAAAA,IAAW,SAACC,GAAY,OAC3CC,EAAAA,EAAAA,GAAa,CACX8I,KAAM,CACJC,OAAQ,GACRC,WAAY,EACZ,YAAa,CACXC,UAAWlJ,EAAMmJ,QAAQ,KAG7BC,MAAO,CACLJ,OAAQ,GACRpE,SAAU,WACVyE,MAAO,UACPC,SAAU,GACVC,WAAY,IACZC,QAAS,qBACTC,OAAQ,oBACRC,aAAc,EACdC,QAAS,OACTC,WAAY,SACZ,UAAW,CACTC,YAAa,WAEf,UAAW,CACTC,gBAAiB,UAGrB,GA3BiB/J,CA4BnBgK,EAAAA,IAsDF,KAAehK,EAAAA,EAAAA,IA9FA,SAACC,GAAY,OAC1BC,EAAAA,EAAAA,IAAYC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACTsE,EAAAA,IACAC,EAAAA,IAAa,IAChBuF,eAAgB,CACdL,QAAS,OACT,4BAA6B,CAC3BM,SAAU,aAGb,GAoFL,EApDsB,SAAH5J,GAUC,IATlBG,EAAOH,EAAPG,QACAgC,EAAEnC,EAAFmC,GACAC,EAAIpC,EAAJoC,KACAE,EAAQtC,EAARsC,SACAK,EAAO3C,EAAP2C,QACAT,EAAKlC,EAALkC,MAAKiD,EAAAnF,EACLyC,QAAAA,OAAO,IAAA0C,EAAG,GAAEA,EACZlD,EAAKjC,EAALiC,MAAK+C,EAAAhF,EACL4C,SAAAA,OAAQ,IAAAoC,GAAQA,EAEhB,OACE7D,EAAAA,EAAAA,KAACkG,EAAAA,SAAc,CAAA7F,UACbC,EAAAA,EAAAA,MAACC,EAAAA,GAAI,CAACE,MAAI,EAACC,GAAI,GAAIC,UAAW3B,EAAQwJ,eAAenI,SAAA,CACxC,KAAVU,IACCT,EAAAA,EAAAA,MAACgG,EAAAA,EAAU,CAACC,QAASvF,EAAIL,UAAW3B,EAAQyH,WAAWpG,SAAA,EACrDL,EAAAA,EAAAA,KAAA,QAAAK,SAAOU,IACM,KAAZO,IACCtB,EAAAA,EAAAA,KAAA,OAAKW,UAAW3B,EAAQ0H,iBAAiBrG,UACvCL,EAAAA,EAAAA,KAAC2G,EAAAA,EAAO,CAACzG,MAAOoB,EAASsF,UAAU,YAAWvG,UAC5CL,EAAAA,EAAAA,KAAA,OAAKW,UAAW3B,EAAQsC,QAAQjB,UAC9BL,EAAAA,EAAAA,KAAC6G,EAAAA,IAAQ,cAOrB7G,EAAAA,EAAAA,KAAC0I,EAAAA,EAAW,CAAC5B,WAAS,EAAAzG,UACpBL,EAAAA,EAAAA,KAAC2I,EAAAA,EAAM,CACL3H,GAAIA,EACJC,KAAMA,EACNH,MAAOA,EACPK,SAAUA,EACVyG,OAAO5H,EAAAA,EAAAA,KAACsH,EAAY,IACpB7F,SAAUA,EAASpB,SAElBmB,EAAQoH,KAAI,SAACC,GAAM,OAClB7I,EAAAA,EAAAA,KAAC8I,EAAAA,EAAQ,CACPhI,MAAO+H,EAAO/H,MAAMT,SAGnBwI,EAAO9H,OAAK,UAAAkB,OAFEhB,EAAI,KAAAgB,OAAI4G,EAAO9H,OAGrB,YAOzB,G,2BC3IIgI,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,sNACD,gBACJN,EAAQ,EAAUG,C,4BCVdL,EAAyBC,EAAQ,OAIrCC,EAAQ,OAAU,EAClB,IAAIC,EAAiBH,EAAuBC,EAAQ,QAChDG,EAAcH,EAAQ,OACtBI,GAAW,EAAIF,EAAeG,UAAuB,EAAIF,EAAYG,KAAK,OAAQ,CACpFC,EAAG,8fACD,iBACJN,EAAQ,EAAUG,C","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState, useEffect } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Grid } from \"@mui/material\";\nimport { AddAccessRuleIcon, Button } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n classes: any;\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n classes,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api\n .invoke(\"PUT\", `/api/v1/bucket/${bucket}/access-rules`, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n onClose();\n });\n };\n\n return (\n }\n >\n \n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n \n \n {\n setSelectedAccess(e.target.value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n \n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(AddAccessRule);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputBase,\n InputLabel,\n MenuItem,\n Select,\n SelectChangeEvent,\n Tooltip,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n {option.label}\n \n ))}\n \n \n
\n
\n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","_ref","modalOpen","onClose","classes","bucket","prefilledRoute","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","Grid","container","item","xs","className","formFieldRow","InputBoxWrapper","value","label","id","name","placeholder","onChange","e","target","tooltip","SelectWrapper","options","disabled","modalButtonBar","Button","type","variant","onClick","trim","api","concat","access","then","res","setSnackBarMessage","catch","err","setErrorSnackMessage","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","_ref$multiline","multiline","_ref$tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","IconButton","size","disableFocusRipple","disableRipple","disableTouchRipple","SelectStyled","root","height","lineHeight","marginTop","spacing","input","color","fontSize","fontWeight","padding","border","borderRadius","display","alignItems","borderColor","backgroundColor","InputBase","fieldContainer","flexFlow","FormControl","Select","map","option","MenuItem","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/4619.7a34a86e.chunk.js b/portal-ui/build/static/js/4619.7a34a86e.chunk.js deleted file mode 100644 index 76e03ffb9..000000000 --- a/portal-ui/build/static/js/4619.7a34a86e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[4619],{94619:function(e,t,a){a.r(t);var i=a(29439),n=a(1413),l=a(72791),o=a(56028),s=a(61889),r=a(75952),c=a(21435),d=a(11135),u=a(25787),p=a(23814),x=a(81207),h=a(90673),v=a(87995),m=a(81551),f=a(80184);t.default=(0,u.Z)((function(e){return(0,d.Z)((0,n.Z)((0,n.Z)({},p.DF),p.ID))}))((function(e){var t=e.modalOpen,a=e.onClose,n=e.classes,d=e.bucket,u=(0,m.TL)(),p=(0,l.useState)(""),Z=(0,i.Z)(p,2),b=Z[0],j=Z[1],C=(0,l.useState)("readonly"),y=(0,i.Z)(C,2),g=y[0],P=y[1];return(0,f.jsx)(o.Z,{modalOpen:t,title:"Add Access Rule",onClose:a,titleIcon:(0,f.jsx)(r.sR0,{}),children:(0,f.jsxs)(s.ZP,{container:!0,children:[(0,f.jsx)(s.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,f.jsx)(c.Z,{value:b,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:function(e){j(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."})}),(0,f.jsx)(s.ZP,{item:!0,xs:12,children:(0,f.jsx)(h.Z,{id:"access",name:"Access",onChange:function(e){P(e.target.value)},label:"Access",value:g,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1})}),(0,f.jsxs)(s.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,f.jsx)(r.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){j(""),P("readonly")},label:"Clear"}),(0,f.jsx)(r.zxk,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===b.trim(),onClick:function(){x.Z.invoke("PUT","/api/v1/bucket/".concat(d,"/access-rules"),{prefix:b,access:g}).then((function(e){a()})).catch((function(e){u((0,v.Ih)(e)),a()}))},label:"Save"})]})]})})}))},21435:function(e,t,a){var i=a(29439),n=a(1413),l=a(72791),o=a(27391),s=a(61889),r=a(30829),c=a(20068),d=a(13400),u=a(20165),p=a(3579),x=a(11135),h=a(72455),v=a(25787),m=a(23814),f=a(75952),Z=a(28182),b=a(80184),j=(0,h.Z)((function(e){return(0,x.Z)((0,n.Z)({},m.gM))}));function C(e){var t=j();return(0,b.jsx)(o.Z,(0,n.Z)({InputProps:{classes:t}},e))}t.Z=(0,v.Z)((function(e){return(0,x.Z)((0,n.Z)((0,n.Z)((0,n.Z)({},m.YI),m.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var t=e.label,a=e.onChange,o=e.value,x=e.id,h=e.name,v=e.type,m=void 0===v?"text":v,j=e.autoComplete,y=void 0===j?"off":j,g=e.disabled,P=void 0!==g&&g,k=e.multiline,w=void 0!==k&&k,N=e.tooltip,F=void 0===N?"":N,I=e.index,z=void 0===I?0:I,A=e.error,R=void 0===A?"":A,L=e.required,M=void 0!==L&&L,T=e.placeholder,W=void 0===T?"":T,B=e.min,S=e.max,E=e.overlayId,H=e.overlayIcon,K=void 0===H?null:H,O=e.overlayObject,D=void 0===O?null:O,Y=e.extraInputProps,_=void 0===Y?{}:Y,q=e.overlayAction,G=e.noLabelMinWidth,U=void 0!==G&&G,V=e.pattern,J=void 0===V?"":V,Q=e.autoFocus,X=void 0!==Q&&Q,$=e.classes,ee=e.className,te=void 0===ee?"":ee,ae=e.onKeyPress,ie=e.onFocus,ne=e.onPaste,le=(0,n.Z)({"data-index":z},_),oe=(0,l.useState)(!1),se=(0,i.Z)(oe,2),re=se[0],ce=se[1];"number"===m&&B&&(le.min=B),"number"===m&&S&&(le.max=S),""!==J&&(le.pattern=J);var de=K,ue=m;return"password"===m&&null===K&&(de=re?(0,b.jsx)(u.Z,{}):(0,b.jsx)(p.Z,{}),ue=re?"text":"password"),(0,b.jsx)(l.Fragment,{children:(0,b.jsxs)(s.ZP,{container:!0,className:(0,Z.Z)(""!==te?te:"",""!==R?$.errorInField:$.inputBoxContainer),children:[""!==t&&(0,b.jsxs)(r.Z,{htmlFor:x,className:U?$.noMinWidthLabel:$.inputLabel,children:[(0,b.jsxs)("span",{children:[t,M?"*":""]}),""!==F&&(0,b.jsx)("div",{className:$.tooltipContainer,children:(0,b.jsx)(c.Z,{title:F,placement:"top-start",children:(0,b.jsx)("div",{className:$.tooltip,children:(0,b.jsx)(f.byK,{})})})})]}),(0,b.jsxs)("div",{className:$.textBoxContainer,children:[(0,b.jsx)(C,{id:x,name:h,fullWidth:!0,value:o,autoFocus:X,disabled:P,onChange:a,type:ue,multiline:w,autoComplete:y,inputProps:le,error:""!==R,helperText:R,placeholder:W,className:$.inputRebase,onKeyPress:ae,onFocus:ie,onPaste:ne}),de&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,b.jsx)(d.Z,{onClick:q?function(){q()}:function(){return ce(!re)},id:E,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),D&&(0,b.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==t?"withLabel":""),children:D})]})]})})}))},90673:function(e,t,a){var i=a(1413),n=a(72791),l=a(61889),o=a(4834),s=a(30829),r=a(20068),c=a(68096),d=a(58406),u=a(77865),p=a(11135),x=a(25787),h=a(23814),v=a(75952),m=a(80184),f=(0,x.Z)((function(e){return(0,p.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(o.ZP);t.Z=(0,x.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},h.YI),h.Hr),{},{fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var t=e.classes,a=e.id,i=e.name,o=e.onChange,p=e.options,x=e.label,h=e.tooltip,Z=void 0===h?"":h,b=e.value,j=e.disabled,C=void 0!==j&&j;return(0,m.jsx)(n.Fragment,{children:(0,m.jsxs)(l.ZP,{item:!0,xs:12,className:t.fieldContainer,children:[""!==x&&(0,m.jsxs)(s.Z,{htmlFor:a,className:t.inputLabel,children:[(0,m.jsx)("span",{children:x}),""!==Z&&(0,m.jsx)("div",{className:t.tooltipContainer,children:(0,m.jsx)(r.Z,{title:Z,placement:"top-start",children:(0,m.jsx)("div",{className:t.tooltip,children:(0,m.jsx)(v.byK,{})})})})]}),(0,m.jsx)(c.Z,{fullWidth:!0,children:(0,m.jsx)(d.Z,{id:a,name:i,value:b,onChange:o,input:(0,m.jsx)(f,{}),disabled:C,children:p.map((function(e){return(0,m.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(i,"-").concat(e.label))}))})})]})})}))},3579:function(e,t,a){var i=a(64836);t.Z=void 0;var n=i(a(45649)),l=a(80184),o=(0,n.default)((0,l.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}),"RemoveRedEye");t.Z=o},20165:function(e,t,a){var i=a(64836);t.Z=void 0;var n=i(a(45649)),l=a(80184),o=(0,n.default)((0,l.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}),"VisibilityOff");t.Z=o}}]); -//# sourceMappingURL=4619.7a34a86e.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/4619.7a34a86e.chunk.js.map b/portal-ui/build/static/js/4619.7a34a86e.chunk.js.map deleted file mode 100644 index cc2cf4536..000000000 --- a/portal-ui/build/static/js/4619.7a34a86e.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/4619.7a34a86e.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","../node_modules/@mui/icons-material/RemoveRedEye.js","../node_modules/@mui/icons-material/VisibilityOff.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Grid } from \"@mui/material\";\nimport { AddAccessRuleIcon, Button } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n classes: any;\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n classes,\n bucket,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api\n .invoke(\"PUT\", `/api/v1/bucket/${bucket}/access-rules`, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n onClose();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n onClose();\n });\n };\n\n return (\n }\n >\n \n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n \n \n {\n setSelectedAccess(e.target.value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n \n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(AddAccessRule);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputBase,\n InputLabel,\n MenuItem,\n Select,\n SelectChangeEvent,\n Tooltip,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n {option.label}\n \n ))}\n \n \n
\n
\n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'RemoveRedEye');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","_ref","modalOpen","onClose","classes","bucket","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","Grid","container","item","xs","className","formFieldRow","InputBoxWrapper","value","label","id","name","placeholder","onChange","e","target","tooltip","SelectWrapper","options","disabled","modalButtonBar","Button","type","variant","onClick","trim","api","concat","access","then","res","catch","err","setErrorSnackMessage","inputStyles","makeStyles","inputFieldStyles","InputField","props","TextField","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","_ref$type","_ref$autoComplete","autoComplete","_ref$disabled","_ref$multiline","multiline","_ref$tooltip","_ref$index","index","_ref$error","error","_ref$required","required","_ref$placeholder","min","max","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$extraInputProps","extraInputProps","_ref$noLabelMinWidth","noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","_ref$className","onKeyPress","onFocus","onPaste","inputProps","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","React","clsx","errorInField","inputBoxContainer","InputLabel","htmlFor","noMinWidthLabel","inputLabel","tooltipContainer","Tooltip","placement","HelpIcon","fullWidth","helperText","inputRebase","IconButton","size","disableFocusRipple","disableRipple","disableTouchRipple","SelectStyled","root","height","lineHeight","marginTop","spacing","input","color","fontSize","fontWeight","padding","border","borderRadius","display","alignItems","borderColor","backgroundColor","InputBase","fieldContainer","flexFlow","FormControl","Select","map","option","MenuItem","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5522.0cd4f3c8.chunk.js b/portal-ui/build/static/js/5522.0cd4f3c8.chunk.js deleted file mode 100644 index 494b327d8..000000000 --- a/portal-ui/build/static/js/5522.0cd4f3c8.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5522],{95522:function(e,n,t){t.r(n),t.d(n,{default:function(){return Un}});var i,o=t(1413),a=t(72791),r=t(78687),s=t(57689),c=t(11135),l=t(25787),d=t(81551),u=t(23814),h=t(29439),m=t(57831),f=t(75952),p=t(99779),x=t(61889),b=t(26181),v=t.n(b),j=t(81207),g=t(45248),Z=t(29472),_=t(93433),S=t(78029),C=t.n(S),w=t(72455),T=t(11087),y=t(13400),N=t(38442),E=t(56087),I=t(75578),F=t(87995),k=t(54756),O=t(80184),L=(0,I.Z)(a.lazy((function(){return t.e(2185).then(t.bind(t,62185))}))),P=(0,w.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},u.cx),{},{slashSpacingStyle:{margin:"0 5px"}}))})),B=function(e){var n=e.bucketName,t=e.internalPaths,i=e.hidePathButton,o=e.additionalOptions,c=(0,d.TL)(),l=(0,s.s0)(),u=P(),m=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),p=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),b=(0,r.v9)((function(e){return e.objectBrowser.versionedFile})),v=(0,r.v9)((function(e){return e.system.anonymousMode})),j=(0,r.v9)((function(e){return e.system.overrideStyles})),Z=(0,a.useState)(!1),S=(0,h.Z)(Z,2),w=S[0],I=S[1],B=(0,N.F)(n,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS])||v,D=t;""!==t&&(D="/".concat(t));var A=D.split("/").filter((function(e){return""!==e})),R=A.length-1,U=A.map((function(e,t){var i="".concat(A.slice(0,t+1).join("/"),"/"),o="/browser/".concat(n,"/").concat(i?"".concat((0,g.LL)(i)):"");return t===R&&e===b?null:(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)("span",{className:u.slashSpacingStyle,children:"/"}),t===R?(0,O.jsx)("span",{style:{cursor:"default"},children:e}):(0,O.jsx)(T.rU,{to:o,onClick:function(){c((0,k.db)({status:!1,objectName:""}))},children:e})]},"breadcrumbs-".concat(t.toString()))})),M=[];p&&(M=[(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)("span",{children:[(0,O.jsx)("span",{className:u.slashSpacingStyle,children:"/"}),b," - Versions"]})},"breadcrumbs-versionedItem")]);var z=[(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(T.rU,{to:"/browser/".concat(n),onClick:function(){c((0,k.db)({status:!1,objectName:""}))},children:n})},"breadcrumbs-root-path")].concat((0,_.Z)(U),(0,_.Z)(M)),G={};return j&&(G={backgroundColor:"transparent"}),(0,O.jsxs)(a.Fragment,{children:[(0,O.jsxs)("div",{className:u.breadcrumbsMain,children:[w&&(0,O.jsx)(L,{modalOpen:w,bucketName:n,folderName:t,onClose:function(){I(!1)}}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:"".concat(u.breadcrumbs),children:[(0,O.jsx)(y.Z,{onClick:function(){p?c((0,k.db)({status:!1,objectName:""})):l(-1)},sx:{border:"#EAEDEE 1px solid",backgroundColor:"#fff",borderLeft:0,borderRadius:0,width:38,height:38,marginRight:"10px"},children:(0,O.jsx)(f.ubh,{})}),(0,O.jsx)("div",{className:u.breadcrumbsList,dir:"rtl",children:z}),(0,O.jsx)(C(),{text:"".concat(n,"/").concat(A.join("/")),children:(0,O.jsx)(f.zxk,{id:"copy-path",icon:(0,O.jsx)(f.TIy,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:function(){c((0,F.y1)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,O.jsx)("div",{className:u.additionalOptions,children:o})]}),!i&&(0,O.jsx)(f.ua7,{tooltip:B?"Choose or create a new path":(0,E.MK)([E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],"create a new path"),children:(0,O.jsx)(f.zxk,{id:"new-path",onClick:function(){I(!0)},disabled:!v&&(m||!B),icon:(0,O.jsx)(f.N$q,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path",sx:G})})]}),(0,O.jsx)("div",{className:u.breadcrumbsSecond,children:o})]})},D=t(47922),A=t(14917),R=t(74794),U=t(71715),M=t(77865),z=t(49900),G=t(57064),K=t(27454),W=(0,l.Z)((function(e){return(0,c.Z)({listUploadIcons:{height:20,"& .min-icon":{width:18,fill:"rgba(0,0,0,0.87)"}}})}))((function(e){var n=e.uploadPath,t=e.bucketName,i=e.forceDisable,o=void 0!==i&&i,s=e.uploadFileFunction,c=e.uploadFolderFunction,l=e.classes,d=e.overrideStyles,u=void 0===d?{}:d,m=(0,r.v9)((function(e){return e.system.anonymousMode})),p=(0,a.useState)(null),x=(0,h.Z)(p,2),b=x[0],v=x[1],j=Boolean(b),g=function(){v(null)},Z=(0,N.F)(n,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS])||m,_=(0,N.F)(t,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],!1,!0),S=Z||_;return(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(K.Z,{tooltip:S?"Upload Files":(0,E.MK)([E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],"upload files to this bucket"),children:(0,O.jsx)(f.zxk,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":j?"true":void 0,onClick:function(e){v(e.currentTarget)},label:"Upload",icon:(0,O.jsx)(f.rG2,{}),variant:"callAction",disabled:o||!S,sx:u})}),(0,O.jsxs)(U.Z,{id:"upload-main-menu","aria-labelledby":"upload-main",anchorEl:b,open:j,onClose:function(){g()},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[(0,O.jsxs)(M.Z,{onClick:function(){s(g)},disabled:!Z||o,children:[(0,O.jsx)(G.Z,{className:l.listUploadIcons,children:(0,O.jsx)(f.rG2,{})}),(0,O.jsx)(z.Z,{children:"Upload File"})]}),(0,O.jsxs)(M.Z,{onClick:function(){c(g)},disabled:!_||o,children:[(0,O.jsx)(G.Z,{className:l.listUploadIcons,children:(0,O.jsx)(f.oXh,{})}),(0,O.jsx)(z.Z,{children:"Upload Folder"})]})]})]})})),H=(0,w.Z)((function(e){return(0,c.Z)({detailsList:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}},closePanel:{position:"absolute",right:0,top:8,"& .min-icon":{width:14}}})})),J=function(e){var n=e.open,t=e.closePanel,i=e.className,o=void 0===i?"":i,a=e.children,r=H();return(0,O.jsxs)(x.ZP,{item:!0,className:"".concat(r.detailsList," ").concat(n?"open":""," ").concat(o," detailsListPanel"),children:[(0,O.jsx)(y.Z,{onClick:t,className:r.closePanel,children:(0,O.jsx)(f.oto,{})}),a]})},V=t(64554),Y=t(34433),q=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],$=Array.from(Array(31),(function(e,n){return n+1})),X=(new Date).getFullYear(),Q=Array.from(Array(25),(function(e,n){return n+X})),ee=t(56028),ne=t(81159),te=t(83679),ie=t(4942),oe=t(28182),ae=t(30829),re=t(20068),se=t(68096),ce=t(58406),le=t(4834),de=(0,l.Z)((function(e){return(0,c.Z)({root:{"& .MuiSelect-icon":{color:"#000","&.Mui-disabled":{color:"#9c9c9c"}}},input:{borderBottom:0,fontSize:12}})}))(le.ZP),ue=(0,a.forwardRef)((function(e,n){var t=e.classes,i=e.id,o=e.label,r=e.disableOptions,s=void 0!==r&&r,c=e.addSwitch,l=void 0!==c&&c,d=e.tooltip,u=void 0===d?"":d,m=e.borderBottom,p=void 0!==m&&m,b=e.onDateChange,v=e.value,j=void 0===v?"":v;(0,a.useImperativeHandle)(n,(function(){return{resetDate:D}}));var g=(0,a.useState)(!1),Z=(0,h.Z)(g,2),_=Z[0],S=Z[1],C=(0,a.useState)(""),w=(0,h.Z)(C,2),T=w[0],y=w[1],N=(0,a.useState)(""),E=(0,h.Z)(N,2),I=E[0],F=E[1],k=(0,a.useState)(""),L=(0,h.Z)(k,2),P=L[0],B=L[1];(0,a.useEffect)((function(){if(""!==j){var e=j.split("-");B(e[0]),y(e[1]),F("".concat(parseInt(e[2])))}}),[j]),(0,a.useEffect)((function(){var e=function(e,n,t){var i=Date.parse("".concat(e,"-").concat(n,"-").concat(t));if(isNaN(i))return[!1,""];var o=parseInt(n),a=parseInt(t),r=o<10?"0".concat(o):o,s=a<10?"0".concat(a):a,c=new Date(i).toISOString().split("T")[0],l="".concat(e,"-").concat(r,"-").concat(s);return[c===l,l]}(P,T,I),n=(0,h.Z)(e,2),t=n[0],i=n[1];b(i,t)}),[T,I,P,b]);var D=function(){y(""),F(""),B("")},A=function(){return s||!!l&&!_};return(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:(0,oe.Z)(t.fieldContainer,(0,ie.Z)({},t.fieldContainerBorder,p)),children:[(0,O.jsx)("div",{className:t.labelContainer,children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(ae.Z,{htmlFor:i,className:t.inputLabel,children:[(0,O.jsx)("span",{children:o}),""!==u&&(0,O.jsx)("div",{className:t.tooltipContainer,children:(0,O.jsx)(re.Z,{title:u,placement:"top-start",children:(0,O.jsx)("div",{className:t.tooltip,children:(0,O.jsx)(f.byK,{})})})})]}),l&&(0,O.jsx)(ne.Z,{indicatorLabels:["Specific Date","Default (7 Days)"],checked:_,value:"date_enabled",id:"date-status",name:"date-status",onChange:function(e){S(e.target.checked),e.target.checked||b("",!0)},switchOnly:!0})]})}),(0,O.jsxs)("div",{children:[(0,O.jsx)(se.Z,{disabled:A(),className:t.dateInput,children:(0,O.jsxs)(ce.Z,{id:"".concat(i,"-month"),name:"".concat(i,"-month"),value:T,displayEmpty:!0,onChange:function(e){y(e.target.value)},input:(0,O.jsx)(de,{}),children:[(0,O.jsx)(M.Z,{value:"",disabled:!0,children:""}),q.map((function(e){return(0,O.jsx)(M.Z,{value:e.value,children:e.label},"select-".concat(i,"-monthOP-").concat(e.label))}))]})}),(0,O.jsx)(se.Z,{disabled:A(),className:t.dateInput,children:(0,O.jsxs)(ce.Z,{id:"".concat(i,"-day"),name:"".concat(i,"-day"),value:I,displayEmpty:!0,onChange:function(e){F(e.target.value)},input:(0,O.jsx)(de,{}),children:[(0,O.jsx)(M.Z,{value:"",disabled:!0,children:""}),$.map((function(e){return(0,O.jsx)(M.Z,{value:e,children:e},"select-".concat(i,"-dayOP-").concat(e))}))]})}),(0,O.jsx)(se.Z,{disabled:A(),className:t.dateInput,children:(0,O.jsxs)(ce.Z,{id:"".concat(i,"-year"),name:"".concat(i,"-year"),value:P,displayEmpty:!0,onChange:function(e){B(e.target.value)},input:(0,O.jsx)(de,{}),children:[(0,O.jsx)(M.Z,{value:"",disabled:!0,children:""}),Q.map((function(e){return(0,O.jsx)(M.Z,{value:e,children:e},"select-".concat(i,"-yearOP-").concat(e))}))]})})]})]})})),he=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({dateInput:{"&:not(:last-child)":{marginRight:22}}},u.YI),u.Hr),{},{labelContainer:{flex:1},fieldContainer:(0,o.Z)((0,o.Z)({},u.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),fieldContainerBorder:{borderBottom:"#9c9c9c 1px solid",marginBottom:20}}))}))(ue),me=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK),{},{dateSelector:{"& div":{borderBottom:0,marginBottom:0,"& div:nth-child(2)":{border:"1px solid #EAEAEA",paddingLeft:5,"& div":{border:0}}}}}))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,r=e.objectInfo,s=e.bucketName,c=(0,d.TL)(),l=(0,a.useState)(!0),u=(0,h.Z)(l,2),m=u[0],p=u[1],b=(0,a.useState)(""),v=(0,h.Z)(b,2),Z=v[0],_=v[1],S=(0,a.useState)(""),C=(0,h.Z)(S,2),w=C[0],T=C[1],y=(0,a.useState)(!1),N=(0,h.Z)(y,2),E=N[0],I=N[1],k=(0,a.useState)(!1),L=(0,h.Z)(k,2),P=L[0],B=L[1],D=(0,a.useState)(!1),A=(0,h.Z)(D,2),R=A[0],U=A[1];(0,a.useEffect)((function(){if(r.retention_mode&&(_(r.retention_mode.toLowerCase()),U(!0)),r.retention_until_date){var e=new Date(r.retention_until_date);if("Invalid Date"!==e.toString()){var n=e.getFullYear(),t=(o=e.getMonth()+1)<10?"0".concat(o):"".concat(o),i=e.getDate();isNaN(i)||"NaN"===t||isNaN(n)||T("".concat(n,"-").concat(t,"-").concat(i))}U(!0)}var o}),[r]);var M=(0,a.useRef)(null),z=function(){p(!1),_(""),M.current&&M.current.resetDate()},G=R&&("governance"===Z||""===Z);return(0,O.jsxs)(ee.Z,{title:"Set Retention Policy",modalOpen:t,onClose:function(){z(),i(!1)},children:[(0,O.jsxs)("div",{className:n.spacerBottom,children:[(0,O.jsx)("strong",{children:"Selected Object"}),": ",o]}),(0,O.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:[G&&(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,O.jsx)(ne.Z,{value:"status",id:"status",name:"status",checked:m,onChange:function(e){p(!m)},label:"Status",indicatorLabels:["Enabled","Disabled"]})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,O.jsx)(te.Z,{currentSelection:Z,id:"type",name:"type",label:"Type",disableOptions:!m||R&&""!==Z,onChange:function(e){_(e.target.value)},selectorOptions:[{label:"Governance",value:"governance"},{label:"Compliance",value:"compliance"}]})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:"".concat(n.dateSelector," "),children:(0,O.jsx)(he,{id:"date",label:"Date",disableOptions:!(m&&("governance"===Z||"compliance"===Z)),ref:M,value:w,borderBottom:!0,onDateChange:function(e,n){I(n),n&&T(e)}})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"reset",type:"button",variant:"regular",onClick:z,label:"Reset"}),(0,O.jsx)(f.zxk,{id:"save",type:"submit",variant:"callAction",disabled:m&&""===Z||m&&!E||P,onClick:function(){B(!0);var e=r.name,n=r.version_id,t=m||"governance"!==Z?"".concat(w,"T23:59:59Z"):"";m||"governance"!==Z?function(e,n,t){j.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/retention?prefix=").concat((0,g.LL)(e),"&version_id=").concat(n),{expires:t,mode:Z}).then((function(e){B(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),B(!1)}))}(e,n,t):function(e,n){j.Z.invoke("DELETE","/api/v1/buckets/".concat(s,"/objects/retention?prefix=").concat((0,g.LL)(e),"&version_id=").concat(n)).then((function(){B(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),B(!1)}))}(e,n)},label:"Save"})]})]})]})})),fe=t(51691),pe=t(23508),xe=t(9505),be=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=e.versioningInfo,c=e.selectedVersion,l=void 0===c?"":c,u=(0,d.TL)(),m=(0,xe.Z)((function(){return n(!0)}),(function(e){u((0,F.Ih)(e)),"Access Denied."===e.detailedError&&n(!0)})),p=(0,h.Z)(m,2),x=p[0],b=p[1],v=(0,a.useState)(!1),j=(0,h.Z)(v,2),Z=j[0],_=j[1],S=(0,a.useState)(!1),C=(0,h.Z)(S,2),w=C[0],T=C[1],y=(0,r.v9)((function(e){return e.objectBrowser.retentionConfig})),I=(0,N.F)([i],[E.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===y||void 0===y?void 0:y.mode);if(!o)return null;var k;return(0,O.jsx)(pe.Z,{title:"Delete Object",confirmText:"Delete",isOpen:t,titleIcon:(0,O.jsx)(f.NvT,{}),isLoading:x,onConfirm:function(){var e=(0,g.IO)(o).endsWith("/");b("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o).concat(""!==l?"&version_id=".concat(l):"&recursive=".concat(e,"&all_versions=").concat(Z)).concat(w?"&bypass=true":""))},onClose:function(){return n(!1)},confirmationContent:(0,O.jsxs)(fe.Z,{sx:{width:"430px"},children:["Are you sure you want to delete: ",(0,O.jsx)("br",{}),(0,O.jsx)("b",{children:(0,g.IO)(o)})," ",""!==l?(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)("br",{}),(0,O.jsx)("br",{}),"Version ID:",(0,O.jsx)("br",{}),(0,O.jsx)("strong",{children:l})]}):"","? ",(0,O.jsx)("br",{}),(0,O.jsx)("br",{}),(k=null===s||void 0===s?void 0:s.Status,("Enabled"===k||"Suspended"===k)&&""===l&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(ne.Z,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:Z,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:function(e){_(!Z)},description:""})})),I&&(Z||""!==l)&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)("div",{style:{marginTop:10},children:(0,O.jsx)(ne.Z,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:w,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){T(!w)},description:""})})}),Z&&(0,O.jsxs)(a.Fragment,{children:[(0,O.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the object as well as all of its versions,"," ",(0,O.jsx)("br",{}),"This action is irreversible."]}),(0,O.jsx)("br",{}),"Are you sure you want to continue?"]})]})})},ve=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,r=e.bucketName,s=e.actualInfo,c=(0,d.TL)(),l=(0,a.useState)(!1),u=(0,h.Z)(l,2),m=u[0],p=u[1],b=(0,a.useState)(!1),Z=(0,h.Z)(b,2),_=Z[0],S=Z[1],C=s.version_id;(0,a.useEffect)((function(){var e=v()(s,"legal_hold_status","OFF");p("ON"===e)}),[s]);var w=function(){p(!1)};return(0,O.jsxs)(ee.Z,{title:"Set Legal Hold",modalOpen:t,onClose:function(){w(),i(!1)},children:[(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.spacerBottom,children:["Object: ",r]}),(0,O.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault(),S(!0),j.Z.invoke("PUT","/api/v1/buckets/".concat(r,"/objects/legalhold?prefix=").concat((0,g.LL)(o),"&version_id=").concat(C),{status:m?"enabled":"disabled"}).then((function(){S(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),S(!1)}))}(e)},children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,O.jsx)(ne.Z,{value:"legalhold",id:"legalhold",name:"legalhold",checked:m,onChange:function(e){p(!m)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"clear",type:"button",variant:"regular",onClick:w,label:"Clear"}),(0,O.jsx)(f.zxk,{id:"save",type:"submit",variant:"callAction",disabled:_,label:" Save"})]})]})]})})),je=t(78562),ge=t(79836),Ze=t(53382),_e=t(35855),Se=t(53994),Ce=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({titleItem:{width:"35%"}},u.bK),u.$b))}))((function(e){var n=e.metaData,t=e.classes,i=e.linear,o=void 0!==i&&i,r=Object.keys(n);return o?(0,O.jsx)(a.Fragment,{children:r.map((function(e,i){var o=Array.isArray(n[e])?n[e].map(decodeURIComponent).join(", "):decodeURIComponent(n[e]);return(0,O.jsxs)(V.Z,{className:t.metadataLinear,children:[(0,O.jsx)("strong",{children:e}),(0,O.jsx)("br",{}),o]},"box-meta-".concat(e,"-").concat(i.toString()))}))}):(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,sx:{marginTop:"25px",marginBottom:"5px"},children:(0,O.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Object Metadata"})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",children:(0,O.jsx)(Ze.Z,{children:r.map((function(e,i){var o=Array.isArray(n[e])?n[e].map(decodeURIComponent).join(", "):decodeURIComponent(n[e]);return(0,O.jsxs)(_e.Z,{children:[(0,O.jsx)(Se.Z,{component:"th",scope:"row",className:t.titleItem,children:e}),(0,O.jsx)(Se.Z,{align:"right",children:o})]},"tRow-".concat(i.toString()))}))})})})]})})),we=t(45987),Te=t(36151),ye=["disabled","onClick","icon","label","classes"],Ne=(0,l.Z)((function(e){return(0,c.Z)({root:{padding:"0 15px",height:22,margin:0,color:"#5E5E5E",fontWeight:"normal",fontSize:14,whiteSpace:"nowrap",width:"100%",justifyContent:"flex-start","&:hover":{backgroundColor:"transparent",color:"#000"},"& .min-icon":{width:11},"&:disabled":{color:"#EBEBEB",borderColor:"#EBEBEB"}}})}))((function(e){var n=e.disabled,t=e.onClick,i=e.icon,a=e.label,r=e.classes,s=(0,we.Z)(e,ye);return(0,O.jsx)(Te.Z,(0,o.Z)((0,o.Z)({},s),{},{disabled:n,onClick:t,className:(0,oe.Z)(r.root,"noDefaultHeight"),startIcon:i,sx:{height:"initial"},children:(0,O.jsx)("span",{className:"buttonItem",children:a})}))})),Ee=(0,l.Z)((function(){return(0,c.Z)((0,o.Z)({},u.$b))}))((function(e){var n=e.items,t=e.classes,i=e.title;return(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)("div",{className:t.titleLabel,children:i}),(0,O.jsxs)("ul",{className:t.objectActions,children:[(0,O.jsx)("li",{children:"Actions:"}),n.map((function(e,n){return(0,O.jsx)("li",{children:(0,O.jsx)(K.Z,{tooltip:e.tooltip||"",children:(0,O.jsx)(Ne,{label:e.label,icon:e.icon,onClick:e.action,disabled:e.disabled})})},"action-element-".concat(n.toString()))}))]})]})})),Ie=t(37762),Fe=(0,l.Z)((function(e){return(0,c.Z)({fileName:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16}},fileNameText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}})}))((function(e){var n=e.classes,t=e.icon,i=e.strings;return(0,O.jsxs)("div",{className:n.fileName,children:[t,(0,O.jsx)("span",{className:n.fileNameText,children:i[i.length-1]})]})})),ke=[{icon:(0,O.jsx)(f.n9O,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,O.jsx)(f.mYf,{}),extensions:["mp3","m4a","aac"]},{icon:(0,O.jsx)(f.UU9,{}),extensions:["pdf"]},{icon:(0,O.jsx)(f.hjP,{}),extensions:["ppt","pptx"]},{icon:(0,O.jsx)(f.hz9,{}),extensions:["xls","xlsx"]},{icon:(0,O.jsx)(f.xDw,{}),extensions:["cer","crt","pem"]},{icon:(0,O.jsx)(f.jG9,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,O.jsx)(f.NqG,{}),extensions:["cfg","yaml"]},{icon:(0,O.jsx)(f.OkY,{}),extensions:["sql"]},{icon:(0,O.jsx)(f.ZAy,{}),extensions:["ttf","otf"]},{icon:(0,O.jsx)(f.p2x,{}),extensions:["doc","docx","txt","rtf"]},{icon:(0,O.jsx)(f.xhr,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,O.jsx)(f.rtI,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,O.jsx)(f.q$4,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],Oe=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=e,i=(0,O.jsx)(f.MoH,{});e.endsWith("/")&&(i=(0,O.jsx)(f.BI,{}),t=e.slice(0,-1));for(var o=e.toLowerCase(),a=0,r=ke;a svg":{marginRight:10}},tagsForLabel:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},currentTagsContainer:{fontSize:14,fontWeight:"normal"},noTagsForObject:{color:"#858585"},deleteTag:{color:"#C83B51",marginLeft:5}},u.DF),u.ID),u.bK))}))((function(e){var n=e.modalOpen,t=e.onCloseAndUpdate,i=e.bucketName,s=e.actualInfo,c=e.classes,l=(0,d.TL)(),u=(0,r.v9)(F.N5),m=(0,a.useState)(""),p=(0,h.Z)(m,2),b=p[0],Z=p[1],_=(0,a.useState)(""),S=(0,h.Z)(_,2),C=S[0],w=S[1],T=(0,a.useState)(!1),y=(0,h.Z)(T,2),I=y[0],k=y[1],L=(0,a.useState)(!1),P=(0,h.Z)(L,2),B=P[0],D=P[1],A=(0,a.useState)(""),R=(0,h.Z)(A,2),U=R[0],M=R[1],z=(0,a.useState)(""),G=(0,h.Z)(z,2),K=G[0],W=G[1],H=(0,g.LL)(s.name),J=s.tags,Y=Object.keys(J||{}),q=s.name.split("/").pop()||"",$=function(e){return(0,O.jsxs)("div",{className:c.tagsForLabel,children:["Tag",e?"s":""," for: ",(0,O.jsx)("strong",{children:q})]})};return(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(ee.Z,{modalOpen:n,title:B?(0,O.jsx)("span",{style:{color:"#C83B51"},children:"Delete Tag"}):"Edit Tags",onClose:function(){t(!0)},titleIcon:B?(0,O.jsx)(f.dRf,{style:{fill:"#C83B51"}}):(0,O.jsx)(f.T0F,{}),children:B?(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)(x.ZP,{container:!0,children:[$(!1),"Are you sure you want to delete the tag"," ",(0,O.jsxs)("b",{className:c.deleteTag,children:[U," : ",K]})," ","?",(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"cancel",type:"button",variant:"regular",onClick:function(){M(""),W(""),D(!1)},label:"Cancel"}),(0,O.jsx)(f.zxk,{type:"submit",variant:"secondary",onClick:function(){var e=(0,o.Z)({},J);delete e[U];var n=u?s.version_id:"null";j.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/objects/tags?prefix=").concat(H,"&version_id=").concat(n),{tags:e}).then((function(e){t(!0),k(!1)})).catch((function(e){l((0,F.zb)(e)),k(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsx)(N.s,{scopes:[E.Ft.S3_GET_OBJECT_TAGGING,E.Ft.S3_GET_ACTIONS],resource:i,children:(0,O.jsxs)(V.Z,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[$(!0),(0,O.jsxs)("div",{className:c.currentTagsContainer,children:["Current Tags:",(0,O.jsx)("br",{}),0===Y.length?(0,O.jsx)("span",{className:c.noTagsForObject,children:"There are no tags for this object"}):(0,O.jsx)(a.Fragment,{}),(0,O.jsx)(V.Z,{sx:{marginTop:"5px",marginBottom:"15px"},children:Y.map((function(e,n){var t=v()(J,"".concat(e),"");return""!==t?(0,O.jsx)(N.s,{scopes:[E.Ft.S3_DELETE_OBJECT_TAGGING],resource:i,errorProps:{deleteIcon:null,onDelete:null},children:(0,O.jsx)(Pe.Z,{style:{textTransform:"none",marginRight:"5px",marginBottom:"5px"},size:"small",label:"".concat(e," : ").concat(t),color:"primary",deleteIcon:(0,O.jsx)(Be.Z,{}),onDelete:function(){!function(e,n){M(e),W(n),D(!0)}(e,t)}})},"chip-".concat(n)):null}))})]})]})}),(0,O.jsx)(N.s,{scopes:[E.Ft.S3_PUT_OBJECT_TAGGING,E.Ft.S3_PUT_ACTIONS],resource:i,errorProps:{disabled:!0,onClick:null},children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.newTileHeader,children:[(0,O.jsx)(f.OCT,{})," Add New Tag"]}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(Le.Z,{value:b,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:function(e){Z(e.target.value)}})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(Le.Z,{value:C,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:function(e){w(e.target.value)}})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){w(""),Z("")},label:"Clear"}),(0,O.jsx)(f.zxk,{type:"submit",variant:"callAction",disabled:""===C.trim()||""===b.trim()||I,onClick:function(){k(!0);var e={};e[b]=C;var n=(0,o.Z)((0,o.Z)({},J),e),a=u?s.version_id:"null";j.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/objects/tags?prefix=").concat(H,"&version_id=").concat(a),{tags:n}).then((function(e){t(!0),k(!1)})).catch((function(e){l((0,F.zb)(e)),k(!1)}))},id:"saveTag",label:"Save"})]})]})})]})})})})),Ae=t(74165),Re=t(15861),Ue=t(73669),Me=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.closeInspectModalAndRefresh,i=e.inspectOpen,o=e.inspectPath,r=e.volumeName,s=(0,d.TL)(),c=function(){return t(!1)},l=(0,a.useState)(!0),u=(0,h.Z)(l,2),m=u[0],p=u[1],b=(0,a.useState)(""),v=(0,h.Z)(b,2),j=v[0],Z=v[1],_=(0,a.useState)(""),S=(0,h.Z)(_,2),C=S[0],w=S[1];if(!o)return null;var T=function(){var e=(0,Re.Z)((0,Ae.Z)().mark((function e(n){return(0,Ae.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(n,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),y=function(){var e=(0,Re.Z)((0,Ae.Z)().mark((function e(){var n,t,i;return(0,Ae.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=(0,g.LL)(o+"/xl.meta"),t=(0,g.LL)(r),i="/api/v1/admin/inspect?volume=".concat(t,"&file=").concat(n,"&encrypt=").concat(m),T(i).then(function(){var e=(0,Re.Z)((0,Ae.Z)().mark((function e(n){var t,i,o,a;return(0,Ae.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.ok){e.next=5;break}return e.next=3,n.json();case 3:t=e.sent,s((0,F.Ih)({errorMessage:t.message,detailedError:t.code}));case 5:return e.next=7,n.blob();case 7:if(i=e.sent,o=n.headers.get("content-disposition").split('"')[1],a=(0,g.Do)(o)||"",(0,g.zZ)(i,o),w(o),""!==a){e.next=15;break}return c(),e.abrupt("return");case 15:Z(a);case 16:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()).catch((function(e){s((0,F.Ih)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,O.jsxs)(a.Fragment,{children:[!j&&(0,O.jsx)(ee.Z,{modalOpen:i,titleIcon:(0,O.jsx)(f.Gp8,{}),title:"Inspect Object",onClose:c,children:(0,O.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:["Would you like to encrypt ",(0,O.jsx)("b",{children:(0,g.IO)(o)}),"?"," ",(0,O.jsx)("br",{}),(0,O.jsx)(ne.Z,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:m,value:"encrypt",id:"encrypt",name:"encrypt",onChange:function(e){p(!m)},description:""}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:(0,O.jsx)(f.zxk,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:y,label:"Inspect"})})]})}),j?(0,O.jsx)(ee.Z,{modalOpen:i,title:"Inspect Decryption Key",onClose:function(){(0,g.kT)(C),c(),Z("")},titleIcon:(0,O.jsx)(f.tvm,{}),children:(0,O.jsxs)(fe.Z,{children:[(0,O.jsxs)(V.Z,{children:["This will be displayed only once. It cannot be recovered.",(0,O.jsx)("br",{}),"Use secure medium to share this key."]}),(0,O.jsx)(V.Z,{children:(0,O.jsx)(Ue.Z,{value:j})})]})}):null]})})),ze=t(76610),Ge=(0,w.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.ID),u.DF),u.bK),u.Bz))})),Ke=function(e){var n=e.open,t=e.closeModal,i=e.currentItem,o=e.internalPaths,r=e.actualInfo,s=e.bucketName,c=Ge(),l=(0,d.TL)(),u=(0,a.useState)(i),m=(0,h.Z)(u,2),p=m[0],b=m[1],v=(0,a.useState)(!1),j=(0,h.Z)(v,2),Z=j[0],_=j[1];return(0,O.jsxs)(ee.Z,{title:"Rename Download",modalOpen:n,onClose:t,titleIcon:(0,O.jsx)(f.dY8,{}),children:[(0,O.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,O.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,O.jsx)("br",{}),(0,O.jsx)("br",{})," We recommend to rename the file download"]}),(0,O.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();var n=(0,g.LL)("".concat(s,"-").concat(r.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ze.YO)(8),a=(0,D.LR)(s,o,r.version_id,parseInt(r.size||"0"),p,i,(function(e){l((0,k.RO)({instanceID:n,progress:e}))}),(function(){l((0,k.oK)(n))}),(function(e){l((0,k.qJ)({instanceID:n,msg:e}))}),(function(){l((0,k.Im)(n))}));(0,ze.EN)(i,a),l((0,k.Mc)({ID:i,bucketName:s,done:!1,instanceID:n,percentage:0,prefix:p,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""})),t()}(e)},children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.modalFormScrollable,children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(Le.Z,{id:"download-filename",name:"download-filename",onChange:function(e){b(e.target.value)},label:"",type:"text",value:p,error:p.length>200&&!Z?"Filename should be less than 200 characters long.":""})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(ne.Z,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:Z,onChange:function(e){_(e.target.checked),e.target.checked&&b(i)},label:"Use Original Name"})})]}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:(0,O.jsx)(f.zxk,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:p.length>200&&!Z,label:"Download File"})})]})})]})},We=function(e,n,t,i){var o=(0,g.LL)("".concat(n,"-").concat(i.name,"-").concat((new Date).getTime(),"-").concat(Math.random()));if(i.name.length>200&&(0,g.mv)().toLowerCase().includes("win"))e((0,k.Hg)(!0));else{var a=(0,ze.YO)(8),r=(0,D.LR)(n,t,i.version_id,parseInt(i.size||"0"),null,a,(function(n){e((0,k.RO)({instanceID:o,progress:n}))}),(function(){e((0,k.oK)(o))}),(function(n){e((0,k.qJ)({instanceID:o,msg:n}))}),(function(){e((0,k.Im)(o))}));(0,ze.EN)(a,r),e((0,k.Mc)({ID:a,bucketName:n,done:!1,instanceID:o,percentage:0,prefix:i.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}},He={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},Je=(0,l.Z)((function(){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({ObjectDetailsTitle:{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},objectNameContainer:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},headerForSection:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingBottom:15,borderBottom:"#E2E2E2 2px solid",fontWeight:"bold",fontSize:18,color:"#000",margin:"20px 22px"},capitalizeFirst:{textTransform:"capitalize"}},u.OR),u.bK),u.VI),u.$b))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,s=e.versioningInfo,c=e.locking,l=e.onClosePanel,u=(0,d.TL)(),m=(0,r.v9)(F.N5),p=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),b=(0,r.v9)((function(e){return e.objectBrowser.selectedVersion})),Z=(0,r.v9)((function(e){return e.objectBrowser.loadingObjectInfo})),_=(0,r.v9)((function(e){return e.system.overrideStyles})),S=(0,a.useState)(!1),C=(0,h.Z)(S,2),w=C[0],T=C[1],y=(0,a.useState)(!1),I=(0,h.Z)(y,2),L=I[0],P=I[1],B=(0,a.useState)(!1),A=(0,h.Z)(B,2),R=A[0],U=A[1],M=(0,a.useState)(!1),z=(0,h.Z)(M,2),G=z[0],W=z[1],H=(0,a.useState)(!1),J=(0,h.Z)(H,2),q=J[0],$=J[1],X=(0,a.useState)(null),Q=(0,h.Z)(X,2),ee=Q[0],ne=Q[1],te=(0,a.useState)([]),ie=(0,h.Z)(te,2),oe=ie[0],ae=ie[1],re=(0,a.useState)(null),se=(0,h.Z)(re,2),ce=se[0],le=se[1],de=(0,a.useState)([]),ue=(0,h.Z)(de,2),he=ue[0],fe=ue[1],pe=(0,a.useState)(!1),xe=(0,h.Z)(pe,2),ge=xe[0],Ze=xe[1],_e=(0,a.useState)(!1),Se=(0,h.Z)(_e,2),we=Se[0],Te=Se[1],ye=(0,a.useState)(0),Ne=(0,h.Z)(ye,2),Ie=Ne[0],Fe=Ne[1],ke=(0,a.useState)(!1),Le=(0,h.Z)(ke,2),Pe=Le[0],Be=Le[1],Ae=(0,a.useState)(null),Re=(0,h.Z)(Ae,2),Ue=Re[0],ze=Re[1],Ge=(0,a.useState)(!1),Je=(0,h.Z)(Ge,2),Ve=Je[0],Ye=Je[1],qe=((0,g.IO)(t)||"").split("/").pop()||"",$e=[];ee&&($e=ee.name.split("/")),(0,a.useEffect)((function(){if(m&&oe&&oe.length>=1){var e=oe.find((function(e){return e.is_latest}))||He;""!==b&&(e=oe.find((function(e){return e.version_id===b}))||He),e.is_delete_marker||Ye(!0),ne(e)}}),[b,m,oe]),(0,a.useEffect)((function(){Z&&""!==t&&j.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(m?"&with_versions=true":"")).then((function(e){var n=e.objects||[];if(m){ae(n),fe(n);var t=n.reduce((function(e,n){return null!==n&&void 0!==n&&n.size?e+parseInt(n.size):e}),0);Fe(t)}else{var i=n[0];ne(i),fe([]),i.is_delete_marker||Ye(!0)}u((0,k.vH)(!1))})).catch((function(e){console.error("Error loading object details",e),u((0,k.vH)(!1))}))}),[Z,i,t,u,m,b]),(0,a.useEffect)((function(){Ve&&""!==t&&j.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects/metadata?prefix=").concat(t)).then((function(e){var n=v()(e,"objectMetadata",{});ze(n),Ye(!1)})).catch((function(e){console.error("Error Getting Metadata Status: ",e.detailedError),Ye(!1)}))}),[i,t,Ve]);var Xe=[];ee&&ee.tags&&(Xe=Object.keys(ee.tags));var Qe=(0,O.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,O.jsx)(f.aNw,{})});if(!ee)return Z?Qe:null;var en=$e.length>0?$e[$e.length-1]:ee.name,nn=[i,qe,[i,ee.name].join("/")],tn=(0,N.F)(i,[E.Ft.S3_PUT_OBJECT_LEGAL_HOLD,E.Ft.S3_PUT_ACTIONS]),on=(0,N.F)(nn,[E.Ft.S3_PUT_OBJECT_TAGGING,E.Ft.S3_PUT_ACTIONS]),an=(0,N.F)(nn,[E.Ft.S3_GET_OBJECT_RETENTION,E.Ft.S3_PUT_OBJECT_RETENTION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],!0),rn=(0,N.F)(nn,[E.Ft.ADMIN_INSPECT_DATA]),sn=(0,N.F)(nn,[E.Ft.S3_GET_BUCKET_VERSIONING,E.Ft.S3_PUT_BUCKET_VERSIONING,E.Ft.S3_GET_OBJECT_VERSION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS]),cn=(0,N.F)(nn,[E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS]),ln=(0,N.F)([i,qe,[i,ee.name].join("/")],[E.Ft.S3_DELETE_OBJECT]),dn=[{action:function(){We(u,i,t,ee)},label:"Download",disabled:!!ee.is_delete_marker||!cn,icon:(0,O.jsx)(f._8t,{}),tooltip:cn?"Download this Object":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"download this object")},{action:function(){T(!0)},label:"Share",disabled:!!ee.is_delete_marker||!cn,icon:(0,O.jsx)(f.aAc,{}),tooltip:cn?"Share this File":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"share this object")},{action:function(){Te(!0)},label:"Preview",disabled:!!ee.is_delete_marker||"none"===(0,D.Bg)(qe)||!cn,icon:(0,O.jsx)(f.P99,{}),tooltip:cn?"Preview this File":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"preview this object")},{action:function(){W(!0)},label:"Legal Hold",disabled:!c||!m||!!ee.is_delete_marker||!tn||""!==b,icon:(0,O.jsx)(f.fNL,{}),tooltip:tn?c?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,E.MK)([E.Ft.S3_PUT_OBJECT_LEGAL_HOLD,E.Ft.S3_PUT_ACTIONS],"change legal hold settings for this object")},{action:function(){P(!0)},label:"Retention",disabled:!m||!!ee.is_delete_marker||!an||""!==b||!c,icon:(0,O.jsx)(f.E9d,{}),tooltip:an?c?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,E.MK)([E.Ft.S3_GET_OBJECT_RETENTION,E.Ft.S3_PUT_OBJECT_RETENTION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],"change Retention Rules for this object")},{action:function(){U(!0)},label:"Tags",disabled:!!ee.is_delete_marker||""!==b||!on,icon:(0,O.jsx)(f.DgT,{}),tooltip:on?"Change Tags for this File":(0,E.MK)([E.Ft.S3_PUT_OBJECT_TAGGING,E.Ft.S3_GET_OBJECT_TAGGING,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],"set Tags on this object")},{action:function(){$(!0)},label:"Inspect",disabled:!m||!!ee.is_delete_marker||""!==b||!rn,icon:(0,O.jsx)(f.Gp8,{}),tooltip:rn?"Inspect this file":(0,E.MK)([E.Ft.ADMIN_INSPECT_DATA],"inspect this file")},{action:function(){u((0,k.db)({status:!p,objectName:en}))},label:p?"Hide Object Versions":"Display Object Versions",icon:(0,O.jsx)(f.cRd,{}),disabled:!m||!(ee.version_id&&"null"!==ee.version_id)||!sn,tooltip:sn?ee.version_id&&"null"!==ee.version_id?"Display Versions for this file":"":(0,E.MK)([E.Ft.S3_GET_BUCKET_VERSIONING,E.Ft.S3_PUT_BUCKET_VERSIONING,E.Ft.S3_GET_OBJECT_VERSION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],"display all versions of this object")}],un={};return _&&(un={backgroundColor:"transparent"}),(0,O.jsxs)(a.Fragment,{children:[w&&ee&&(0,O.jsx)(Y.default,{open:w,closeModalAndRefresh:function(){le(null),T(!1)},bucketName:i,dataObject:ce||ee}),L&&ee&&(0,O.jsx)(me,{open:L,closeModalAndRefresh:function(e){P(!1),e&&u((0,k.vH)(!0))},objectName:qe,objectInfo:ee,bucketName:i}),ge&&(0,O.jsx)(be,{deleteOpen:ge,selectedBucket:i,selectedObject:t,closeDeleteModalAndRefresh:function(e){Ze(!1),e&&""===b?l(!0):(u((0,k.Eq)(!0)),u((0,k.M3)("")),u((0,k.vH)(!0)))},versioningInfo:m?s:void 0,selectedVersion:b}),G&&ee&&(0,O.jsx)(ve,{open:G,closeModalAndRefresh:function(e){W(!1),e&&u((0,k.vH)(!0))},objectName:ee.name,bucketName:i,actualInfo:ee}),we&&ee&&(0,O.jsx)(je.default,{open:we,bucketName:i,object:{name:ee.name,version_id:ee.version_id||"null",size:parseInt(ee.size||"0"),content_type:"",last_modified:ee.last_modified},onClosePreview:function(){Te(!1)}}),R&&ee&&(0,O.jsx)(De,{modalOpen:R,bucketName:i,actualInfo:ee,onCloseAndUpdate:function(e){U(!1),e&&u((0,k.vH)(!0))}}),q&&ee&&(0,O.jsx)(Me,{inspectOpen:q,volumeName:i,inspectPath:ee.name,closeInspectModalAndRefresh:function(e){$(!1),e&&u((0,k.vH)(!0))}}),Pe&&ee&&(0,O.jsx)(Ke,{open:Pe,closeModal:function(){Be(!1)},currentItem:qe,bucketName:i,internalPaths:t,actualInfo:ee}),Z?(0,O.jsx)(a.Fragment,{children:Qe}):(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(Ee,{title:(0,O.jsxs)("div",{className:n.ObjectDetailsTitle,children:[Oe(en,!0),(0,O.jsx)("span",{className:n.objectNameContainer,children:en})]}),items:dn}),(0,O.jsx)(K.Z,{tooltip:ln?"":(0,E.MK)([E.Ft.S3_DELETE_OBJECT],"delete this object"),children:(0,O.jsx)(x.ZP,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,O.jsx)(N.s,{resource:[i,qe,[i,ee.name].join("/")],scopes:[E.Ft.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,O.jsx)(f.zxk,{id:"delete-element-click",icon:(0,O.jsx)(f.pJl,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:function(){Ze(!0)},disabled:""===b&&ee.is_delete_marker,sx:(0,o.Z)({width:"calc(100% - 44px)",margin:"8px 0"},un),label:"Delete".concat(""!==b?" version":"")})})})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.headerForSection,children:[(0,O.jsx)("span",{children:"Object Info"}),(0,O.jsx)(f.Gvh,{})]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Name:"}),(0,O.jsx)("br",{}),(0,O.jsx)("div",{style:{overflowWrap:"break-word"},children:en})]}),""!==b&&(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Version ID:"}),(0,O.jsx)("br",{}),b]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Size:"}),(0,O.jsx)("br",{}),(0,g.ae)(ee.size||"0")]}),ee.version_id&&"null"!==ee.version_id&&""===b&&(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Versions:"}),(0,O.jsx)("br",{}),he.length," version",1!==he.length?"s":"",","," ",(0,g.l5)(Ie)]}),""===b&&(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Last Modified:"}),(0,O.jsx)("br",{}),function(e){var n=new Date,t=new Date(e),i=n.getTime()-t.getTime(),o=(0,g.nF)(i,"ms");return""!==o.trim()?"".concat(o," ago"):"Just now"}(ee.last_modified)]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"ETAG:"}),(0,O.jsx)("br",{}),ee.etag||"N/A"]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Tags:"}),(0,O.jsx)("br",{}),0===Xe.length?"N/A":Xe.map((function(e,n){return(0,O.jsxs)("span",{children:[e,":",v()(ee,"tags.".concat(e),""),n div":{borderBottomColor:"#F8F8F8"}},"@media (max-width: 799px)":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:"#E2E2E2"}}}},versionContainer:{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10},"@media (max-width: 799px)":{fontSize:14,"& svg.min-icon":{display:"none"}}},buttonContainer:{textAlign:"right","& button":{marginLeft:"1.5rem"},"@media (max-width: 600px)":{"& button":{marginLeft:"5px"}}},versionID:{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},versionData:{marginRight:"10px",fontSize:12,color:"#868686","@media (max-width: 799px)":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"}},ctrItem:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:"#F8F8F8",left:"24px"},"@media (max-width: 799px)":{"&::before":{display:"none"}}},collapsableInfo:{"@media (max-width: 799px)":{display:"flex",flexDirection:"column"}},versionItem:{"@media (max-width: 799px)":{display:"none"}}})}))((function(e){var n=e.classes,t=e.fileName,i=e.versionInfo,o=e.isSelected,a=e.checkable,r=e.isChecked,s=e.onCheck,c=e.onShare,l=e.onDownload,d=e.onRestore,u=e.onPreview,h=e.globalClick,m=e.index,b=e.key,v=e.style,j=i.is_delete_marker,Z=[{icon:(0,O.jsx)(f.P99,{}),action:u,tooltip:"Preview"},{icon:(0,O.jsx)(f._8t,{}),action:l,tooltip:"Download this version"},{icon:(0,O.jsx)(f.aAc,{}),action:c,tooltip:"Share this version"},{icon:(0,O.jsx)(f.D7Y,{}),action:d,tooltip:"Restore this version"}],_=null;i.is_delete_marker?_="deleted":i.is_latest?_="current":"null"===i.version_id&&(_="null");var S=p.ou.now();return i.last_modified&&(S=p.ou.fromISO(i.last_modified)),(0,O.jsx)(x.ZP,{container:!0,flex:1,className:n.ctrItem,onClick:function(){h(i)},style:v,children:(0,O.jsx)(x.ZP,{item:!0,xs:12,className:"".concat(n.intermediateLayer," ").concat(o?"selected":""),children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:"".concat(n.mainFileVersionItem," ").concat(i.is_delete_marker?"deleted":""),children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,justifyContent:"space-between",children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(x.ZP,{item:!0,xs:!0,md:4,className:n.versionContainer,children:[a&&(0,O.jsx)($e.Z,{checked:r,id:"select-".concat(i.version_id),label:"",name:"select-".concat(i.version_id),onChange:function(e){e.stopPropagation(),e.preventDefault(),s(i.version_id||"")},value:i.version_id||"",disabled:i.is_delete_marker,overrideCheckboxStyles:{paddingLeft:0,height:34,width:25},noTopMargin:!0}),Oe(t,!0)," v",m.toString(),(0,O.jsx)("span",{className:n.versionItem,children:_&&(0,O.jsx)(qe,{type:_})})]}),(0,O.jsx)(x.ZP,{item:!0,xs:10,md:8,className:n.buttonContainer,children:Z.map((function(e,t){return(0,O.jsx)(re.Z,{title:e.tooltip,children:(0,O.jsx)(y.Z,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(t.toString()),className:"".concat(n.spacing," ").concat(j?n.buttonDisabled:""),disabled:j,onClick:function(n){n.stopPropagation(),j?n.preventDefault():e.action(i)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(t.toString()))}))})]})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.versionID,children:"null"!==i.version_id?i.version_id:"-"}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.collapsableInfo,children:[(0,O.jsxs)("span",{className:n.versionData,children:[(0,O.jsx)("strong",{children:"Last modified:"})," ",S.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)")]}),(0,O.jsxs)("span",{className:n.versionData,children:[(0,O.jsx)("strong",{children:"Size:"})," ",(0,g.ae)(i.size||"0")]})]})]})})},b)})),Qe=t(90673),en=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=(0,d.TL)(),c=(0,a.useState)(!1),l=(0,h.Z)(c,2),u=l[0],m=l[1],p=(0,a.useState)(""),b=(0,h.Z)(p,2),v=b[0],Z=b[1],_=(0,a.useState)(!1),S=(0,h.Z)(_,2),C=S[0],w=S[1],T=(0,r.v9)((function(e){return e.objectBrowser.retentionConfig})),y=(0,N.F)([i],[E.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===T||void 0===T?void 0:T.mode);if((0,a.useEffect)((function(){u&&j.Z.invoke("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o,"&non_current_versions=true").concat(C?"&bypass=true":"")).then((function(){n(!0)})).catch((function(e){s((0,F.Ih)(e)),m(!1)}))}),[u,n,s,o,i,C]),!o)return null;return(0,O.jsx)(pe.Z,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:t,titleIcon:(0,O.jsx)(f.NvT,{}),isLoading:u,onConfirm:function(){m(!0)},onClose:function(){return n(!1)},confirmButtonProps:{disabled:"YES, PROCEED"!==v||u},confirmationContent:(0,O.jsxs)(fe.Z,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,O.jsx)("b",{children:(0,g.IO)(o)}),"? ",(0,O.jsx)("br",{}),y&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)("div",{style:{marginTop:10},children:(0,O.jsx)(ne.Z,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:C,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){w(!C)},description:""})})}),(0,O.jsx)("br",{}),"To continue please type ",(0,O.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(Le.Z,{id:"type-confirm",name:"retype-tenant",onChange:function(e){Z(e.target.value)},label:"",value:v})})]})})},nn=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedVersions,s=e.selectedObject,c=(0,d.TL)(),l=(0,a.useState)(!1),u=(0,h.Z)(l,2),m=u[0],p=u[1],x=(0,a.useState)(!1),b=(0,h.Z)(x,2),v=b[0],g=b[1],Z=(0,r.v9)((function(e){return e.objectBrowser.retentionConfig})),_=(0,N.F)([i],[E.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===Z||void 0===Z?void 0:Z.mode);return(0,a.useEffect)((function(){if(m){var e=o.map((function(e){return{path:s,versionID:e,recursive:!1}}));e.length>0&&j.Z.invoke("POST","/api/v1/buckets/".concat(i,"/delete-objects?all_versions=false").concat(v?"&bypass=true":""),e).then((function(){p(!1),n(!0)})).catch((function(e){c((0,F.Ih)(e)),p(!1)}))}}),[m,n,i,s,o,v,c]),o?(0,O.jsx)(pe.Z,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:t,titleIcon:(0,O.jsx)(f.NvT,{}),isLoading:m,onConfirm:function(){p(!0)},onClose:function(){return n(!1)},confirmationContent:(0,O.jsxs)(fe.Z,{children:["Are you sure you want to delete the selected ",o.length," ","versions for ",(0,O.jsx)("strong",{children:s}),"?",_&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)("div",{style:{marginTop:10},children:(0,O.jsx)(ne.Z,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:v,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){g(!v)},description:""})})})]})}):null},tn=t(5171),on={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},an=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({versionsContainer:{padding:10,"@media (max-width: 799px)":{minHeight:800}},noBottomBorder:{borderBottom:0},versionsVirtualPanel:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto","@media (max-width: 799px)":{height:600}},screenTitleContainer:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",backgroundColor:"#F8F8F8",left:"24px",height:"40px",bottom:0},"@media (max-width: 799px)":{"&::before":{display:"none"}}},sortByLabel:{color:"#838383",fontWeight:"bold",whiteSpace:"nowrap",marginRight:12,fontSize:14,"@media (max-width: 600px)":{display:"none"}}},u.OR),u.VX),u.bK),u.VI),u.cx),u.C4),u.Bz))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,o=(0,d.TL)(),s=(0,r.v9)((function(e){return e.objectBrowser.searchVersions})),c=(0,r.v9)((function(e){return e.objectBrowser.loadingVersions})),l=(0,r.v9)((function(e){return e.objectBrowser.selectedVersion})),u=(0,r.v9)(F.N5),m=(0,a.useState)(!1),p=(0,h.Z)(m,2),b=p[0],Z=p[1],S=(0,a.useState)(null),C=(0,h.Z)(S,2),w=C[0],T=C[1],y=(0,a.useState)(null),N=(0,h.Z)(y,2),E=N[0],I=N[1],L=(0,a.useState)([]),P=(0,h.Z)(L,2),R=P[0],U=P[1],M=(0,a.useState)(!1),z=(0,h.Z)(M,2),G=z[0],W=z[1],H=(0,a.useState)(null),J=(0,h.Z)(H,2),V=J[0],q=J[1],$=(0,a.useState)("date"),X=(0,h.Z)($,2),Q=X[0],ee=X[1],ne=(0,a.useState)(!1),te=(0,h.Z)(ne,2),ie=te[0],oe=te[1],ae=(0,a.useState)(!1),re=(0,h.Z)(ae,2),se=re[0],ce=re[1],le=(0,a.useState)(!1),de=(0,h.Z)(le,2),ue=de[0],he=de[1],me=(0,a.useState)([]),fe=(0,h.Z)(me,2),pe=fe[0],xe=fe[1],be=(0,a.useState)(!1),ve=(0,h.Z)(be,2),ge=ve[0],Ze=ve[1],_e=[];w&&(_e=w.name.split("/")),(0,a.useEffect)((function(){c||w||o((0,k.Eq)(!0))}),[c,w,o]),(0,a.useEffect)((function(){c&&""!==t&&j.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(u?"&with_versions=true":"")).then((function(e){var n=v()(e,"objects",[]),i=(0,g.IO)(t),a=n.filter((function(e){return e.name===i}));u?(T(a.find((function(e){return e.is_latest}))||on),U(a)):(T(a[0]),U([])),o((0,k.Eq)(!1))})).catch((function(e){o((0,F.Ih)(e)),o((0,k.Eq)(!1))}))}),[c,i,t,o,u]);var Se=function(e){I(e),Z(!0)},Ce=function(e){I(e),oe(!0)},we=function(e){q(e),W(!0)},Te=function(e){!function(e){var n=(0,g.LL)("".concat(i,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),a=(0,ze.YO)(8),r=(0,D.LR)(i,t,e.version_id,parseInt(e.size||"0"),null,a,(function(e){o((0,k.RO)({instanceID:n,progress:e}))}),(function(){o((0,k.oK)(n))}),(function(e){o((0,k.qJ)({instanceID:n,msg:e}))}),(function(){o((0,k.Im)(n))}));(0,ze.EN)(a,r),o((0,k.Mc)({ID:a,bucketName:i,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}(e)},ye=function(e){o((0,k.M3)(e.version_id||""))},Ne=R.filter((function(e){return!!e.version_id&&e.version_id.includes(s)})),Ee=R.reduce((function(e,n){return n.size?e+parseInt(n.size):e}),0);Ne.sort((function(e,n){if("size"===Q)return e.size&&n.size?e.sizen.size?1:0:0;var t=new Date(e.last_modified).getTime(),i=new Date(n.last_modified).getTime();return ti?-1:0}));var Ie=function(e){if(pe.includes(e)){var n=pe.filter((function(n){return n!==e}));xe(n)}else{var t=(0,_.Z)(pe);t.push(e),xe(t)}};return(0,O.jsxs)(a.Fragment,{children:[b&&w&&(0,O.jsx)(Y.default,{open:b,closeModalAndRefresh:function(){I(null),Z(!1),oe(!1)},bucketName:i,dataObject:E||w}),G&&w&&V&&(0,O.jsx)(Ye,{restoreOpen:G,bucketName:i,versionToRestore:V,objectPath:w.name,onCloseAndUpdate:function(e){W(!1),q(null),e&&(o((0,k.Eq)(!0)),o((0,k.vH)(!0)))}}),ie&&w&&(0,O.jsx)(je.default,{open:ie,bucketName:i,object:{name:w.name,version_id:E&&E.version_id?E.version_id:"null",size:parseInt(E&&E.size?E.size:"0"),content_type:"",last_modified:w.last_modified},onClosePreview:function(){oe(!1)}}),se&&(0,O.jsx)(en,{deleteOpen:se,closeDeleteModalAndRefresh:function(e){ce(!1),e&&(o((0,k.Eq)(!0)),o((0,k.M3)("")),o((0,k.vH)(!0)))},selectedBucket:i,selectedObject:t}),ge&&(0,O.jsx)(nn,{selectedBucket:i,selectedObject:(0,g.IO)(t),deleteOpen:ge,selectedVersions:pe,closeDeleteModalAndRefresh:function(e){Ze(!1),e&&(o((0,k.Eq)(!0)),o((0,k.M3)("")),o((0,k.vH)(!0)),xe([]))}}),(0,O.jsxs)(x.ZP,{container:!0,className:n.versionsContainer,children:[!w&&(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(Ve.Z,{})}),w&&(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(B,{bucketName:i,internalPaths:(0,g.IO)(t),hidePathButton:!0})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,O.jsx)(A.Z,{icon:(0,O.jsx)("span",{className:n.listIcon,children:(0,O.jsx)(f.cRd,{})}),title:(0,O.jsxs)("span",{className:n.titleSpacer,children:[_e.length>0?_e[_e.length-1]:w.name," ","Versions"]}),subTitle:(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,O.jsx)("span",{className:n.detailsSpacer,children:(0,O.jsxs)("strong",{children:[R.length," Version",1===R.length?"":"s","\xa0\xa0\xa0"]})}),(0,O.jsx)("span",{className:n.detailsSpacer,children:(0,O.jsx)("strong",{children:(0,g.l5)(Ee)})})]})}),actions:(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(K.Z,{tooltip:"Select Multiple Versions",children:(0,O.jsx)(f.zxk,{id:"select-multiple-versions",onClick:function(){he(!ue)},icon:(0,O.jsx)(f.amE,{}),variant:ue?"callAction":"regular",style:{marginRight:8}})}),ue&&(0,O.jsx)(K.Z,{tooltip:"Delete Selected Versions",children:(0,O.jsx)(f.zxk,{id:"delete-multiple-versions",onClick:function(){Ze(!0)},icon:(0,O.jsx)(f.pJl,{}),variant:"secondary",style:{marginRight:8},disabled:0===pe.length})}),(0,O.jsx)(K.Z,{tooltip:"Delete Non Current Versions",children:(0,O.jsx)(f.zxk,{id:"delete-non-current",onClick:function(){ce(!0)},icon:(0,O.jsx)(f.utM,{}),variant:"secondary",style:{marginRight:15},disabled:R.length<=1})}),(0,O.jsx)("span",{className:n.sortByLabel,children:"Sort by"}),(0,O.jsx)(Qe.Z,{id:"sort-by",label:"",value:Q,onChange:function(e){ee(e.target.value)},name:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}]})]}),className:n.noBottomBorder})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.versionsVirtualPanel,children:w.version_id&&"null"!==w.version_id&&(0,O.jsx)(tn.aV,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:Ne.length,rowHeight:108,rowRenderer:function(e){var n=e.key,t=e.index,i=(e.isScrolling,e.isVisible,e.style),o=R.length-t;return(0,O.jsx)(Xe,{style:i,fileName:(null===w||void 0===w?void 0:w.name)||"",versionInfo:Ne[t],index:o,onDownload:Te,onRestore:we,onShare:Se,onPreview:Ce,globalClick:ye,isSelected:l===Ne[t].version_id,checkable:ue,onCheck:Ie,isChecked:pe.includes(Ne[t].version_id||"")},n)}})})]})]})]})})),rn=t(9859),sn=function(e){if(e.name.endsWith("/"))return"";var n=p.ou.now(),t=p.ou.fromISO(e.last_modified);return n.hasSame(t,"day")&&n.hasSame(t,"month")&&n.hasSame(t,"year")?"Today, ".concat(t.toFormat("HH:mm")):t.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)")},cn=function(e){return e.name.endsWith("/")||!e.size?"-":(0,g.ae)(String(e.size))},ln=[{label:"Name",elementKey:"name",renderFunction:Oe,enableSort:!0},{label:"Last Modified",elementKey:"last_modified",renderFunction:sn,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:cn,renderFullObject:!0,width:100,enableSort:!0}],dn=[{label:"Name",elementKey:"name",renderFunction:Oe,enableSort:!0},{label:"Object Date",elementKey:"last_modified",renderFunction:sn,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:cn,renderFullObject:!0,width:100,enableSort:!0},{label:"Deleted",elementKey:"delete_flag",renderFunction:function(e){return e?"Yes":"No"},width:60}],un=t(92983),hn=t(46078),mn=(0,w.Z)((function(e){return(0,c.Z)({browsePaper:{border:0,height:"calc(100vh - 290px)","&.isEmbedded":{height:"calc(100vh - 315px)"},"&.actionsPanelOpen":{minHeight:"100%"},"@media (max-width: 800px)":{width:800}},parentWrapper:{position:"relative",height:"calc(100% - 60px)","@media (max-width: 800px)":{overflowX:"auto"}},"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}}})})),fn=function(e){var n=e.internalPaths,t=mn(),i=(0,d.TL)(),o=(0,s.UO)(),c=(0,s.s0)(),l=(0,a.useState)("ASC"),u=(0,h.Z)(l,2),m=u[0],f=u[1],p=(0,a.useState)("name"),x=(0,h.Z)(p,2),b=x[0],j=x[1],Z=o.bucketName||"",S=(0,r.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),C=(0,r.v9)((function(e){return e.objectBrowser.loadingObjects})),w=(0,r.v9)(hn.$4),T=!(null===w||void 0===w||!w.includes("object-browser-only")),y=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),I=(0,r.v9)((function(e){return e.objectBrowser.records})),F=(0,r.v9)((function(e){return e.objectBrowser.searchObjects})),L=(0,r.v9)((function(e){return e.objectBrowser.selectedObjects})),P=(0,r.v9)((function(e){return e.system.anonymousMode})),B=(0,N.F)(Z,[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET]),A=I.filter((function(e){return""===F||e.name.toLowerCase().indexOf(F.toLowerCase())>=0})).sort((0,D.P_)(b)),R=[];R="ASC"===m?A:A.reverse();var U=[{type:"view",label:"View",onClick:function(e){var t=e.name,o="/browser/".concat(Z).concat(t?"/".concat((0,g.LL)(t)):"");!P||null===n||e.name.endsWith("/")?(i((0,k.S2)([])),c(o),P||(i((0,k.vb)(!0)),i((0,k.Eq)(!0)),i((0,k.d_)(!0))),i((0,k.EE)("".concat(t?"".concat((0,g.LL)(t)):"")))):We(i,Z,"".concat((0,g.LL)(t)),e)},sendOnlyId:!1}];return(0,O.jsx)(un.Z,{itemActions:U,columns:y?dn:ln,isLoading:C,entityName:"Objects",idField:"name",records:R,customPaperHeight:"".concat(t.browsePaper," ").concat(T?"isEmbedded":""," ").concat(S?"actionsPanelOpen":""),selectedItems:L,onSelect:P?void 0:function(e){var n=e.target,t=n.value,o=n.checked,a=(0,_.Z)(L);return o?a.push(t):a=a.filter((function(e){return e!==t})),i((0,k.S2)(a)),i((0,k.EE)(null)),a},customEmptyMessage:B||P?"This location is empty".concat(y?"":", please try uploading a new file"):(0,E.MK)([E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],"view Objects in this bucket"),sortConfig:{currentSort:b,currentDirection:m,triggerSort:function(e){var n=v()(e,"sortDirection","DESC");j(e.sortBy),f(n),i((0,k.Cn)(!0))}},onSelectAll:function(){if(i((0,k.EE)(null)),L.length!==R.length){var e=R.map((function(e){return e.name}));i((0,k.S2)(e))}else i((0,k.S2)([]))},rowStyle:function(e){var n,t=e.index;return null!==(n=R[t])&&void 0!==n&&n.delete_flag?"deleted":""},parentClassName:t.parentWrapper})},pn=t(96382),xn=(0,pn.hg)("objectBrowser/downloadSelected",function(){var e=(0,Re.Z)((0,Ae.Z)().mark((function e(n,t){var i,o,a,r,s,c;return(0,Ae.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getState,t.rejectWithValue,o=t.dispatch,a=i(),r=function(e){var t=(0,g.LL)("".concat(n,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ze.YO)(8),a=(0,D.LR)(n,(0,g.LL)(e.name),e.version_id,e.size,null,i,(function(e){o((0,k.RO)({instanceID:t,progress:e}))}),(function(){o((0,k.oK)(t))}),(function(e){o((0,k.qJ)({instanceID:t,msg:e}))}),(function(){o((0,k.Im)(t))}));(0,ze.EN)(i,a),o((0,k.Mc)({ID:i,bucketName:n,done:!1,instanceID:t,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))},0===a.objectBrowser.selectedObjects.length){e.next=12;break}if(s=[],c=function(e){return a.objectBrowser.selectedObjects.includes(e.name)},1!==(s=a.objectBrowser.records.filter(c)).length){e.next=11;break}if(!(s[0].name.length>200&&(0,g.mv)().toLowerCase().includes("win"))){e.next=11;break}return o((0,k.$y)(s[0])),e.abrupt("return");case 11:s.forEach((function(e){r(e)}));case 12:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),bn=(0,pn.hg)("objectBrowser/openPreview",function(){var e=(0,Re.Z)((0,Ae.Z)().mark((function e(n,t){var i,o,a,r,s;return(0,Ae.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,t.rejectWithValue,o=t.dispatch,1===(a=i()).objectBrowser.selectedObjects.length&&(s=function(e){return a.objectBrowser.selectedObjects.includes(e.name)},(r=a.objectBrowser.records.find(s))&&(o((0,k.eP)(r)),o((0,k.ei)(!0))));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),vn=(0,pn.hg)("objectBrowser/openShare",function(){var e=(0,Re.Z)((0,Ae.Z)().mark((function e(n,t){var i,o,a,r,s;return(0,Ae.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,t.rejectWithValue,o=t.dispatch,1===(a=i()).objectBrowser.selectedObjects.length&&(s=function(e){return a.objectBrowser.selectedObjects.includes(e.name)},(r=a.objectBrowser.records.find(s))&&(o((0,k.eP)(r)),o((0,k.Qf)(!0))));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),jn=t(59114),gn=function(){var e=(0,d.TL)(),n=(0,r.v9)((function(e){return e.objectBrowser.searchObjects}));return(0,O.jsx)(jn.Z,{placeholder:"Start typing to filter objects in the bucket",onChange:function(n){e((0,k.G4)(n))},value:n})},Zn=(0,I.Z)(a.lazy((function(){return t.e(711).then(t.bind(t,50711))}))),_n=(0,I.Z)(a.lazy((function(){return Promise.resolve().then(t.bind(t,34433))}))),Sn=(0,I.Z)(a.lazy((function(){return Promise.all([t.e(3691),t.e(9683),t.e(6901)]).then(t.bind(t,26901))}))),Cn=(0,I.Z)(a.lazy((function(){return Promise.resolve().then(t.bind(t,78562))}))),wn=(0,w.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({badgeOverlap:{"& .MuiBadge-badge":{top:10,right:1,width:5,height:5,minWidth:5}}},u.VX),u.OR),u.qg),{},{searchField:(0,o.Z)((0,o.Z)({},u.qg.searchField),{},{maxWidth:380}),screenTitleContainer:{border:"#EAEDEE 1px solid"},labelStyle:{color:"#969FA8",fontSize:"12px"},breadcrumbsContainer:{padding:"12px 14px 5px"},fullContainer:{position:"relative","@media (max-width: 799px)":{width:0}},hideListOnSmall:{"@media (max-width: 799px)":{display:"none"}},actionsSection:{display:"flex",justifyContent:"space-between",width:"100%"}},u.C4),u.cx),u.Bz))})),Tn={borderWidth:2,borderRadius:2,borderColor:"#eeeeee",outline:"none"},yn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#2196f3"},Nn={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#00e676"},En=function(){var e,n=wn(),t=(0,d.TL)(),i=(0,s.UO)(),c=(0,s.s0)(),l=(0,s.TH)(),u=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),b=(0,r.v9)((function(e){return e.objectBrowser.rewind.bucketToRewind})),_=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),S=(0,r.v9)((function(e){return e.objectBrowser.showDeleted})),C=(0,r.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),w=(0,r.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),T=(0,r.v9)((function(e){return e.objectBrowser.loadingObjects})),y=(0,r.v9)((function(e){return e.objectBrowser.simplePath})),I=(0,r.v9)((function(e){return e.objectBrowser.versionInfo})),L=(0,r.v9)((function(e){return e.objectBrowser.lockingEnabled})),P=(0,r.v9)((function(e){return e.objectBrowser.downloadRenameModal})),U=(0,r.v9)((function(e){return e.objectBrowser.selectedPreview})),M=(0,r.v9)((function(e){return e.objectBrowser.shareFileModalOpen})),z=(0,r.v9)((function(e){return e.objectBrowser.previewOpen})),G=(0,r.v9)((function(e){return e.objectBrowser.selectedBucket})),H=(0,r.v9)((function(e){return e.system.anonymousMode})),V=(0,r.v9)((function(e){return e.system.overrideStyles})),Y=(0,r.v9)(rn.HQ),q=(0,r.v9)(rn.G6),$=(0,a.useState)(!1),X=(0,h.Z)($,2),Q=X[0],ee=X[1],ne=(0,a.useState)(!1),te=(0,h.Z)(ne,2),ie=te[0],oe=te[1],ae=(0,a.useState)(!1),re=(0,h.Z)(ae,2),se=re[0],ce=re[1],le=(0,a.useState)(!1),de=(0,h.Z)(le,2),ue=de[0],he=de[1],me=(0,a.useState)(!1),fe=(0,h.Z)(me,2),pe=fe[0],xe=fe[1],be=(0,a.useState)(null),ve=(0,h.Z)(be,2),je=ve[0],ge=ve[1],Ze=i.bucketName||"",_e=l.pathname.split("/browser/".concat(Ze,"/")),Se=2===_e.length?_e[1]:"",Ce=(0,g.IO)(Se),we=Ce.split("/").filter((function(e){return""!==e})),Te=[Ze];we.length>0&&(Te=Te.concat(we));var ye=(0,a.useRef)(null),Ne=(0,a.useRef)(null),Ie=(0,N.F)(Ze,[E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS]),Fe=(0,N.F)(Ze,[E.Ft.S3_DELETE_OBJECT]),ke=(0,N.F)(Te,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],!0,!0)||H,Oe=(0,N.F)(Ze,[E.Ft.S3_DELETE_OBJECT]),Le=(0,r.v9)((function(e){return e.objectBrowser.selectedObjects}));(0,a.useEffect)((function(){t((0,k.G4)("")),t((0,k.Cn)(!0)),t((0,k.S2)([]))}),[y,t]),(0,a.useEffect)((function(){u&&b!==Ze&&t((0,k._w)())}),[u,b,Ze,t]),(0,a.useEffect)((function(){null!==Ne.current&&(Ne.current.setAttribute("directory",""),Ne.current.setAttribute("webkitdirectory",""))}),[Ne]),(0,a.useEffect)((function(){if(1===Le.length){var e=Le[0];"none"!==(0,D.Bg)(e)?xe(!0):xe(!1),e.endsWith("/")?he(!1):he(!0)}else he(!1),xe(!1)}),[Le]),(0,a.useEffect)((function(){je||H||j.Z.invoke("GET","/api/v1/buckets/".concat(Ze,"/quota")).then((function(e){var n=null;e.quota&&(n=e),ge(n)})).catch((function(e){console.error("Error Getting Quota Status: ",e.detailedError),ge(null)}))}),[je,Ze,H]),(0,a.useEffect)((function(){Le.length>0?t((0,k.vb)(!0)):0!==Le.length||null!==w||T||t((0,k.vb)(!1))}),[Le,w,t,T]),(0,a.useEffect)((function(){se||(t((0,rn.d5)(!0)),ce(!0))}),[se,t,ce]),(0,a.useEffect)((function(){Y&&!H&&j.Z.invoke("GET","/api/v1/buckets/".concat(Ze)).then((function(e){t((0,rn.d5)(!1)),t((0,rn.f4)(e)),t((0,k.RS)(Ze))})).catch((function(e){t((0,rn.d5)(!1)),t((0,F.Ih)(e))}))}),[Ze,Y,t,H]),(0,a.useEffect)((function(){""!==G&&j.Z.invoke("GET","/api/v1/buckets/".concat(G,"/retention")).then((function(e){t((0,k.c8)(e))})).catch((function(e){t((0,k.c8)(null))}))}),[G,t]);var Pe=function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();for(var n=[],t=0;t1,S="An error occurred while uploading the file".concat(_?"s":"","."),C={413:"Error - File size too large"};Z.withCredentials=!1,Z.onload=function(e){if(Z.status>=200&&Z.status<300)t((0,k.oK)(j)),r({status:Z.status}),(0,ze.GM)(p);else{if(C[Z.status])S=C[Z.status];else if(Z.response)try{var n=JSON.parse(Z.response);S=n.detailedMessage}catch(i){S="something went wrong"}t((0,k.qJ)({instanceID:j,msg:S})),s({status:Z.status,message:S}),(0,ze.GM)(p)}},Z.upload.addEventListener("error",(function(e){s(S),t((0,k.qJ)({instanceID:j,msg:"A network error occurred."}))})),Z.upload.addEventListener("progress",(function(e){var n=Math.floor(100*e.loaded/e.total);t((0,k.RO)({instanceID:j,progress:n}))})),Z.onerror=function(){s(S),t((0,k.qJ)({instanceID:j,msg:"A network error occurred."}))},Z.onloadend=function(){0===e.length&&t((0,k.Cn)(!0))},Z.onabort=function(){t((0,k.Im)(j))};var w=new FormData;void 0!==a.size&&(w.append(a.size.toString(),d,l),(0,ze.EN)(p,Z),t((0,k.Mc)({ID:p,bucketName:n,done:!1,instanceID:j,percentage:0,prefix:"".concat((0,g.IO)(u)).concat(l),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,ze.N5)(p,w),(0,ze.EN)(p,Z))}))},r=[];t((0,k.LD)());for(var s=0;s0){var i=r.length,o=r.length-n.length,a={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(o,"/").concat(i)};t((0,F.Ih)(a))}t((0,k.Cn)(!0)),t((0,k.S2)([]))}))}(e,Ze,i,n)}),[Ze,t,y,H]),De=(0,a.useCallback)((function(e){if(e&&e.length>0&&ke){var n=e[0].path;Be(e,n)}ke||t((0,F.Ih)({errorMessage:"Upload not allowed",detailedError:(0,E.MK)([E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],"upload objects to this location")}))}),[Be]),Ae=(0,m.uI)({noClick:!0,onDrop:De}),Re=Ae.getRootProps,Ue=Ae.getInputProps,Me=Ae.isDragActive,Ge=Ae.isDragAccept,We=(0,a.useMemo)((function(){return(0,o.Z)((0,o.Z)((0,o.Z)({},Tn),Me?yn:{}),Ge?Nn:{})}),[Me,Ge]),He=function(e){if(t((0,k.EE)(null)),t((0,k.db)({status:!1})),C&&null!==w){var n=(0,g.IO)(Se).split("/");n.pop();var i="";n&&n.length>0&&(i="".concat(n.join("/"),"/")),c("/browser/".concat(Ze,"/").concat((0,g.LL)(i)))}t((0,k.vb)(!1)),t((0,k.S2)([])),e&&t((0,k.Cn)(!0))},Ve=p.ou.now();null!==q&&void 0!==q&&q.creation_date&&(Ve=p.ou.fromISO(q.creation_date));var Ye={},qe={};V&&(Ye={backgroundColor:"transparent"},qe={color:v()(V,"buttonStyles.textColor","#fff"),backgroundColor:v()(V,"buttonStyles.backgroundColor","#07193E"),"&:hover":{color:v()(V,"buttonStyles.hoverText","#fff"),backgroundColor:v()(V,"buttonStyles.hoverColor","#0D2453")},"&:active":{color:v()(V,"buttonStyles.activeText","#fff"),backgroundColor:v()(V,"buttonStyles.activeColor","#05132F")}});var Xe=[{action:function(){t(xn(Ze))},label:"Download",disabled:!Ie||0===(null===Le||void 0===Le?void 0:Le.length),icon:(0,O.jsx)(f._8t,{}),tooltip:Ie?"Download Selected":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"download objects from this bucket")},{action:function(){t(vn())},label:"Share",disabled:1!==Le.length||!ue,icon:(0,O.jsx)(f.aAc,{}),tooltip:ue?"Share Selected File":"Sharing unavailable"},{action:function(){t(bn())},label:"Preview",disabled:1!==Le.length||!pe,icon:(0,O.jsx)(f.P99,{}),tooltip:pe?"Preview Selected File":"Preview unavailable"},{action:function(){ee(!0)},label:"Delete",icon:(0,O.jsx)(f.pJl,{}),disabled:!Fe||0===Le.length||!Oe,tooltip:Fe?"Delete Selected Files":(0,E.MK)([E.Ft.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,O.jsxs)(a.Fragment,{children:[M&&U&&(0,O.jsx)(_n,{open:M,closeModalAndRefresh:function(){t((0,k.Qf)(!1)),t((0,k.eP)(null))},bucketName:Ze,dataObject:{name:U.name,last_modified:"",version_id:U.version_id}}),Q&&(0,O.jsx)(Zn,{deleteOpen:Q,selectedBucket:Ze,selectedObjects:Le,closeDeleteModalAndRefresh:function(e){ee(!1),e&&(t((0,F.y1)("Objects deleted successfully.")),t((0,k.S2)([])),t((0,k.Cn)(!0)))},versioning:I}),ie&&(0,O.jsx)(Sn,{open:ie,closeModalAndRefresh:function(){oe(!1)},bucketName:Ze}),z&&(0,O.jsx)(Cn,{open:z,bucketName:Ze,object:U,onClosePreview:function(){t((0,k.ei)(!1)),t((0,k.eP)(null))}}),!!P&&(0,O.jsx)(Ke,{open:!!P,closeModal:function(){t((0,k.$y)(null))},currentItem:(null===(e=P.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:Ze,internalPaths:Se,actualInfo:{name:P.name,last_modified:"",version_id:P.version_id,size:P.size.toString()}}),(0,O.jsxs)(R.Z,{variant:"full",children:[H&&(0,O.jsx)("div",{style:{paddingBottom:16},children:(0,O.jsx)(gn,{})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,O.jsx)(A.Z,{icon:(0,O.jsx)("span",{children:(0,O.jsx)(f.wNb,{style:{width:30}})}),title:(0,O.jsx)("span",{className:n.titleSpacer,children:Ze}),subTitle:H?null:(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,O.jsxs)("span",{className:n.detailsSpacer,children:["Created on:\xa0\xa0",(0,O.jsx)("strong",{children:null!==q&&void 0!==q&&q.creation_date?Ve.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"):""})]}),(0,O.jsxs)("span",{className:n.detailsSpacer,children:["Access:\xa0\xa0\xa0",(0,O.jsx)("strong",{children:(null===q||void 0===q?void 0:q.access)||""})]}),q&&(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)("span",{className:n.detailsSpacer,children:[q.size&&(0,O.jsx)(a.Fragment,{children:(0,g.l5)(q.size)}),q.size&&je&&(0,O.jsxs)(a.Fragment,{children:[" / ",(0,g.l5)(je.quota)]}),q.size&&q.objects?" - ":"",q.objects&&(0,O.jsxs)(a.Fragment,{children:[q.objects,"\xa0Object",q.objects&&1!==q.objects?"s":""]})]})})]})}),actions:(0,O.jsxs)("div",{className:n.actionsSection,children:[!H&&(0,O.jsx)(K.Z,{tooltip:"Rewind Bucket",children:(0,O.jsx)(f.zxk,{id:"rewind-objects-list",label:"Rewind",icon:(0,O.jsx)(Z.Z,{badgeContent:" ",color:"secondary",variant:"dot",invisible:!u,className:n.badgeOverlap,sx:{height:16},children:(0,O.jsx)(f.F_y,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:function(){oe(!0)},disabled:!I||!(0,N.F)(Ze,[E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS]),sx:Ye})}),(0,O.jsx)(K.Z,{tooltip:"Reload List",children:(0,O.jsx)(f.zxk,{id:"refresh-objects-list",label:"Refresh",icon:(0,O.jsx)(f.DuK,{}),variant:"regular",onClick:function(){_?t((0,k.Eq)(!0)):(t((0,k.o_)()),t((0,k._D)(!0)),t((0,k.Cn)(!0)))},disabled:!H&&(!(0,N.F)(Ze,[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET])||u),sx:Ye})}),(0,O.jsx)("input",{type:"file",multiple:!0,onChange:Pe,style:{display:"none"},ref:ye}),(0,O.jsx)("input",{type:"file",multiple:!0,onChange:Pe,style:{display:"none"},ref:Ne}),(0,O.jsx)(W,{bucketName:Ze,uploadPath:Te.join("/"),uploadFileFunction:function(e){ye&&ye.current&&ye.current.click(),e()},uploadFolderFunction:function(e){Ne&&Ne.current&&Ne.current.click(),e()},overrideStyles:qe})]})})}),(0,O.jsxs)("div",(0,o.Z)((0,o.Z)({id:"object-list-wrapper"},Re({style:(0,o.Z)({},We)})),{},{children:[(0,O.jsx)("input",(0,o.Z)({},Ue())),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.tableBlock,sx:{border:"#EAEDEE 1px solid",borderTop:0},children:[_?(0,O.jsx)(a.Fragment,{children:null!==w&&(0,O.jsx)(an,{internalPaths:w,bucketName:Ze})}):(0,O.jsx)(N.s,{scopes:[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],resource:Ze,errorProps:{disabled:!0},children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.fullContainer,children:[!H&&(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.breadcrumbsContainer,children:(0,O.jsx)(B,{bucketName:Ze,internalPaths:Ce,additionalOptions:!I||u?null:(0,O.jsx)("div",{children:(0,O.jsx)($e.Z,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:function(){t((0,k.o_)()),t((0,k.mz)(!S)),He(!0)},checked:S,overrideLabelClasses:n.labelStyle,className:n.overrideShowDeleted,noTopMargin:!0})}),hidePathButton:!1})}),(0,O.jsx)(fn,{internalPaths:w})]})}),!H&&(0,O.jsx)(N.s,{scopes:[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],resource:Ze,errorProps:{disabled:!0},children:(0,O.jsxs)(J,{open:C,closePanel:function(){He(!1)},className:"".concat(_?n.hideListOnSmall:""),children:[Le.length>0&&(0,O.jsx)(Ee,{items:Xe,title:"Selected Objects:"}),null!==w&&(0,O.jsx)(Je,{internalPaths:w,bucketName:Ze,onClosePanel:He,versioningInfo:I,locking:L})]})})]})]}))]})]})},In=t(49535),Fn=t(26824),kn=t(73996),On=t(47974),Ln=t(4677),Pn=function(e){var n=e.bucketName,t=(0,d.TL)(),i=(0,r.v9)(hn.$4),o=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),c=(0,r.v9)((function(e){return e.objectBrowser.versionedFile})),l=(0,r.v9)((function(e){return e.objectBrowser.searchVersions})),u=!(null===i||void 0===i||!i.includes("object-browser-only")),h=(0,s.s0)(),m=(0,In.Z)(n,[E.Ft.S3_GET_BUCKET_POLICY,E.Ft.S3_PUT_BUCKET_POLICY,E.Ft.S3_GET_BUCKET_VERSIONING,E.Ft.S3_PUT_BUCKET_VERSIONING,E.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,E.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,E.Ft.S3_DELETE_BUCKET,E.Ft.S3_GET_BUCKET_NOTIFICATIONS,E.Ft.S3_PUT_BUCKET_NOTIFICATIONS,E.Ft.S3_GET_REPLICATION_CONFIGURATION,E.Ft.S3_PUT_REPLICATION_CONFIGURATION,E.Ft.S3_GET_LIFECYCLE_CONFIGURATION,E.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,E.Ft.ADMIN_GET_BUCKET_QUOTA,E.Ft.ADMIN_SET_BUCKET_QUOTA,E.Ft.S3_PUT_BUCKET_TAGGING,E.Ft.S3_GET_BUCKET_TAGGING,E.Ft.S3_LIST_BUCKET_VERSIONS,E.Ft.S3_GET_BUCKET_POLICY_STATUS,E.Ft.S3_DELETE_BUCKET_POLICY,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS]),p=(0,O.jsx)(a.Fragment,{children:o?(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(jn.Z,{placeholder:"Start typing to filter versions of ".concat(c),onChange:function(e){t((0,k.Pr)(e))},value:l})}):(0,O.jsx)(N.s,{scopes:[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],resource:n,errorProps:{disabled:!0},children:(0,O.jsx)(gn,{})})});return(0,O.jsx)(a.Fragment,{children:u?(0,O.jsxs)(f.rjZ,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,O.jsx)(f.rjZ,{children:(0,O.jsx)(kn.Z,{marginRight:30,marginTop:10})}),(0,O.jsxs)(f.rjZ,{item:!0,xs:!0,sx:{display:"flex",gap:10},children:[p,(0,O.jsx)(Ln.Z,{})]})]}):(0,O.jsx)(On.Z,{label:(0,O.jsx)(f.hbI,{label:"Object Browser",onClick:function(){console.log("clicke"),h(E.gA.OBJECT_BROWSER_VIEW)}}),actions:(0,O.jsx)(N.s,{scopes:E.D[E.EI.BUCKET_ADMIN],resource:n,errorProps:{disabled:!0},children:(0,O.jsx)(K.Z,{tooltip:m?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+E.EI.BUCKET_ADMIN+" permisions.",children:(0,O.jsx)(f.zxk,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:function(){return h("/buckets/".concat(n,"/admin"))},icon:(0,O.jsx)(f.ewm,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),middleComponent:p})})},Bn=0,Dn=0,An=!1,Rn=function e(n,t){if(!An){An=!0;var o=new URL(window.location.toString()),a=o.port,r=new URL(document.baseURI).pathname,s=(0,Fn.x2)(o.protocol);(i=new WebSocket("".concat(s,"://").concat(o.hostname,":").concat(a).concat(r,"ws/objectManager"))).onopen=function(){An=!1,n&&n(),Dn=0},t&&(i.onmessage=t);var c=function(){Dn<=5?(e((function(){}),t),Dn+=1):console.error("Websocket not available.")};i.onclose=function(){An=!1,console.warn("Websocket Disconnected. Attempting Reconnection..."),setTimeout(c,3e3)},i.onerror=function(){An=!1,console.error("Error in websocket connection. Attempting reconnection...")}}},Un=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)({},u.Bz))}))((function(){var e=(0,d.TL)(),n=(0,s.UO)(),t=(0,s.TH)(),o=(0,r.v9)((function(e){return e.objectBrowser.loadingVersioning})),c=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),l=(0,r.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),u=(0,r.v9)((function(e){return e.objectBrowser.showDeleted})),h=(0,r.v9)((function(e){return e.console.session.allowResources})),m=(0,r.v9)((function(e){return e.objectBrowser.loadingObjects})),f=(0,r.v9)((function(e){return e.objectBrowser.loadingLocking})),p=(0,r.v9)((function(e){return e.objectBrowser.loadRecords})),x=(0,r.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),b=(0,r.v9)((function(e){return e.objectBrowser.simplePath})),v=(0,r.v9)((function(e){return e.objectBrowser.isOpeningObjectDetail})),Z=(0,r.v9)((function(e){return e.system.anonymousMode})),_=n.bucketName||"",S=t.pathname.split("/browser/".concat(_,"/")),C=2===S.length?S[1]:"",w=(0,a.useCallback)((function(n){e((0,k.Cn)(!1));var t=JSON.parse(n.data.toString());if(Bn===t.request_id){if(t.request_id!==Bn)return;if("The Access Key Id you provided does not exist in our records."===t.error)window.location.reload();else if("Access Denied."===t.error){var i=t.prefix,o="";if(i){var a=(0,g.IO)(i);o=a.endsWith("/")?a:a+"/"}var r=(0,D.kh)(_,o,h||[]);return void(r&&0!==r.length?e((0,k.ZJ)(r)):e((0,F.Ih)({errorMessage:t.error,detailedError:t.error})))}if(t.request_end)return e((0,k.Cn)(!1)),void e((0,k._D)(!1));t.data&&e((0,k.rW)(t.data))}}),[e,h,_]),T=(0,a.useCallback)((function(n,t){if(i&&1===i.readyState)try{var o=Bn+1;e((0,k.o_)());var a={bucket_name:_,prefix:(0,g.LL)(n),mode:c||u?"rewind":"objects",date:t.toISOString(),request_id:o};i.send(JSON.stringify(a)),Bn=o}catch(r){console.error(r)}else{Rn((function(){T(n,t)}),w)}}),[_,c,u,e,w]);(0,a.useEffect)((function(){return function(){var e={mode:"cancel",request_id:Bn};i&&1===i.readyState&&i.send(JSON.stringify(e))}}),[]),(0,a.useEffect)((function(){var n=(0,g.IO)(C);e((0,k.IJ)(!0)),n.endsWith("/")||""===n?(e((0,k.vb)(!1)),e((0,k.EE)(null)),e((0,k.Su)(""===n?"/":n))):(e((0,k.vH)(!0)),e((0,k.vb)(!0)),e((0,k.Eq)(!0)),e((0,k.EE)("".concat(n?"".concat((0,g.LL)(n)):""))),e((0,k.Su)("".concat(n.split("/").slice(0,-1).join("/"),"/"))))}),[C,l,c,e]),(0,a.useEffect)((function(){if(!m&&!p&&!c&&!v){var n=(0,g.IO)(C);if(!n.endsWith("/")&&b!==n&&""!==n){(0,k._D)(!0);var t="".concat(n.split("/").slice(0,-1).join("/"),"/");T(t,new Date)}}e((0,k.d_)(!1))}),[m,p,e,C,T,c,b]);var y=(0,In.Z)(_,[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET])||Z;return(0,a.useEffect)((function(){if(m&&y){var n="";if(C){var t=(0,g.IO)(C);n=x===C?"".concat((0,g.IO)(C).split("/").slice(0,-1).join("/"),"/"):t.endsWith("/")?t:t+"/"}var i=new Date;c&&l&&(i=new Date(l)),T(n,i)}else e((0,k.Cn)(!1))}),[m,C,e,l,c,y,T]),(0,a.useEffect)((function(){e((0,k.db)({status:!1}))}),[C,e]),(0,a.useEffect)((function(){o&&!Z&&(y?j.Z.invoke("GET","/api/v1/buckets/".concat(_,"/versioning")).then((function(n){e((0,k.lS)(n)),e((0,k.IJ)(!1))})).catch((function(n){console.error("Error Getting Object Versioning Status: ",n.detailedError),e((0,k.IJ)(!1))})):(e((0,k.IJ)(!1)),e((0,k.o_)())))}),[_,o,e,y,Z]),(0,a.useEffect)((function(){f&&(y?j.Z.invoke("GET","/api/v1/buckets/".concat(_,"/object-locking")).then((function(n){e((0,k.lY)(n.object_locking_enabled)),e((0,k.Jn)(!1))})).catch((function(n){console.error("Error Getting Object Locking Status: ",n.detailedError),e((0,k.Jn)(!1))})):(e((0,k.o_)()),e((0,k.Jn)(!1))))}),[_,f,e,y]),(0,a.useEffect)((function(){f&&(y?j.Z.invoke("GET","/api/v1/buckets/".concat(_,"/object-locking")).then((function(n){e((0,k.lY)(n.object_locking_enabled)),(0,k.Jn)(!1)})).catch((function(e){console.error("Error Getting Object Locking Status: ",e.detailedError),(0,k.Jn)(!1)})):(e((0,k.o_)()),(0,k.Jn)(!1)))}),[_,f,e,y]),(0,O.jsxs)(a.Fragment,{children:[!Z&&(0,O.jsx)(Pn,{bucketName:_}),(0,O.jsx)(En,{})]})}))},34433:function(e,n,t){t.r(n),t.d(n,{default:function(){return T}});var i=t(29439),o=t(1413),a=t(72791),r=t(78687),s=t(75952),c=t(11135),l=t(25787),d=t(78029),u=t.n(d),h=t(61889),m=t(40986),f=t(23814),p=t(81207),x=t(56028),b=t(64163),v=t(30829),j=t(99779),g=t(21435),Z=t(80184),_=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},f.YI),f.Hr),{},{labelContainer:{display:"flex",alignItems:"center",marginBottom:15},fieldContainer:(0,o.Z)((0,o.Z)({},f.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),dateInputContainer:{margin:"0 10px"},durationInputs:{display:"flex",alignItems:"center",justifyContent:"flex-start"},validityIndicator:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10},invalidDurationText:{marginTop:15,display:"flex",color:"red",fontSize:11},reverseInput:{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}},validityText:{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},validTill:{fontWeight:"bold",marginLeft:15}}))}))((function(e){var n=e.classes,t=e.id,o=e.initialDate,r=e.label,c=e.maxDays,l=e.entity,d=e.onChange,u=(0,a.useState)(7),m=(0,i.Z)(u,2),f=m[0],p=m[1],x=(0,a.useState)(0),b=(0,i.Z)(x,2),_=b[0],S=b[1],C=(0,a.useState)(0),w=(0,i.Z)(C,2),T=w[0],y=w[1],N=(0,a.useState)(!0),E=(0,i.Z)(N,2),I=E[0],F=E[1],k=(0,a.useState)(j.ou.now()),O=(0,i.Z)(k,2),L=O[0],P=O[1];(0,a.useEffect)((function(){isNaN(_)||isNaN(f)||isNaN(T)||P(function(e,n,t,i){return j.ou.fromJSDate(e).plus({days:n,hours:t,minutes:i})}(o,f,_,T))}),[o,f,_,T]),(0,a.useEffect)((function(){if(I){var e=L.toFormat("yyyy-MM-dd HH:mm:ss");d(e.split(" ").join("T"),!0)}else d("0000-00-00",!1)}),[L,d,I]),(0,a.useEffect)((function(){var e=!0;(f<0||c&&f>c||isNaN(f))&&(e=!1),(_<0||_>23||isNaN(_))&&(e=!1),(T<0||T>59||isNaN(T))&&(e=!1),!c||f!==c||0===_&&0===T||(e=!1),F(e)}),[L,c,d,f,_,T]);var B={style:{textAlign:"center",paddingRight:10,paddingLeft:10,width:25},className:"removeArrows"};return(0,Z.jsx)(a.Fragment,{children:(0,Z.jsxs)(h.ZP,{container:!0,className:n.fieldContainer,children:[(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:n.labelContainer,children:(0,Z.jsx)(v.Z,{htmlFor:t,className:n.inputLabel,sx:{marginLeft:"10px"},children:(0,Z.jsx)("span",{children:r})})}),(0,Z.jsxs)(h.ZP,{item:!0,xs:12,className:n.durationInputs,children:[(0,Z.jsx)(h.ZP,{item:!0,className:n.dateInputContainer,children:(0,Z.jsx)(g.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:c?c.toString():"999",label:"Days",name:t,onChange:function(e){p(parseInt(e.target.value))},value:f.toString(),extraInputProps:B,noLabelMinWidth:!0})}),(0,Z.jsx)(h.ZP,{item:!0,className:n.dateInputContainer,children:(0,Z.jsx)(g.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:function(e){S(parseInt(e.target.value))},value:_.toString(),extraInputProps:B,noLabelMinWidth:!0})}),(0,Z.jsx)(h.ZP,{item:!0,className:n.dateInputContainer,children:(0,Z.jsx)(g.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:function(e){y(parseInt(e.target.value))},value:T.toString(),extraInputProps:B,noLabelMinWidth:!0})})]}),(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:"".concat(n.validityIndicator," ").concat(n.formFieldRow),children:I?(0,Z.jsxs)("div",{className:n.validityText,children:[(0,Z.jsx)(s.xPt,{}),(0,Z.jsxs)("div",{className:n.validityLabel,children:[l," will be available until:"]})," ",(0,Z.jsx)("div",{className:n.validTill,children:L.toFormat("MM/dd/yyyy HH:mm:ss")})]}):(0,Z.jsx)("div",{className:n.invalidDurationText,children:"Please select a valid duration."})})]})})})),S=t(45248),C=t(87995),w=t(81551),T=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({shareLinkInfo:{fontSize:14,fontWeight:400},copyShareLink:{display:"flex","@media (max-width: 900px)":{flexFlow:"column",alignItems:"center",justifyContent:"center"}},copyShareLinkInput:{"& div:first-child":{marginTop:0},"@media (max-width: 900px)":{minWidth:250}}},f.ID),f.DF))}))((function(e){var n=e.classes,t=e.open,o=e.closeModalAndRefresh,c=e.bucketName,l=e.dataObject,d=(0,w.TL)(),f=(0,r.v9)(C.N5),v=(0,a.useState)(""),j=(0,i.Z)(v,2),g=j[0],T=j[1],y=(0,a.useState)(!0),N=(0,i.Z)(y,2),E=N[0],I=N[1],F=(0,a.useState)(!1),k=(0,i.Z)(F,2),O=k[0],L=k[1],P=(0,a.useState)(""),B=(0,i.Z)(P,2),D=B[0],A=B[1],R=(0,a.useState)(!0),U=(0,i.Z)(R,2),M=U[0],z=U[1],G=(0,a.useState)("null"),K=(0,i.Z)(G,2),W=K[0],H=K[1],J=new Date;return(0,a.useEffect)((function(){if(void 0===l.version_id)return f?(p.Z.invoke("GET","/api/v1/buckets/".concat(c,"/objects?prefix=").concat((0,S.LL)(l.name)).concat(f?"&with_versions=true":"")).then((function(e){var n=(e.objects||[]).find((function(e){return e.is_latest}));H(n?"".concat(n.version_id):"null")})).catch((function(e){d((0,C.zb)(e))})),void I(!1)):(H("null"),void I(!1));H(l.version_id||"null"),I(!1)}),[c,l,f,d]),(0,a.useEffect)((function(){if(M&&!E){L(!0),T("");var e=new Date("".concat(D)),n=new Date,t=Math.ceil((e.getTime()-n.getTime())/1e3);t>0&&p.Z.invoke("GET","/api/v1/buckets/".concat(c,"/objects/share?prefix=").concat((0,S.LL)(l.name),"&version_id=").concat(W).concat(""!==D?"&expires=".concat(t,"s"):"")).then((function(e){T(e),L(!1)})).catch((function(e){d((0,C.zb)(e)),T(""),L(!1)}))}}),[l,D,c,M,T,d,f,E,W]),(0,Z.jsx)(a.Fragment,{children:(0,Z.jsxs)(x.Z,{title:"Share File",titleIcon:(0,Z.jsx)(s.aAc,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:function(){o()},children:[E&&(0,Z.jsx)(h.ZP,{item:!0,xs:12,children:(0,Z.jsx)(m.Z,{})}),!E&&(0,Z.jsxs)(a.Fragment,{children:[(0,Z.jsxs)(h.ZP,{item:!0,xs:12,className:n.shareLinkInfo,children:["This is a temporary URL with integrated access credentials for sharing objects valid for up to 7 days.",(0,Z.jsx)("br",{}),(0,Z.jsx)("br",{}),"The temporary URL expires after the configured time limit."]}),(0,Z.jsx)("br",{}),(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:n.dateContainer,children:(0,Z.jsx)(_,{initialDate:J,id:"date",label:"Active for",maxDays:7,onChange:function(e,n){z(n),n?A(e):(A(""),T(""))},entity:"Link"})}),(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:"".concat(n.copyShareLink," ").concat(n.formFieldRow," "),children:(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:n.copyShareLinkInput,children:(0,Z.jsx)(b.Z,{content:g,actionButton:(0,Z.jsx)(u(),{text:g,children:(0,Z.jsx)(s.zxk,{id:"copy-path",variant:"regular",onClick:function(){d((0,C.MK)("Share URL Copied to clipboard"))},disabled:""===g||O,style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,Z.jsx)(s.TIy,{})})})})})})]})]})})}))},78562:function(e,n,t){t.r(n),t.d(n,{default:function(){return b}});var i=t(72791),o=t(56028),a=t(4942),r=t(29439),s=t(11135),c=t(25787),l=t(61889),d=t(40986),u=t(47922),h=t(45248),m=t(28182),f=t(80184),p=(0,c.Z)((function(){return(0,s.Z)({iframeContainer:{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.text":{height:700},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},iframeBase:{backgroundColor:"#fff"},iframeHidden:{display:"none"}})}))((function(e){var n=e.bucketName,t=e.object,o=e.isFullscreen,s=void 0!==o&&o,c=e.classes,p=(0,i.useState)(!0),x=(0,r.Z)(p,2),b=x[0],v=x[1],j="";if(t){var g=(0,h.LL)(t.name),Z=document.baseURI.replace(window.location.origin,"");j="".concat(window.location.origin).concat(Z,"api/v1/buckets/").concat(n,"/objects/download?preview=true&prefix=").concat(g),t.version_id&&(j=j.concat("&version_id=".concat(t.version_id)))}var _=(0,u.Bg)((null===t||void 0===t?void 0:t.name)||""),S=function(){v(!1)};return(0,f.jsxs)(i.Fragment,{children:[b&&(0,f.jsx)(l.ZP,{item:!0,xs:12,children:(0,f.jsx)(d.Z,{})}),(0,f.jsxs)("div",{style:{textAlign:"center"},children:["video"===_&&(0,f.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:S,children:(0,f.jsx)("source",{src:j,type:"video/mp4"})}),"audio"===_&&(0,f.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:S,children:(0,f.jsx)("source",{src:j,type:"audio/mpeg"})}),"image"===_&&(0,f.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:j,alt:"preview",onLoad:S}),"video"!==_&&"audio"!==_&&"image"!==_&&(0,f.jsx)("div",{className:(0,m.Z)(c.iframeBase,(0,a.Z)({},c.iframeHidden,b)),children:(0,f.jsx)("iframe",{src:j,title:"File Preview",allowTransparency:!0,className:"".concat(c.iframeContainer," ").concat(s?"fullHeight":_),onLoad:S,children:"File couldn't be loaded. Please try Download instead"})})]})]})})),x=t(75952),b=function(e){var n=e.open,t=e.bucketName,a=e.object,r=e.onClosePreview;return(0,f.jsx)(i.Fragment,{children:(0,f.jsx)(o.Z,{modalOpen:n,title:"Preview - ".concat(null===a||void 0===a?void 0:a.name),onClose:r,wideLimit:!1,titleIcon:(0,f.jsx)(x.$30,{}),children:(0,f.jsx)(p,{bucketName:t,object:a})})})}},47922:function(e,n,t){t.d(n,{Bg:function(){return s},LR:function(){return r},P_:function(){return c},kh:function(){return l}});var i=t(45248),o=t(76610),a=t(81551),r=function(e,n,t,r){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,d=arguments.length>7?arguments[7]:void 0,u=arguments.length>8?arguments[8]:void 0,h=arguments.length>9?arguments[9]:void 0,m=document.createElement("a");document.body.appendChild(m);var f=document.baseURI.replace(window.location.origin,""),p=a.ZP.getState().system.anonymousMode,x="".concat(window.location.origin).concat(f,"api/v1/buckets/").concat(e,"/objects/download?prefix=").concat(n).concat(null!==s&&""!==s.trim()?"&override_file_name=".concat((0,i.LL)(s||"")):"");t&&(x=x.concat("&version_id=".concat(t)));var b=new XMLHttpRequest;return b.open("GET",x,!0),p&&b.setRequestHeader("X-Anonymous","1"),b.addEventListener("progress",(function(e){var n=Math.round(e.loaded/r*100);l&&l(n)}),!1),b.responseType="blob",b.onreadystatechange=function(){if(4===b.readyState)if(200===b.status){var e=b.getResponseHeader("Content-Disposition"),n="download";if(e)n=decodeURIComponent(e).split('"')[1];d&&d(),(0,o.GM)(c);var t=document.createElement("a");t.href=window.URL.createObjectURL(b.response),t.download=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)}else{if("application/json"===b.getResponseHeader("Content-Type")){var i=JSON.parse(b.response);if(i.detailedMessage)return void u(i.detailedMessage)}u("Unexpected response status code (".concat(b.status,")."))}},b.onerror=function(){u&&u("A network error occurred.")},b.onabort=function(){h&&h()},b},s=function(e){var n=e.split(".").pop();return n?(n=n.toLowerCase(),["jif","jfif","apng","avif","svg","webp","bmp","ico","jpg","jpe","jpeg","gif","png","heic"].includes(n)?"image":["pdf"].includes(n)?"text":["wav","mp3","alac","aiff","dsd","pcm"].includes(n)?"audio":["mp4","avi","mpg","webm","mov","flv","mkv","wmv","avchd","mpeg-4"].includes(n)?"video":"none"):"none"},c=function(e){switch(e){case"name":return function(e,n){return e.name.localeCompare(n.name)};case"last_modified":return function(e,n){return new Date(e.last_modified).getTime()-new Date(n.last_modified).getTime()};case"size":return function(e,n){return(e.size||-1)-(n.size||-1)}}},l=function(e,n,t){if(0===t.length)return null;var i=t.filter((function(n){return n.resource.endsWith(":".concat(e))||n.resource.includes(":".concat(e,"/"))}));if(0===i.length)return null;var o=[],a=n.split("/");return i.forEach((function(e){var n=(e.resource.split(":").pop()||"").split("/");n.length>1&&n.every((function(e,n){return"*"!==e&&((!a[n]||a[n]===e)&&(a[n]||o.push({name:"".concat(e,"/"),size:0,last_modified:"",version_id:""}),!0))})),"StringEquals"!==e.conditionOperator&&"StringLike"!==e.conditionOperator||e.prefixes.forEach((function(e){if(""!==e){var n=e.split("/"),t=[];n.every((function(e,n){return!e.includes("*")&&""!==e&&(e!==a[n]?(o.push({name:"".concat(t.join("/")).concat(t.length>0?"/":"").concat(e,"/"),size:0,last_modified:"",version_id:""}),!1):(""!==e&&t.push(e),!0))}))}}))})),o}},75578:function(e,n,t){var i=t(1413),o=t(72791),a=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,a.jsx)(o.Suspense,{fallback:n,children:(0,a.jsx)(e,(0,i.Z)({},t))})}}},81159:function(e,n,t){var i=t(4942),o=t(1413),a=t(72791),r=t(11135),s=t(25787),c=t(9955),l=t(30829),d=t(20068),u=t(20890),h=t(61889),m=t(23814),f=t(75952),p=t(28182),x=t(80184),b=(0,s.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(c.Z);n.Z=(0,s.Z)((function(e){return(0,r.Z)((0,o.Z)((0,o.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},m.OR),m.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,r=e.onChange,s=e.value,c=e.id,m=e.name,v=e.checked,j=void 0!==v&&v,g=e.disabled,Z=void 0!==g&&g,_=e.switchOnly,S=void 0!==_&&_,C=e.tooltip,w=void 0===C?"":C,T=e.description,y=void 0===T?"":T,N=e.classes,E=e.indicatorLabels,I=e.extraInputProps,F=void 0===I?{}:I,k=(0,x.jsxs)(a.Fragment,{children:[!S&&(0,x.jsx)("span",{className:(0,p.Z)(N.indicatorLabel,(0,i.Z)({},N.indicatorLabelOn,!j)),children:E&&E.length>1?E[1]:"OFF"}),(0,x.jsx)(b,{checked:j,onChange:r,color:"primary",name:m,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},F),disabled:Z,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s,id:c}),!S&&(0,x.jsx)("span",{className:(0,p.Z)(N.indicatorLabel,(0,i.Z)({},N.indicatorLabelOn,j)),children:E?E[0]:"ON"})]});return S?k:(0,x.jsx)("div",{children:(0,x.jsxs)(h.ZP,{container:!0,alignItems:"center",children:[(0,x.jsx)(h.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,x.jsxs)(l.Z,{htmlFor:c,className:N.inputLabel,children:[(0,x.jsx)("span",{children:t}),""!==w&&(0,x.jsx)("div",{className:N.tooltipContainer,children:(0,x.jsx)(d.Z,{title:w,placement:"top-start",children:(0,x.jsx)("div",{className:N.tooltip,children:(0,x.jsx)(f.byK,{})})})})]})}),(0,x.jsx)(h.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:N.switchContainer,children:k}),""!==y&&(0,x.jsx)(h.ZP,{item:!0,xs:12,textAlign:"left",children:(0,x.jsx)(u.Z,{component:"p",className:N.fieldDescription,children:y})})]})})}))},21435:function(e,n,t){var i=t(29439),o=t(1413),a=t(72791),r=t(27391),s=t(61889),c=t(30829),l=t(20068),d=t(13400),u=t(20165),h=t(3579),m=t(11135),f=t(72455),p=t(25787),x=t(23814),b=t(75952),v=t(28182),j=t(80184),g=(0,f.Z)((function(e){return(0,m.Z)((0,o.Z)({},x.gM))}));function Z(e){var n=g();return(0,j.jsx)(r.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,p.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,r=e.value,m=e.id,f=e.name,p=e.type,x=void 0===p?"text":p,g=e.autoComplete,_=void 0===g?"off":g,S=e.disabled,C=void 0!==S&&S,w=e.multiline,T=void 0!==w&&w,y=e.tooltip,N=void 0===y?"":y,E=e.index,I=void 0===E?0:E,F=e.error,k=void 0===F?"":F,O=e.required,L=void 0!==O&&O,P=e.placeholder,B=void 0===P?"":P,D=e.min,A=e.max,R=e.overlayId,U=e.overlayIcon,M=void 0===U?null:U,z=e.overlayObject,G=void 0===z?null:z,K=e.extraInputProps,W=void 0===K?{}:K,H=e.overlayAction,J=e.noLabelMinWidth,V=void 0!==J&&J,Y=e.pattern,q=void 0===Y?"":Y,$=e.autoFocus,X=void 0!==$&&$,Q=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,ie=e.onFocus,oe=e.onPaste,ae=(0,o.Z)({"data-index":I},W),re=(0,a.useState)(!1),se=(0,i.Z)(re,2),ce=se[0],le=se[1];"number"===x&&D&&(ae.min=D),"number"===x&&A&&(ae.max=A),""!==q&&(ae.pattern=q);var de=M,ue=x;return"password"===x&&null===M&&(de=ce?(0,j.jsx)(u.Z,{}):(0,j.jsx)(h.Z,{}),ue=ce?"text":"password"),(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(s.ZP,{container:!0,className:(0,v.Z)(""!==ne?ne:"",""!==k?Q.errorInField:Q.inputBoxContainer),children:[""!==n&&(0,j.jsxs)(c.Z,{htmlFor:m,className:V?Q.noMinWidthLabel:Q.inputLabel,children:[(0,j.jsxs)("span",{children:[n,L?"*":""]}),""!==N&&(0,j.jsx)("div",{className:Q.tooltipContainer,children:(0,j.jsx)(l.Z,{title:N,placement:"top-start",children:(0,j.jsx)("div",{className:Q.tooltip,children:(0,j.jsx)(b.byK,{})})})})]}),(0,j.jsxs)("div",{className:Q.textBoxContainer,children:[(0,j.jsx)(Z,{id:m,name:f,fullWidth:!0,value:r,autoFocus:X,disabled:C,onChange:t,type:ue,multiline:T,autoComplete:_,inputProps:ae,error:""!==k,helperText:k,placeholder:B,className:Q.inputRebase,onKeyPress:te,onFocus:ie,onPaste:oe}),de&&(0,j.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,j.jsx)(d.Z,{onClick:H?function(){H()}:function(){return le(!ce)},id:R,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),G&&(0,j.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:G})]})]})})}))},64163:function(e,n,t){var i=t(1413),o=t(72791),a=t(61889),r=t(11135),s=t(25787),c=t(23814),l=t(80184);n.Z=(0,s.Z)((function(e){return(0,r.Z)((0,i.Z)({},c.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,r=e.content,s=e.multiLine,c=void 0!==s&&s,d=e.actionButton;return(0,l.jsx)(o.Fragment,{children:(0,l.jsxs)(a.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,l.jsx)(a.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,l.jsxs)(a.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(d?n.includesActionButton:""),children:[(0,l.jsx)(a.ZP,{item:!0,xs:12,className:c?n.innerContentMultiline:n.innerContent,children:r}),d&&(0,l.jsx)("div",{className:n.overlayShareOption,children:d})]})]})})}))},83679:function(e,n,t){var i=t(4942),o=t(1413),a=(t(72791),t(28182)),r=t(61889),s=t(10765),c=t(85523),l=t(61419),d=t(30829),u=t(20068),h=t(11135),m=t(25787),f=t(72455),p=t(23814),x=t(75952),b=t(80184),v=(0,f.Z)((0,o.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},p.FU)),j=function(e){var n=v();return(0,b.jsx)(l.Z,(0,o.Z)({className:n.root,disableRipple:!0,color:"default",checkedIcon:(0,b.jsx)("span",{className:n.radioSelectedIcon}),icon:(0,b.jsx)("span",{className:n.radioUnselectedIcon})},e))};n.Z=(0,m.Z)((function(e){return(0,h.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.YI),p.Hr),{},{optionLabel:{"&.Mui-disabled":{"& .MuiFormControlLabel-label":{color:"#9c9c9c"}},"&:last-child":{marginRight:0},"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E"}},checkedOption:{"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E",fontWeight:700}}}))}))((function(e){var n=e.selectorOptions,t=void 0===n?[]:n,o=e.currentSelection,l=e.label,h=e.id,m=e.name,f=e.onChange,p=e.tooltip,v=void 0===p?"":p,g=e.disableOptions,Z=void 0!==g&&g,_=e.classes,S=e.displayInColumn,C=void 0!==S&&S;return(0,b.jsxs)(r.ZP,{container:!0,spacing:1,children:[(0,b.jsx)(r.ZP,{item:!0,fontSize:60,children:(0,b.jsxs)(d.Z,{htmlFor:h,className:_.inputLabel,children:[(0,b.jsx)("span",{children:l}),""!==v&&(0,b.jsx)("div",{className:_.tooltipContainer,children:(0,b.jsx)(u.Z,{title:v,placement:"top-start",children:(0,b.jsx)("div",{children:(0,b.jsx)(x.byK,{})})})})]})}),(0,b.jsx)(r.ZP,{item:!0,children:(0,b.jsx)(s.Z,{"aria-label":h,id:h,name:m,value:o,onChange:f,row:!C,style:{display:"flex",textAlign:"right"},children:t.map((function(e){return(0,b.jsx)(c.Z,{value:e.value,control:(0,b.jsx)(j,{}),label:e.label,disabled:Z,className:(0,a.Z)(_.optionLabel,(0,i.Z)({},_.checkedOption,e.value===o))},"rd-".concat(m,"-").concat(e.value))}))})})]})}))},90673:function(e,n,t){var i=t(1413),o=t(72791),a=t(61889),r=t(4834),s=t(30829),c=t(20068),l=t(68096),d=t(58406),u=t(77865),h=t(11135),m=t(25787),f=t(23814),p=t(75952),x=t(80184),b=(0,m.Z)((function(e){return(0,h.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(r.ZP);n.Z=(0,m.Z)((function(e){return(0,h.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},f.YI),f.Hr),{},{fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var n=e.classes,t=e.id,i=e.name,r=e.onChange,h=e.options,m=e.label,f=e.tooltip,v=void 0===f?"":f,j=e.value,g=e.disabled,Z=void 0!==g&&g;return(0,x.jsx)(o.Fragment,{children:(0,x.jsxs)(a.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==m&&(0,x.jsxs)(s.Z,{htmlFor:t,className:n.inputLabel,children:[(0,x.jsx)("span",{children:m}),""!==v&&(0,x.jsx)("div",{className:n.tooltipContainer,children:(0,x.jsx)(c.Z,{title:v,placement:"top-start",children:(0,x.jsx)("div",{className:n.tooltip,children:(0,x.jsx)(p.byK,{})})})})]}),(0,x.jsx)(l.Z,{fullWidth:!0,children:(0,x.jsx)(d.Z,{id:t,name:i,value:j,onChange:r,input:(0,x.jsx)(b,{}),disabled:Z,children:h.map((function(e){return(0,x.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(i,"-").concat(e.label))}))})})]})})}))},14917:function(e,n,t){t(72791);var i=t(61889),o=t(72455),a=t(80184),r=(0,o.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}}));n.Z=function(e){var n=e.icon,t=e.title,o=e.subTitle,s=e.actions,c=e.className,l=r();return(0,a.jsx)(i.ZP,{container:!0,children:(0,a.jsxs)(i.ZP,{item:!0,xs:12,className:"".concat(l.stContainer," ").concat(c||""),children:[(0,a.jsxs)("div",{className:l.leftItems,children:[n?(0,a.jsx)("div",{className:l.headerBarIcon,children:n}):null,(0,a.jsxs)("div",{className:l.titleColumn,children:[(0,a.jsx)("h1",{style:{margin:0},children:t}),(0,a.jsx)("span",{className:l.headerBarSubheader,children:o})]})]}),(0,a.jsx)("div",{className:l.rightItems,children:s})]})})}},73669:function(e,n,t){var i=t(29439),o=t(72791),a=t(64554),r=t(75952),s=t(21435),c=t(80184);n.Z=function(e){var n=e.value,t=(0,o.useState)(!1),l=(0,i.Z)(t,2),d=l[0],u=l[1];return(0,c.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,c.jsx)(s.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:d?"text":"password",onChange:function(){},value:n,overlayIcon:(0,c.jsx)(r.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(n)}}),(0,c.jsx)(r.zxk,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return u(!d)},label:"Show/Hide"})]})}},26824:function(e,n,t){t.d(n,{HE:function(){return a},V9:function(){return i},ci:function(){return o},x2:function(){return r}});var i=1006,o=1008,a=1011,r=function(e){var n="ws";return"https:"===e&&(n="wss"),n}}}]); -//# sourceMappingURL=5522.0cd4f3c8.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5522.0cd4f3c8.chunk.js.map b/portal-ui/build/static/js/5522.0cd4f3c8.chunk.js.map deleted file mode 100644 index 2b216d228..000000000 --- a/portal-ui/build/static/js/5522.0cd4f3c8.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/5522.0cd4f3c8.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","utils/validationFunctions.ts","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectActionButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/ObjectBrowser/utils.ts","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx","screens/Console/ObjectBrowser/objectBrowserThunks.ts","screens/Console/ObjectBrowser/FilterObjectsSB.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/ObjectBrowser/OBHeader.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Buckets/ListBuckets/Objects/utils.ts","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/Common/FormComponents/RadioGroupSelector/RadioGroupSelector.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","screens/Console/Common/ScreenTitle/ScreenTitle.tsx","screens/Console/Tools/KeyRevealer.tsx","utils/wsUtils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n newMessage,\n resetMessages,\n setIsOpeningOD,\n setIsVersioned,\n setLoadingLocking,\n setLoadingObjectInfo,\n setLoadingObjects,\n setLoadingRecords,\n setLoadingVersioning,\n setLoadingVersions,\n setLockingEnabled,\n setObjectDetailsView,\n setRecords,\n setSelectedObjectView,\n setSimplePathHandler,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport { IMessageEvent } from \"websocket\";\nimport { wsProtocol } from \"../../../../utils/wsUtils\";\nimport {\n WebsocketRequest,\n WebsocketResponse,\n} from \"../ListBuckets/Objects/ListObjects/types\";\nimport { decodeURLString, encodeURLString } from \"../../../../common/utils\";\nimport { permissionItems } from \"../ListBuckets/Objects/utils\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport api from \"../../../../common/api\";\nimport { BucketObjectLocking, BucketVersioningInfo } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport OBHeader from \"../../ObjectBrowser/OBHeader\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader,\n });\n\nlet objectsWS: WebSocket;\nlet currentRequestID: number = 0;\nlet errorCounter: number = 0;\nlet wsInFlight: boolean = false;\n\nconst initWSConnection = (\n openCallback?: () => void,\n onMessageCallback?: (message: IMessageEvent) => void\n) => {\n if (wsInFlight) {\n return;\n }\n wsInFlight = true;\n const url = new URL(window.location.toString());\n const isDev = process.env.NODE_ENV === \"development\";\n const port = isDev ? \"9090\" : url.port;\n\n // check if we are using base path, if not this always is `/`\n const baseLocation = new URL(document.baseURI);\n const baseUrl = baseLocation.pathname;\n\n const wsProt = wsProtocol(url.protocol);\n\n objectsWS = new WebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/objectManager`\n );\n\n objectsWS.onopen = () => {\n wsInFlight = false;\n if (openCallback) {\n openCallback();\n }\n errorCounter = 0;\n };\n\n if (onMessageCallback) {\n objectsWS.onmessage = onMessageCallback;\n }\n\n const reconnectFn = () => {\n if (errorCounter <= 5) {\n initWSConnection(() => {}, onMessageCallback);\n errorCounter += 1;\n } else {\n console.error(\"Websocket not available.\");\n }\n };\n\n objectsWS.onclose = () => {\n wsInFlight = false;\n console.warn(\"Websocket Disconnected. Attempting Reconnection...\");\n\n // We reconnect after 3 seconds\n setTimeout(reconnectFn, 3000);\n };\n\n objectsWS.onerror = () => {\n wsInFlight = false;\n console.error(\"Error in websocket connection. Attempting reconnection...\");\n // Onclose will be triggered by specification, reconnect function will be executed there to avoid duplicated requests\n };\n};\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const location = useLocation();\n\n const loadingVersioning = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersioning\n );\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted\n );\n const allowResources = useSelector(\n (state: AppState) => state.console.session.allowResources\n );\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n const loadingLocking = useSelector(\n (state: AppState) => state.objectBrowser.loadingLocking\n );\n const loadRecords = useSelector(\n (state: AppState) => state.objectBrowser.loadRecords\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath\n );\n const isOpeningOD = useSelector(\n (state: AppState) => state.objectBrowser.isOpeningObjectDetail\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n /*WS Request Handlers*/\n const onMessageCallBack = useCallback(\n (message: IMessageEvent) => {\n // reset start status\n dispatch(setLoadingObjects(false));\n\n const response: WebsocketResponse = JSON.parse(message.data.toString());\n if (currentRequestID === response.request_id) {\n // If response is not from current request, we can omit\n if (response.request_id !== currentRequestID) {\n return;\n }\n\n if (\n response.error ===\n \"The Access Key Id you provided does not exist in our records.\"\n ) {\n // Session expired.\n window.location.reload();\n } else if (response.error === \"Access Denied.\") {\n const internalPathsPrefix = response.prefix;\n let pathPrefix = \"\";\n\n if (internalPathsPrefix) {\n const decodedPath = decodeURLString(internalPathsPrefix);\n\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n const permitItems = permissionItems(\n bucketName,\n pathPrefix,\n allowResources || []\n );\n\n if (!permitItems || permitItems.length === 0) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: response.error,\n detailedError: response.error,\n })\n );\n } else {\n dispatch(setRecords(permitItems));\n }\n\n return;\n }\n\n // This indicates final messages is received.\n if (response.request_end) {\n dispatch(setLoadingObjects(false));\n dispatch(setLoadingRecords(false));\n return;\n }\n\n if (response.data) {\n dispatch(newMessage(response.data));\n }\n }\n },\n [dispatch, allowResources, bucketName]\n );\n\n const initWSRequest = useCallback(\n (path: string, date: Date) => {\n if (objectsWS && objectsWS.readyState === 1) {\n try {\n const newRequestID = currentRequestID + 1;\n dispatch(resetMessages());\n\n const request: WebsocketRequest = {\n bucket_name: bucketName,\n prefix: encodeURLString(path),\n mode: rewindEnabled || showDeleted ? \"rewind\" : \"objects\",\n date: date.toISOString(),\n request_id: newRequestID,\n };\n\n objectsWS.send(JSON.stringify(request));\n\n // We store the new ID for the requestID\n currentRequestID = newRequestID;\n } catch (e) {\n console.error(e);\n }\n } else {\n // Socket is disconnected, we request reconnection but will need to recreate call\n const dupRequest = () => {\n initWSRequest(path, date);\n };\n initWSConnection(dupRequest, onMessageCallBack);\n }\n },\n [bucketName, rewindEnabled, showDeleted, dispatch, onMessageCallBack]\n );\n\n useEffect(() => {\n return () => {\n const request: WebsocketRequest = {\n mode: \"cancel\",\n request_id: currentRequestID,\n };\n\n if (objectsWS && objectsWS.readyState === 1) {\n objectsWS.send(JSON.stringify(request));\n }\n };\n }, []);\n\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n dispatch(setLoadingVersioning(true));\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(\n setSimplePathHandler(decodedIPaths === \"\" ? \"/\" : decodedIPaths)\n );\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`\n )\n );\n dispatch(\n setSimplePathHandler(\n `${decodedIPaths.split(\"/\").slice(0, -1).join(\"/\")}/`\n )\n );\n }\n }, [internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n // Direct file access effect / prefix\n useEffect(() => {\n if (!loadingObjects && !loadRecords && !rewindEnabled && !isOpeningOD) {\n // No requests are in progress, We review current path, if it doesn't end in '/' and current list is empty then we trigger a new request.\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n if (\n !decodedInternalPaths.endsWith(\"/\") &&\n simplePath !== decodedInternalPaths &&\n decodedInternalPaths !== \"\"\n ) {\n setLoadingRecords(true);\n const parentPath = `${decodedInternalPaths\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n\n initWSRequest(parentPath, new Date());\n }\n }\n dispatch(setIsOpeningOD(false));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadingObjects,\n loadRecords,\n dispatch,\n internalPaths,\n initWSRequest,\n rewindEnabled,\n simplePath,\n ]);\n\n const displayListObjects =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || anonymousMode;\n\n // Common objects list\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (loadingObjects && displayListObjects) {\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n\n // internalPaths are selected (file details), we split and get parent folder\n if (selectedInternalPaths === internalPaths) {\n pathPrefix = `${decodeURLString(internalPaths)\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n } else {\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n }\n\n let requestDate = new Date();\n\n if (rewindEnabled && rewindDate) {\n requestDate = new Date(rewindDate);\n }\n initWSRequest(pathPrefix, requestDate);\n } else {\n dispatch(setLoadingObjects(false));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadingObjects,\n internalPaths,\n dispatch,\n rewindDate,\n rewindEnabled,\n displayListObjects,\n initWSRequest,\n ]);\n\n useEffect(() => {\n dispatch(setVersionsModeEnabled({ status: false }));\n }, [internalPaths, dispatch]);\n\n useEffect(() => {\n if (loadingVersioning && !anonymousMode) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/versioning`)\n .then((res: BucketVersioningInfo) => {\n dispatch(setIsVersioned(res));\n dispatch(setLoadingVersioning(false));\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.detailedError\n );\n dispatch(setLoadingVersioning(false));\n });\n } else {\n dispatch(setLoadingVersioning(false));\n dispatch(resetMessages());\n }\n }\n }, [\n bucketName,\n loadingVersioning,\n dispatch,\n displayListObjects,\n anonymousMode,\n ]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n dispatch(setLockingEnabled(res.object_locking_enabled));\n dispatch(setLoadingLocking(false));\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.detailedError\n );\n dispatch(setLoadingLocking(false));\n });\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingLocking(false));\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n dispatch(setLockingEnabled(res.object_locking_enabled));\n setLoadingLocking(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.detailedError\n );\n setLoadingLocking(false);\n });\n } else {\n dispatch(resetMessages());\n setLoadingLocking(false);\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n return (\n \n {!anonymousMode && }\n \n \n );\n};\n\nexport default withStyles(styles)(BrowserHandler);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { CSSObject } from \"styled-components\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { IconButton } from \"@mui/material\";\nimport { objectBrowserCommon } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { BackCaretIcon, Button, CopyIcon, NewPathIcon, Tooltip } from \"mds\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\")\n )\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...objectBrowserCommon,\n slashSpacingStyle: {\n margin: \"0 5px\",\n },\n })\n);\n\ninterface IObjectBrowser {\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n bucketName,\n internalPaths,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n\n const canCreatePath =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]) || anonymousMode;\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/browser/${bucketName}/${\n subSplit ? `${encodeURLString(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n {objectItem}\n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" })\n );\n }}\n >\n {objectItem}\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n navigate(-1);\n }\n };\n\n let regularButtonOverride: CSSObject = {};\n\n if (colorVariants) {\n regularButtonOverride = {\n backgroundColor: \"transparent\",\n };\n }\n\n return (\n \n
\n {createFolderOpen && (\n \n )}\n \n \n \n \n
\n {listBreadcrumbs}\n
\n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n
{additionalOptions}
\n
\n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={anonymousMode ? false : rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n sx={regularButtonOverride}\n />\n \n )}\n
\n
{additionalOptions}
\n
\n );\n};\n\nexport default BrowserBreadcrumbs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CSSObject } from \"styled-components\";\nimport { Menu, MenuItem } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport { Button, UploadFolderIcon, UploadIcon } from \"mds\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n classes: any;\n overrideStyles?: CSSObject;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n listUploadIcons: {\n height: 20,\n \"& .min-icon\": {\n width: 18,\n fill: \"rgba(0,0,0,0.87)\",\n },\n },\n });\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n classes,\n overrideStyles = {},\n}: IUploadFilesButton) => {\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const [anchorEl, setAnchorEl] = useState(null);\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed =\n hasPermission(uploadPath, [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]) || anonymousMode;\n const uploadFolderAllowed = hasPermission(\n bucketName,\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n false,\n true\n );\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n sx={overrideStyles}\n />\n \n {\n handleCloseUpload();\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {\n uploadFileFunction(handleCloseUpload);\n }}\n disabled={!uploadObjectAllowed || forceDisable}\n >\n \n \n \n Upload File\n \n {\n uploadFolderFunction(handleCloseUpload);\n }}\n disabled={!uploadFolderAllowed || forceDisable}\n >\n \n \n \n Upload Folder\n \n \n \n );\n};\n\nexport default withStyles(styles)(UploadFilesButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport { ClosePanelIcon } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailsList: {\n borderColor: \"#EAEDEE\",\n borderWidth: 0,\n borderStyle: \"solid\",\n borderRadius: 3,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n width: 0,\n transitionDuration: \"0.3s\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n position: \"relative\",\n opacity: 0,\n marginLeft: -1,\n \"&.open\": {\n width: 300,\n minWidth: 300,\n borderLeftWidth: 1,\n opacity: 1,\n },\n \"@media (max-width: 799px)\": {\n \"&.open\": {\n width: \"100%\",\n minWidth: \"100%\",\n borderLeftWidth: 0,\n },\n },\n },\n closePanel: {\n position: \"absolute\",\n right: 0,\n top: 8,\n \"& .min-icon\": {\n width: 14,\n },\n },\n })\n);\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => num + 1);\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(\n Array(25),\n (_, numYear) => numYear + currentYear\n);\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport { SelectChangeEvent } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport InputBase from \"@mui/material/InputBase\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport FormSwitchWrapper from \"../FormSwitchWrapper/FormSwitchWrapper\";\nimport { days, months, validDate, years } from \"./utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateInput: {\n \"&:not(:last-child)\": {\n marginRight: 22,\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n flex: 1,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n fieldContainerBorder: {\n borderBottom: \"#9c9c9c 1px solid\",\n marginBottom: 20,\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n \"& .MuiSelect-icon\": {\n color: \"#000\",\n \"&.Mui-disabled\": {\n color: \"#9c9c9c\",\n },\n },\n },\n input: {\n borderBottom: 0,\n fontSize: 12,\n },\n })\n)(InputBase);\n\ninterface IDateSelectorProps {\n classes: any;\n id: string;\n label: string;\n disableOptions?: boolean;\n addSwitch?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n classes,\n id,\n label,\n disableOptions = false,\n addSwitch = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [dateEnabled, setDateEnabled] = useState(false);\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else if (addSwitch) {\n return !dateEnabled;\n } else {\n return false;\n }\n };\n\n const onMonthChange = (e: SelectChangeEvent) => {\n setMonth(e.target.value as string);\n };\n\n const onDayChange = (e: SelectChangeEvent) => {\n setDay(e.target.value as string);\n };\n\n const onYearChange = (e: SelectChangeEvent) => {\n setYear(e.target.value as string);\n };\n\n return (\n \n
\n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n {addSwitch && (\n {\n setDateEnabled(e.target.checked);\n if (!e.target.checked) {\n onDateChange(\"\", true);\n }\n }}\n switchOnly\n />\n )}\n
\n
\n
\n \n }\n >\n \n {\"\"}\n \n {months.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {days.map((dayNumber) => (\n \n {dayNumber}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {years.map((year) => (\n \n {year}\n \n ))}\n \n \n
\n \n );\n }\n);\n\nexport default withStyles(styles)(DateSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\n\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n dateSelector: {\n \"& div\": {\n borderBottom: 0,\n marginBottom: 0,\n\n \"& div:nth-child(2)\": {\n border: \"1px solid #EAEAEA\",\n paddingLeft: 5,\n\n \"& div\": {\n border: 0,\n },\n },\n },\n },\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: IFileInfo;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(objectInfo.retention_mode.toLowerCase());\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(\"\");\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string\n ) => {\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`,\n {\n expires: expireDate,\n mode: type,\n }\n )\n .then((res: any) => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null\n ) => {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name;\n const versionId = objectInfo.version_id;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n
\n Selected Object: {objectName}\n
\n ) => {\n onSubmit(e);\n }}\n >\n {showSwitcher && (\n \n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n {\n setType(e.target.value);\n }}\n selectorOptions={[\n { label: \"Governance\", value: \"governance\" },\n { label: \"Compliance\", value: \"compliance\" },\n ]}\n />\n \n \n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetRetention);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { BucketVersioningInfo } from \"../../../types\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioningInfo: BucketVersioningInfo | undefined;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n versioningInfo,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n\n // We close the modal box on access denied.\n if (err.detailedError === \"Access Denied.\") {\n closeDeleteModalAndRefresh(true);\n }\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION]\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const decodedSelectedObject = decodeURLString(selectedObject);\n const recursive = decodedSelectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}${\n selectedVersion !== \"\"\n ? `&version_id=${selectedVersion}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }${bypassGovernance ? \"&bypass=true\" : \"\"}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
\n {decodeURLString(selectedObject)}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
\n
\n Version ID:\n
\n {selectedVersion}\n
\n ) : (\n \"\"\n )}\n ?
\n
\n {isVersionedMode(versioningInfo?.Status) &&\n selectedVersion === \"\" && (\n \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n \n )}\n {canBypass && (deleteVersions || selectedVersion !== \"\") && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the object as well as all of its versions,{\" \"}\n
\n This action is irreversible.\n \n
\n Are you sure you want to continue?\n
\n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport interface IValidation {\n fieldKey: string;\n required: boolean;\n pattern?: RegExp;\n customPatternMessage?: string;\n customValidation?: boolean; // The validation to trigger the error\n customValidationMessage?: string;\n value: string;\n}\n\nexport const commonFormValidation = (fieldsValidate: IValidation[]) => {\n let returnErrors: any = {};\n\n fieldsValidate.forEach((field) => {\n if (\n field.required &&\n typeof field.value !== \"undefined\" &&\n field.value.trim &&\n field.value.trim() === \"\"\n ) {\n returnErrors[field.fieldKey] = \"Field cannot be empty\";\n return;\n }\n // if it's not required and the value is empty, we are done here\n if (\n !field.required &&\n typeof field.value !== \"undefined\" &&\n field.value.trim &&\n field.value.trim() === \"\"\n ) {\n return;\n }\n\n if (field.customValidation && field.customValidationMessage) {\n returnErrors[field.fieldKey] = field.customValidationMessage;\n return;\n }\n\n if (field.pattern && field.customPatternMessage) {\n const rgx = new RegExp(field.pattern, \"g\");\n\n if (\n field.value &&\n field.value.trim() !== \"\" &&\n !field.value.match(rgx) &&\n typeof field.value !== \"undefined\"\n ) {\n returnErrors[field.fieldKey] = field.customPatternMessage;\n }\n return;\n }\n });\n\n return returnErrors;\n};\n\nexport const isVersionedMode = (status: string | undefined) => {\n return status === \"Enabled\" || status === \"Suspended\";\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: IFileInfo;\n}\n\nconst SetLegalHoldModal = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/legalhold?prefix=${encodeURLString(\n objectName\n )}&version_id=${versionId}`,\n { status: legalHoldEnabled ? \"enabled\" : \"disabled\" }\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n \n Object: {bucketName}\n \n\n ) => {\n onSubmit(e);\n }}\n >\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetLegalHoldModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { withStyles } from \"@mui/styles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, Table, TableBody, TableCell, TableRow } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n detailsPanel,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\ninterface IObjectMetadata {\n metaData: any;\n classes?: any;\n linear?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n titleItem: {\n width: \"35%\",\n },\n ...spacingUtils,\n ...detailsPanel,\n });\n\nconst ObjectMetaData = ({\n metaData,\n classes,\n linear = false,\n}: IObjectMetadata) => {\n const metaKeys = Object.keys(metaData);\n\n if (linear) {\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n {element}\n
\n {renderItem}\n \n );\n })}\n
\n );\n }\n\n return (\n \n \n \n Object Metadata\n \n \n\n \n \n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n \n {element}\n \n {renderItem}\n \n );\n })}\n \n
\n
\n \n );\n};\n\nexport default withStyles(styles)(ObjectMetaData);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport clsx from \"clsx\";\n\ntype ObjectActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n icon: React.ReactNode;\n label: string;\n [x: string]: any;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: \"0 15px\",\n height: 22,\n margin: 0,\n color: \"#5E5E5E\",\n fontWeight: \"normal\",\n fontSize: 14,\n whiteSpace: \"nowrap\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n \"&:hover\": {\n backgroundColor: \"transparent\",\n color: \"#000\",\n },\n \"& .min-icon\": {\n width: 11,\n },\n \"&:disabled\": {\n color: \"#EBEBEB\",\n borderColor: \"#EBEBEB\",\n },\n },\n });\n\n// TODO: Create an mds version of this.\nconst ObjectActionButton = ({\n disabled,\n onClick,\n icon,\n label,\n classes,\n ...restProps\n}: ObjectActionButtonProps) => {\n return (\n \n {label}\n \n );\n};\n\nexport default withStyles(styles)(ObjectActionButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ObjectActionButton from \"./ObjectActionButton\";\nimport { withStyles } from \"@mui/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { detailsPanel } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = () =>\n createStyles({\n ...detailsPanel,\n });\n\nexport interface MultiSelectionItem {\n action: () => void;\n label: string;\n disabled: boolean;\n icon: React.ReactNode;\n tooltip: string;\n}\n\ninterface IActionsListSectionProps {\n items: MultiSelectionItem[];\n title: string | React.ReactNode;\n classes: any;\n}\n\nconst ActionsListSection = ({\n items,\n classes,\n title,\n}: IActionsListSectionProps) => {\n return (\n \n
{title}
\n
    \n
  • Actions:
  • \n {items.map((actionItem, index) => {\n return (\n
  • \n \n \n \n
  • \n );\n })}\n
\n
\n );\n};\n\nexport default withStyles(styles)(ActionsListSection);\n","import React from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\ninterface IIconWithLabel {\n classes: any;\n icon: JSX.Element;\n strings: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n fileName: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n minWidth: 16,\n minHeight: 16,\n },\n },\n fileNameText: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n });\n\nconst IconWithLabel = ({ classes, icon, strings }: IIconWithLabel) => {\n return (\n
\n {icon}\n \n {strings[strings.length - 1]}\n \n
\n );\n};\n\nexport default withStyles(styles)(IconWithLabel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport {\n FileBookIcon,\n FileCodeIcon,\n FileConfigIcon,\n FileDbIcon,\n FileFontIcon,\n FileImageIcon,\n FileLockIcon,\n FileMissingIcon,\n FileMusicIcon,\n FileNonType,\n FilePdfIcon,\n FilePptIcon,\n FileTxtIcon,\n FileVideoIcon,\n FileXlsIcon,\n FileZipIcon,\n FolderBrowserIcon,\n} from \"mds\";\nimport IconWithLabel from \"./IconWithLabel\";\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"doc\", \"docx\", \"txt\", \"rtf\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Box, Grid } from \"@mui/material\";\nimport { AddNewTagIcon, Button, DisabledIcon, EditTagIcon } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: IFileInfo;\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n newTileHeader: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: \"#000\",\n margin: \"35px 0\",\n paddingBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& > svg\": {\n marginRight: 10,\n },\n },\n tagsForLabel: {\n fontSize: 16,\n margin: \"20px 0 30px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"100%\",\n },\n currentTagsContainer: {\n fontSize: 14,\n fontWeight: \"normal\",\n },\n noTagsForObject: {\n color: \"#858585\",\n },\n deleteTag: {\n color: \"#C83B51\",\n marginLeft: 5,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n classes,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name);\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: newTagList }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: cleanObject }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n
\n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n
\n );\n\n return (\n \n Delete Tag\n ) : (\n `Edit Tags`\n )\n }\n onClose={() => {\n onCloseAndUpdate(true);\n }}\n titleIcon={\n deleteEnabled ? (\n \n ) : (\n \n )\n }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n
\n Current Tags:\n
\n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
\n \n \n \n \n \n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(AddTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, InspectMenuIcon, PasswordKeyIcon } from \"mds\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Box, DialogContentText } from \"@mui/material\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface IInspectObjectProps {\n classes: any;\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n classes,\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n })\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
\n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n \n \n \n
\n \n ) : null}\n
\n );\n};\n\nexport default withStyles(styles)(InspectObject);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button, EditIcon } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"../Buckets/ListBuckets/Objects/ObjectDetails/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: IFileInfo;\n closeModal: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader,\n })\n);\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n\n const identityDownload = encodeURLString(\n `${bucketName}-${\n actualInfo.name\n }-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n actualInfo.version_id,\n parseInt(actualInfo.size || \"0\"),\n newFileName,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: newFileName,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n closeModal();\n };\n\n return (\n }\n >\n
\n The file you are trying to download has a long name.\n
\n This can cause issues on Windows Systems by trimming the file name after\n download.\n
\n
We recommend to rename the file download\n
\n ) => {\n doDownload(e);\n }}\n >\n \n \n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n \n \n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n \n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { IFileInfo } from \"../Buckets/ListBuckets/Objects/ObjectDetails/types\";\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLongFileOpen,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { AppDispatch } from \"../../../store\";\n\nexport const downloadObject = (\n dispatch: AppDispatch,\n bucketName: string,\n internalPaths: string,\n object: IFileInfo\n) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n if (object.name.length > 200 && getClientOS().toLowerCase().includes(\"win\")) {\n dispatch(setLongFileOpen(true));\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport { CSSObject } from \"styled-components\";\nimport {\n Button,\n DeleteIcon,\n DownloadIcon,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n detailsPanel,\n spacingUtils,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo, MetadataResponse } from \"../ObjectDetails/types\";\nimport { extensionPreview } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport api from \"../../../../../../common/api\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport { displayFileIconName } from \"./utils\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketVersioningInfo } from \"../../../types\";\n\nconst styles = () =>\n createStyles({\n ObjectDetailsTitle: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 26,\n height: 26,\n minWidth: 26,\n minHeight: 26,\n },\n },\n objectNameContainer: {\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n alignItems: \"center\",\n marginLeft: 10,\n },\n headerForSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 15,\n borderBottom: \"#E2E2E2 2px solid\",\n fontWeight: \"bold\",\n fontSize: 18,\n color: \"#000\",\n margin: \"20px 22px\",\n },\n capitalizeFirst: {\n textTransform: \"capitalize\",\n },\n\n ...actionsTray,\n ...spacingUtils,\n ...textStyleUtils,\n ...detailsPanel,\n });\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\ninterface IObjectDetailPanelProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningInfo;\n locking: boolean;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n classes,\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo\n );\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: IFileInfo) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: IFileInfo) => el.version_id === selectedVersion\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: { objects: IFileInfo[] }) => {\n const result: IFileInfo[] = res.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: IFileInfo): number => {\n if (currValue?.size) {\n return acc + parseInt(currValue.size);\n }\n return acc;\n },\n 0\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((error: ErrorResponseHandler) => {\n console.error(\"Error loading object details\", error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/metadata?prefix=${internalPaths}`\n )\n .then((res: MetadataResponse) => {\n let metadata = get(res, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n
\n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT]\n );\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download this object\"\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"share this object\"\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n extensionPreview(currentItem) === \"none\" ||\n !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"preview this object\"\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD, IAM_SCOPES.S3_PUT_ACTIONS],\n \"change legal hold settings for this object\"\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"change Retention Rules for this object\"\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"set Tags on this object\"\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\"\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n })\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"display all versions of this object\"\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n let regularButtonOverride: CSSObject = {};\n\n if (colorVariants) {\n regularButtonOverride = {\n backgroundColor: \"transparent\",\n };\n }\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName, true)}\n \n {objectName}\n \n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n sx={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n ...regularButtonOverride,\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n \n Object Info\n \n \n \n Name:\n
\n
{objectName}
\n
\n {selectedVersion !== \"\" && (\n \n Version ID:\n
\n {selectedVersion}\n
\n )}\n \n Size:\n
\n {niceBytes(actualInfo.size || \"0\")}\n
\n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
\n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
\n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
\n {calculateLastModifyTime(actualInfo.last_modified)}\n
\n )}\n \n ETAG:\n
\n {actualInfo.etag || \"N/A\"}\n
\n \n Tags:\n
\n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
\n \n \n \n Legal Hold:\n
\n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
\n \n
\n \n \n \n Retention Policy:\n
\n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
\n \n
\n {!actualInfo.is_delete_marker && (\n \n \n Metadata\n \n \n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(ObjectDetailPanel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { modalBasic } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport api from \"../../../../../../common/api\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { RecoverIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { IFileInfo } from \"./types\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\n\ninterface IRestoreFileVersion {\n classes: any;\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: IFileInfo;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst RestoreFileVersion = ({\n classes,\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/restore?prefix=${encodeURLString(\n objectPath\n )}&version_id=${versionToRestore.version_id}`\n )\n .then((res: any) => {\n console.log(\"REStORE\", res);\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n })\n );\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
\n {objectPath}
with Version ID:\n
\n {versionToRestore.version_id}?\n
\n }\n />\n );\n};\n\nexport default withStyles(styles)(RestoreFileVersion);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { DateTime } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport { withStyles } from \"@mui/styles\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport { IFileInfo } from \"./types\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport { DownloadIcon, PreviewIcon, RecoverIcon, ShareIcon } from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: IFileInfo;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: IFileInfo) => void;\n onDownload: (versionInfo: IFileInfo) => void;\n onRestore: (versionInfo: IFileInfo) => void;\n onPreview: (versionInfo: IFileInfo) => void;\n globalClick: (versionInfo: IFileInfo) => void;\n classes: any;\n key: any;\n style: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainFileVersionItem: {\n borderBottom: \"#E2E2E2 1px solid\",\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n \"@media (max-width: 799px)\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n },\n intermediateLayer: {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: \"#F8F8F8\",\n \"& > div\": {\n borderBottomColor: \"#F8F8F8\",\n },\n },\n \"@media (max-width: 799px)\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: \"#E2E2E2\",\n },\n },\n },\n },\n versionContainer: {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n \"@media (max-width: 799px)\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n },\n buttonContainer: {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n \"@media (max-width: 600px)\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n versionID: {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n versionData: {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n \"@media (max-width: 799px)\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n },\n ctrItem: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n collapsableInfo: {\n \"@media (max-width: 799px)\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n },\n versionItem: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n });\n\nconst FileVersionItem = ({\n classes,\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(versionInfo.last_modified);\n }\n\n return (\n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n e.preventDefault();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n overrideCheckboxStyles={{\n paddingLeft: 0,\n height: 34,\n width: 25,\n }}\n noTopMargin\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(versionInfo.size || \"0\")}\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(FileVersionItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION]\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}&non_current_versions=true${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`\n )\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n
\n To continue please type YES, PROCEED in the box.\n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
\n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport api from \"../../../../../../common/api\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION]\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api\n .invoke(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=false${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`,\n selectedObjectsRequest\n )\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { withStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport ShareFile from \"./ShareFile\";\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n spacingUtils,\n tableStyles,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\nimport { download } from \"../utils\";\nimport api from \"../../../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n Button,\n DeleteIcon,\n DeleteNonCurrentIcon,\n SelectMultipleIcon,\n VersionsIcon,\n} from \"mds\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n makeid,\n storeCallForObjectWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLoadingObjectInfo,\n setLoadingVersions,\n setNewObject,\n setSelectedVersion,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n versionsContainer: {\n padding: 10,\n \"@media (max-width: 799px)\": {\n minHeight: 800,\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n },\n versionsVirtualPanel: {\n flexGrow: 1,\n height: \"calc(100% - 120px)\",\n overflow: \"auto\",\n \"@media (max-width: 799px)\": {\n height: 600,\n },\n },\n screenTitleContainer: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n height: \"40px\",\n bottom: 0,\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n sortByLabel: {\n color: \"#838383\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginRight: 12,\n fontSize: 14,\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n ...actionsTray,\n ...tableStyles,\n ...spacingUtils,\n ...textStyleUtils,\n ...objectBrowserCommon,\n ...objectBrowserExtras,\n ...containerForHeader,\n });\n\ninterface IVersionsNavigatorProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\nconst VersionsNavigator = ({\n classes,\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(null);\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: IFileInfo) => item.name === decodedInternalPaths\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: IFileInfo) => el.is_latest) ||\n emptyFile\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const downloadObject = (object: IFileInfo) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const onShareItem = (item: IFileInfo) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: IFileInfo) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: IFileInfo) => {\n setRestoreVersion(item);\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: IFileInfo) => {\n downloadObject(item);\n };\n\n const onGlobalClick = (item: IFileInfo) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(null);\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: IFileInfo) => {\n if (currValue.size) {\n return acc + parseInt(currValue.size);\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified).getTime();\n const dateB = new Date(b.last_modified).getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && restoreVersion && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={\n \n {objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name}{\" \"}\n Versions\n \n }\n subTitle={\n \n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n Sort by\n ) => {\n setSortValue(e.target.value as string);\n }}\n name={\"sort-by\"}\n options={[\n { label: \"Date\", value: \"date\" },\n {\n label: \"Size\",\n value: \"size\",\n },\n ]}\n />\n \n }\n className={classes.noBottomBorder}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(VersionsNavigator);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { DateTime } from \"luxon\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n\n const currTime = DateTime.now();\n const objectTime = DateTime.fromISO(object.last_modified);\n\n const isToday =\n currTime.hasSame(objectTime, \"day\") &&\n currTime.hasSame(objectTime, \"month\") &&\n currTime.hasSame(objectTime, \"year\");\n\n if (isToday) {\n return `Today, ${objectTime.toFormat(\"HH:mm\")}`;\n }\n\n return objectTime.toFormat(\"ccc, LLL dd yyyy HH:mm (ZZZZ)\");\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport TableWrapper, {\n ItemActions,\n} from \"../../../../Common/TableWrapper/TableWrapper\";\nimport React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n setIsOpeningOD,\n setLoadingObjects,\n setLoadingVersions,\n setObjectDetailsView,\n setSelectedObjects,\n setSelectedObjectView,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { sortListObjects } from \"../utils\";\nimport { BucketObjectItem } from \"./types\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { IFileInfo } from \"../ObjectDetails/types\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n browsePaper: {\n border: 0,\n height: \"calc(100vh - 290px)\",\n \"&.isEmbedded\": {\n height: \"calc(100vh - 315px)\",\n },\n \"&.actionsPanelOpen\": {\n minHeight: \"100%\",\n },\n \"@media (max-width: 800px)\": {\n width: 800,\n },\n },\n parentWrapper: {\n position: \"relative\",\n height: \"calc(100% - 60px)\",\n \"@media (max-width: 800px)\": {\n overflowX: \"auto\",\n },\n },\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n })\n);\n\ninterface IListObjectTable {\n internalPaths: string | null;\n}\n\nconst ListObjectsTable = ({ internalPaths }: IListObjectTable) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n\n const bucketName = params.bucketName || \"\";\n\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen\n );\n\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const openPath = (object: IFileInfo) => {\n const idElement = object.name;\n const newPath = `/browser/${bucketName}${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n\n // for anonymous start download\n if (anonymousMode && internalPaths !== null && !object.name.endsWith(\"/\")) {\n downloadObject(\n dispatch,\n bucketName,\n `${encodeURLString(idElement)}`,\n object\n );\n return;\n }\n dispatch(setSelectedObjects([]));\n\n navigate(newPath);\n\n if (!anonymousMode) {\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(setIsOpeningOD(true));\n }\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`\n )\n );\n };\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n label: \"View\",\n onClick: openPath,\n sendOnlyId: false,\n },\n ];\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setLoadingObjects(true));\n };\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n dispatch(setSelectedObjects([]));\n return;\n }\n\n const elements = payload.map((item) => item.name);\n dispatch(setSelectedObjects(elements));\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n dispatch(setSelectedObjects(elements));\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n return (\n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n parentClassName={classes.parentWrapper}\n />\n );\n};\nexport default ListObjectsTable;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setDownloadRenameModal,\n setNewObject,\n setPreviewOpen,\n setSelectedPreview,\n setShareFileModalOpen,\n updateProgress,\n} from \"./objectBrowserSlice\";\n\nexport const downloadSelected = createAsyncThunk(\n \"objectBrowser/downloadSelected\",\n async (bucketName: string, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n encodeURLString(object.name),\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n if (state.objectBrowser.selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n itemsToDownload = state.objectBrowser.records.filter(filterFunction);\n\n // I case just one element is selected, then we trigger download modal validation.\n // We are going to enforce zip download when multiple files are selected\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n dispatch(setDownloadRenameModal(itemsToDownload[0]));\n return;\n }\n }\n\n itemsToDownload.forEach((filteredItem) => {\n downloadObject(filteredItem);\n });\n }\n }\n);\n\nexport const openPreview = createAsyncThunk(\n \"objectBrowser/openPreview\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setPreviewOpen(true));\n }\n }\n }\n);\n\nexport const openShare = createAsyncThunk(\n \"objectBrowser/openShare\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setShareFileModalOpen(true));\n }\n }\n }\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setSearchObjects } from \"./objectBrowserSlice\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst FilterObjectsSB = () => {\n const dispatch = useAppDispatch();\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n return (\n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n );\n};\nexport default FilterObjectsSB;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CSSObject } from \"styled-components\";\nimport {\n BucketsIcon,\n Button,\n DeleteIcon,\n DownloadIcon,\n HistoryIcon,\n PreviewIcon,\n RefreshIcon,\n ShareIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport get from \"lodash/get\";\nimport api from \"../../../../../../common/api\";\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n searchField,\n tableStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Badge } from \"@mui/material\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport { extensionPreview } from \"../utils\";\nimport { BucketInfo, BucketQuota } from \"../../../types\";\nimport {\n ErrorResponseHandler,\n IRetentionConfig,\n} from \"../../../../../../common/types\";\n\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport PageLayout from \"../../../../Common/Layout/PageLayout\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\n\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetMessages,\n resetRewind,\n setDownloadRenameModal,\n setLoadingObjects,\n setLoadingRecords,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setPreviewOpen,\n setRetentionConfig,\n setSearchObjects,\n setSelectedBucket,\n setSelectedObjects,\n setSelectedObjectView,\n setSelectedPreview,\n setShareFileModalOpen,\n setShowDeletedObjects,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport ListObjectsTable from \"./ListObjectsTable\";\nimport {\n downloadSelected,\n openPreview,\n openShare,\n} from \"../../../../ObjectBrowser/objectBrowserThunks\";\n\nimport FilterObjectsSB from \"../../../../ObjectBrowser/FilterObjectsSB\";\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\"))\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\"))\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\"))\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n badgeOverlap: {\n \"& .MuiBadge-badge\": {\n top: 10,\n right: 1,\n width: 5,\n height: 5,\n minWidth: 5,\n },\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n screenTitleContainer: {\n border: \"#EAEDEE 1px solid\",\n },\n labelStyle: {\n color: \"#969FA8\",\n fontSize: \"12px\",\n },\n breadcrumbsContainer: {\n padding: \"12px 14px 5px\",\n },\n fullContainer: {\n position: \"relative\",\n \"@media (max-width: 799px)\": {\n width: 0,\n },\n },\n hideListOnSmall: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n actionsSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n },\n ...objectBrowserExtras,\n ...objectBrowserCommon,\n ...containerForHeader,\n })\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"#eeeeee\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#00e676\",\n};\n\nconst ListObjects = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths\n );\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath\n );\n\n const isVersioned = useSelector(\n (state: AppState) => state.objectBrowser.versionInfo\n );\n const lockingEnabled = useSelector(\n (state: AppState) => state.objectBrowser.lockingEnabled\n );\n const downloadRenameModal = useSelector(\n (state: AppState) => state.objectBrowser.downloadRenameModal\n );\n const selectedPreview = useSelector(\n (state: AppState) => state.objectBrowser.selectedPreview\n );\n const shareFileModalOpen = useSelector(\n (state: AppState) => state.objectBrowser.shareFileModalOpen\n );\n const previewOpen = useSelector(\n (state: AppState) => state.objectBrowser.previewOpen\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n\n const bucketName = params.bucketName || \"\";\n\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n const canDownload = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]);\n const canUpload =\n hasPermission(\n uploadPath,\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n true,\n true\n ) || anonymousMode;\n\n const displayDeleteObject = hasPermission(bucketName, [\n IAM_SCOPES.S3_DELETE_OBJECT,\n ]);\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects\n );\n\n useEffect(() => {\n dispatch(setSearchObjects(\"\"));\n dispatch(setLoadingObjects(true));\n dispatch(setSelectedObjects([]));\n }, [simplePath, dispatch]);\n\n useEffect(() => {\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n }\n }, [rewindEnabled, bucketToRewind, bucketName, dispatch]);\n\n // END OF WS HANDLERS\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n\n if (extensionPreview(objectName) !== \"none\") {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (objectName.endsWith(\"/\")) {\n setCanShareFile(false);\n } else {\n setCanShareFile(true);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects]);\n\n useEffect(() => {\n if (!quota && !anonymousMode) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/quota`)\n .then((res: BucketQuota) => {\n let quotaVals = null;\n\n if (res.quota) {\n quotaVals = res;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\"Error Getting Quota Status: \", err.detailedError);\n setQuota(null);\n });\n }\n }, [quota, bucketName, anonymousMode]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (\n selectedObjects.length === 0 &&\n selectedInternalPaths === null &&\n !loadingObjects\n ) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch, loadingObjects]);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n // bucket info\n useEffect(() => {\n if (loadingBucket && !anonymousMode) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}`)\n .then((res: BucketInfo) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res));\n dispatch(setSelectedBucket(bucketName));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [bucketName, loadingBucket, dispatch, anonymousMode]);\n\n // Load retention Config\n\n useEffect(() => {\n if (selectedBucket !== \"\") {\n api\n .invoke(\"GET\", `/api/v1/buckets/${selectedBucket}/retention`)\n .then((res: IRetentionConfig) => {\n dispatch(setRetentionConfig(res));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setRetentionConfig(null));\n });\n }\n }, [selectedBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n dispatch(setSelectedObjects([]));\n dispatch(setLoadingObjects(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (var i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n encodedPath = encodeURLString(\n `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`\n );\n }\n\n if (encodedPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodedPath}`;\n }\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n if (anonymousMode) {\n xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n // xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function (event) {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n })\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", (event) => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n })\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setLoadingObjects(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n\n storeFormDataWithID(ID, formData);\n storeCallForObjectWithID(ID, xhr);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\"\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setLoadingObjects(true));\n dispatch(setSelectedObjects([]));\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath, anonymousMode]\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n uploadObject(acceptedFiles, newFolderPath);\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\"\n ),\n })\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject]\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept]\n );\n\n const closeShareModal = () => {\n dispatch(setShareFileModalOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n dispatch(setPreviewOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/browser/${bucketName}/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjects([]));\n\n if (forceRefresh) {\n dispatch(setLoadingObjects(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(resetMessages());\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n dispatch(setDownloadRenameModal(null));\n };\n\n let createdTime = DateTime.now();\n\n if (bucketInfo?.creation_date) {\n createdTime = DateTime.fromISO(bucketInfo.creation_date);\n }\n\n let regularButtonOverride: CSSObject = {};\n let callActionButtonOverride: CSSObject = {};\n\n if (colorVariants) {\n regularButtonOverride = {\n backgroundColor: \"transparent\",\n };\n\n callActionButtonOverride = {\n color: get(colorVariants, \"buttonStyles.textColor\", \"#fff\"),\n backgroundColor: get(\n colorVariants,\n \"buttonStyles.backgroundColor\",\n \"#07193E\"\n ),\n \"&:hover\": {\n color: get(colorVariants, \"buttonStyles.hoverText\", \"#fff\"),\n backgroundColor: get(\n colorVariants,\n \"buttonStyles.hoverColor\",\n \"#0D2453\"\n ),\n },\n \"&:active\": {\n color: get(colorVariants, \"buttonStyles.activeText\", \"#fff\"),\n backgroundColor: get(\n colorVariants,\n \"buttonStyles.activeColor\",\n \"#05132F\"\n ),\n },\n };\n }\n\n const multiActionButtons = [\n {\n action: () => {\n dispatch(downloadSelected(bucketName));\n },\n label: \"Download\",\n disabled: !canDownload || selectedObjects?.length === 0,\n icon: ,\n tooltip: canDownload\n ? \"Download Selected\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download objects from this bucket\"\n ),\n },\n {\n action: () => {\n dispatch(openShare());\n },\n label: \"Share\",\n disabled: selectedObjects.length !== 1 || !canShareFile,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: () => {\n dispatch(openPreview());\n },\n label: \"Preview\",\n disabled: selectedObjects.length !== 1 || !canPreviewFile,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled:\n !canDelete || selectedObjects.length === 0 || !displayDeleteObject,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\"\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n\n \n {anonymousMode && (\n
\n \n
\n )}\n \n \n \n \n }\n title={{bucketName}}\n subTitle={\n !anonymousMode ? (\n \n \n \n Created on:  \n \n {bucketInfo?.creation_date\n ? createdTime.toFormat(\n \"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\"\n )\n : \"\"}\n \n \n \n Access:   \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n / {niceBytesInt(quota.quota)}\n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n \n ) : null\n }\n actions={\n
\n {!anonymousMode && (\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={\n !isVersioned ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ])\n }\n sx={regularButtonOverride}\n />\n \n )}\n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingRecords(true));\n dispatch(setLoadingObjects(true));\n }\n }}\n disabled={\n anonymousMode\n ? false\n : !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || rewindEnabled\n }\n sx={regularButtonOverride}\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n overrideStyles={callActionButtonOverride}\n />\n
\n }\n />\n
\n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n {!anonymousMode && (\n \n \n \n \n )\n }\n hidePathButton={false}\n />\n \n )}\n \n \n \n )}\n {!anonymousMode && (\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? classes.hideListOnSmall : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n )}\n \n \n
\n
\n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { BackLink, Button, SettingsIcon, Grid } from \"mds\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { useNavigate } from \"react-router-dom\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setSearchVersions } from \"./objectBrowserSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport FilterObjectsSB from \"./FilterObjectsSB\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ObjectManagerButton from \"../Common/ObjectManager/ObjectManagerButton\";\n\ninterface IOBHeader {\n bucketName: string;\n}\n\nconst OBHeader = ({ bucketName }: IOBHeader) => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const navigate = useNavigate();\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n \n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n return (\n \n {!obOnly ? (\n {\n console.log(\"clicke\");\n navigate(IAM_PAGES.OBJECT_BROWSER_VIEW);\n }}\n />\n }\n actions={\n \n \n navigate(`/buckets/${bucketName}/admin`)}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n \n )}\n \n );\n};\n\nexport default OBHeader;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport { DateTime } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport InputBoxWrapper from \"../InputBoxWrapper/InputBoxWrapper\";\nimport { LinkIcon } from \"mds\";\n\ninterface IDaysSelector {\n classes: any;\n id: string;\n initialDate: Date;\n maxDays?: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginBottom: 15,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n dateInputContainer: {\n margin: \"0 10px\",\n },\n durationInputs: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n\n validityIndicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n marginTop: 25,\n marginLeft: 10,\n },\n invalidDurationText: {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n reverseInput: {\n flexFlow: \"row-reverse\",\n \"& > label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n validityText: {\n fontSize: 14,\n marginTop: 15,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n \"& > .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n validTill: {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n });\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number\n) => {\n return DateTime.fromJSDate(initialDate).plus({ days, hours, minutes });\n};\n\nconst DaysSelector = ({\n classes,\n id,\n initialDate,\n label,\n maxDays,\n entity,\n onChange,\n}: IDaysSelector) => {\n const [selectedDays, setSelectedDays] = useState(7);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(DateTime.now());\n\n useEffect(() => {\n if (\n !isNaN(selectedHours) &&\n !isNaN(selectedDays) &&\n !isNaN(selectedMinutes)\n ) {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes\n )\n );\n }\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n const formattedDate = dateSelected.toFormat(\"yyyy-MM-dd HH:mm:ss\");\n onChange(formattedDate.split(\" \").join(\"T\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n if (\n selectedDays < 0 ||\n (maxDays && selectedDays > maxDays) ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (\n maxDays &&\n selectedDays === maxDays &&\n (selectedHours !== 0 || selectedMinutes !== 0)\n ) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraInputProps = {\n style: {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 25,\n },\n className: \"removeArrows\" as const,\n };\n\n return (\n \n \n \n \n {label}\n \n \n \n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n \n {validDate ? (\n
\n \n
\n {entity} will be available until:\n
{\" \"}\n
\n {dateSelected.toFormat(\"MM/dd/yyyy HH:mm:ss\")}\n
\n
\n ) : (\n
\n Please select a valid duration.\n
\n )}\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(DaysSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, CopyIcon, ShareIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport api from \"../../../../../../common/api\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PredefinedList from \"../../../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n shareLinkInfo: {\n fontSize: 14,\n fontWeight: 400,\n },\n copyShareLink: {\n display: \"flex\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n },\n copyShareLinkInput: {\n \"& div:first-child\": {\n marginTop: 0,\n },\n \"@media (max-width: 900px)\": {\n minWidth: 250,\n },\n },\n ...modalStyleUtils,\n ...formFieldStyles,\n });\n\ninterface IShareFileProps {\n classes: any;\n open: boolean;\n bucketName: string;\n dataObject: IFileInfo;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n classes,\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${encodeURLString(\n dataObject.name\n )}${distributedSetup ? \"&with_versions=true\" : \"\"}`\n )\n .then((res: { objects: IFileInfo[] }) => {\n const result: IFileInfo[] = res.objects || [];\n\n const latestVersion: IFileInfo | undefined = result.find(\n (elem: IFileInfo) => elem.is_latest\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't ve retrieved, we default\n setVersionID(\"null\");\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000\n );\n\n if (diffDate > 0) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/share?prefix=${encodeURLString(\n dataObject.name\n )}&version_id=${versionID}${\n selectedDate !== \"\" ? `&expires=${diffDate}s` : \"\"\n }`\n )\n .then((res: string) => {\n setShareURL(res);\n setIsLoadingFile(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n This is a temporary URL with integrated access credentials for\n sharing objects valid for up to 7 days.\n
\n
\n The temporary URL expires after the configured time limit.\n
\n
\n \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\n \"Share URL Copied to clipboard\"\n )\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n />\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(ShareFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, LinearProgress } from \"@mui/material\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { extensionPreview } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport clsx from \"clsx\";\n\nconst styles = () =>\n createStyles({\n iframeContainer: {\n border: \"0px\",\n flex: \"1 1 auto\",\n width: \"100%\",\n height: 250,\n backgroundColor: \"transparent\",\n borderRadius: 5,\n\n \"&.image\": {\n height: 500,\n },\n \"&.text\": {\n height: 700,\n },\n \"&.audio\": {\n height: 150,\n },\n \"&.video\": {\n height: 350,\n },\n \"&.fullHeight\": {\n height: \"calc(100vh - 185px)\",\n },\n },\n iframeBase: {\n backgroundColor: \"#fff\",\n },\n iframeHidden: {\n display: \"none\",\n },\n });\n\ninterface IPreviewFileProps {\n bucketName: string;\n object: BucketObjectItem | null;\n isFullscreen?: boolean;\n classes: any;\n}\n\nconst PreviewFile = ({\n bucketName,\n object,\n isFullscreen = false,\n classes,\n}: IPreviewFileProps) => {\n const [loading, setLoading] = useState(true);\n\n let path = \"\";\n\n if (object) {\n const encodedPath = encodeURLString(object.name);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (object.version_id) {\n path = path.concat(`&version_id=${object.version_id}`);\n }\n }\n\n const objectType = extensionPreview(object?.name || \"\");\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {loading && (\n \n \n \n )}\n
\n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" && (\n \n \n File couldn't be loaded. Please try Download instead\n \n
\n )}\n \n
\n );\n};\nexport default withStyles(styles)(PreviewFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { ObjectPreviewIcon } from \"mds\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n object: BucketObjectItem | null;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n object,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { BucketObjectItem } from \"./ListObjects/types\";\nimport { IAllowResources } from \"../../../types\";\nimport { encodeURLString } from \"../../../../../common/utils\";\nimport { removeTrace } from \"../../../ObjectBrowser/transferManager\";\nimport store from \"../../../../../store\";\n\nexport const download = (\n bucketName: string,\n objectPath: string,\n versionID: any,\n fileSize: number,\n overrideFileName: string | null = null,\n id: string,\n progressCallback: (progress: number) => void,\n completeCallback: () => void,\n errorCallback: (msg: string) => void,\n abortCallback: () => void\n) => {\n const anchor = document.createElement(\"a\");\n document.body.appendChild(anchor);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const state = store.getState();\n const anonymousMode = state.system.anonymousMode;\n\n let path = `${\n window.location.origin\n }${basename}api/v1/buckets/${bucketName}/objects/download?prefix=${objectPath}${\n overrideFileName !== null && overrideFileName.trim() !== \"\"\n ? `&override_file_name=${encodeURLString(overrideFileName || \"\")}`\n : \"\"\n }`;\n if (versionID) {\n path = path.concat(`&version_id=${versionID}`);\n }\n\n var req = new XMLHttpRequest();\n req.open(\"GET\", path, true);\n if (anonymousMode) {\n req.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n req.addEventListener(\n \"progress\",\n function (evt) {\n let percentComplete = Math.round((evt.loaded / fileSize) * 100);\n\n if (progressCallback) {\n progressCallback(percentComplete);\n }\n },\n false\n );\n\n req.responseType = \"blob\";\n req.onreadystatechange = () => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n const rspHeader = req.getResponseHeader(\"Content-Disposition\");\n\n let filename = \"download\";\n if (rspHeader) {\n let rspHeaderDecoded = decodeURIComponent(rspHeader);\n filename = rspHeaderDecoded.split('\"')[1];\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n removeTrace(id);\n\n var link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(req.response);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n if (req.getResponseHeader(\"Content-Type\") === \"application/json\") {\n const rspBody: { detailedMessage?: string } = JSON.parse(\n req.response\n );\n if (rspBody.detailedMessage) {\n errorCallback(rspBody.detailedMessage);\n return;\n }\n }\n errorCallback(`Unexpected response status code (${req.status}).`);\n }\n }\n };\n req.onerror = () => {\n if (errorCallback) {\n errorCallback(\"A network error occurred.\");\n }\n };\n req.onabort = () => {\n if (abortCallback) {\n abortCallback();\n }\n };\n\n return req;\n};\n\n// Review file extension by name & returns the type of preview browser that can be used\nexport const extensionPreview = (\n fileName: string\n): \"image\" | \"text\" | \"audio\" | \"video\" | \"none\" => {\n const imageExtensions = [\n \"jif\",\n \"jfif\",\n \"apng\",\n \"avif\",\n \"svg\",\n \"webp\",\n \"bmp\",\n \"ico\",\n \"jpg\",\n \"jpe\",\n \"jpeg\",\n \"gif\",\n \"png\",\n \"heic\",\n ];\n const textExtensions = [\"pdf\"];\n const audioExtensions = [\"wav\", \"mp3\", \"alac\", \"aiff\", \"dsd\", \"pcm\"];\n const videoExtensions = [\n \"mp4\",\n \"avi\",\n \"mpg\",\n \"webm\",\n \"mov\",\n \"flv\",\n \"mkv\",\n \"wmv\",\n \"avchd\",\n \"mpeg-4\",\n ];\n\n let fileExtension = fileName.split(\".\").pop();\n\n if (!fileExtension) {\n return \"none\";\n }\n\n fileExtension = fileExtension.toLowerCase();\n\n if (imageExtensions.includes(fileExtension)) {\n return \"image\";\n }\n\n if (textExtensions.includes(fileExtension)) {\n return \"text\";\n }\n\n if (audioExtensions.includes(fileExtension)) {\n return \"audio\";\n }\n\n if (videoExtensions.includes(fileExtension)) {\n return \"video\";\n }\n\n return \"none\";\n};\n\nexport const sortListObjects = (fieldSort: string) => {\n switch (fieldSort) {\n case \"name\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n a.name.localeCompare(b.name);\n case \"last_modified\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n new Date(a.last_modified).getTime() -\n new Date(b.last_modified).getTime();\n case \"size\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n (a.size || -1) - (b.size || -1);\n }\n};\n\nexport const permissionItems = (\n bucketName: string,\n currentPath: string,\n permissionsArray: IAllowResources[]\n): BucketObjectItem[] | null => {\n if (permissionsArray.length === 0) {\n return null;\n }\n\n // We get permissions applied to the current bucket\n const filteredPermissionsForBucket = permissionsArray.filter(\n (permissionItem) =>\n permissionItem.resource.endsWith(`:${bucketName}`) ||\n permissionItem.resource.includes(`:${bucketName}/`)\n );\n\n // No permissions for this bucket. we can throw the error message at this point\n if (filteredPermissionsForBucket.length === 0) {\n return null;\n }\n\n const returnElements: BucketObjectItem[] = [];\n\n // We split current path\n const splitCurrentPath = currentPath.split(\"/\");\n\n filteredPermissionsForBucket.forEach((permissionElement) => {\n // We review paths in resource address\n\n // We split ARN & get the last item to check the URL\n const splitARN = permissionElement.resource.split(\":\");\n const urlARN = splitARN.pop() || \"\";\n\n // We split the paths of the URL & compare against current location to see if there are more items to include. In case current level is a wildcard or is the last one, we omit this validation\n\n const splitURLARN = urlARN.split(\"/\");\n\n // splitURL has more items than bucket name, we can continue validating\n if (splitURLARN.length > 1) {\n splitURLARN.every((currentElementInPath, index) => {\n // It is a wildcard element. We can store the verification as value should be included (?)\n if (currentElementInPath === \"*\") {\n return false;\n }\n\n // Element is not included in the path. The user is trying to browse something else.\n if (\n splitCurrentPath[index] &&\n splitCurrentPath[index] !== currentElementInPath\n ) {\n return false;\n }\n\n // This element is not included by index in the current paths list. We add it so user can browse into it\n if (!splitCurrentPath[index]) {\n returnElements.push({\n name: `${currentElementInPath}/`,\n size: 0,\n last_modified: \"\",\n version_id: \"\",\n });\n }\n\n return true;\n });\n }\n\n // We review prefixes in allow resources for StringEquals variant only.\n if (\n permissionElement.conditionOperator === \"StringEquals\" ||\n permissionElement.conditionOperator === \"StringLike\"\n ) {\n permissionElement.prefixes.forEach((prefixItem) => {\n // Prefix Item is not empty?\n if (prefixItem !== \"\") {\n const splitItems = prefixItem.split(\"/\");\n\n let pathToRouteElements: string[] = [];\n\n splitItems.every((splitElement, index) => {\n if (!splitElement.includes(\"*\") && splitElement !== \"\") {\n if (splitElement !== splitCurrentPath[index]) {\n returnElements.push({\n name: `${pathToRouteElements.join(\"/\")}${\n pathToRouteElements.length > 0 ? \"/\" : \"\"\n }${splitElement}/`,\n size: 0,\n last_modified: \"\",\n version_id: \"\",\n });\n return false;\n }\n if (splitElement !== \"\") {\n pathToRouteElements.push(splitElement);\n }\n\n return true;\n }\n return false;\n });\n }\n });\n }\n });\n\n return returnElements;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n

\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n
\n \n {switchComponent}\n
\n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n
{actionButton}
\n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Radio, { RadioProps } from \"@mui/material/Radio\";\nimport { InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { fieldBasic, radioIcons, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface SelectorTypes {\n label: any;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: any;\n id: string;\n name: string;\n tooltip?: string;\n disableOptions?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n classes: any;\n displayInColumn?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n optionLabel: {\n \"&.Mui-disabled\": {\n \"& .MuiFormControlLabel-label\": {\n color: \"#9c9c9c\",\n },\n },\n \"&:last-child\": {\n marginRight: 0,\n },\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n },\n },\n checkedOption: {\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n fontWeight: 700,\n },\n },\n });\n\nconst radioStyles = makeStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n ...radioIcons,\n});\n\nconst RadioButton = (props: RadioProps) => {\n const classes = radioStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n};\n\nexport const RadioGroupSelector = ({\n selectorOptions = [],\n currentSelection,\n label,\n id,\n name,\n onChange,\n tooltip = \"\",\n disableOptions = false,\n classes,\n displayInColumn = false,\n}: RadioGroupProps) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n \n \n {selectorOptions.map((selectorOption) => {\n return (\n }\n label={selectorOption.label}\n disabled={disableOptions}\n className={clsx(classes.optionLabel, {\n [classes.checkedOption]:\n selectorOption.value === currentSelection,\n })}\n />\n );\n })}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(RadioGroupSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputBase,\n InputLabel,\n MenuItem,\n Select,\n SelectChangeEvent,\n Tooltip,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n {option.label}\n \n ))}\n \n \n
\n
\n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n

{title}

\n {subTitle}\n
\n
\n\n
{actions}
\n
\n \n );\n};\n\nexport default ScreenTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button, CopyIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// Close codes for websockets defined in RFC 6455\nexport const WSCloseNormalClosure = 1000;\nexport const WSCloseCloseGoingAway = 1001;\nexport const WSCloseAbnormalClosure = 1006;\nexport const WSClosePolicyViolation = 1008;\nexport const WSCloseInternalServerErr = 1011;\n\nexport const wsProtocol = (protocol: string): string => {\n let wsProtocol = \"ws\";\n if (protocol === \"https:\") {\n wsProtocol = \"wss\";\n }\n return wsProtocol;\n};\n"],"names":["objectsWS","CreatePathModal","withSuspense","React","useStyles","makeStyles","theme","createStyles","_objectSpread","objectBrowserCommon","slashSpacingStyle","margin","_ref","bucketName","internalPaths","hidePathButton","additionalOptions","dispatch","useAppDispatch","navigate","useNavigate","classes","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","colorVariants","overrideStyles","_useState","useState","_useState2","_slicedToArray","createFolderOpen","setCreateFolderOpen","canCreatePath","hasPermission","IAM_SCOPES","paths","concat","splitPaths","split","filter","path","lastBreadcrumbsIndex","length","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","_jsxs","Fragment","children","_jsx","className","style","cursor","Link","to","onClick","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","_toConsumableArray","regularButtonOverride","backgroundColor","breadcrumbsMain","modalOpen","folderName","onClose","Grid","item","xs","breadcrumbs","IconButton","sx","border","borderLeft","borderRadius","width","height","marginRight","BackCaretIcon","breadcrumbsList","dir","CopyToClipboard","text","Button","id","icon","CopyIcon","fill","marginTop","variant","setSnackBarMessage","color","Tooltip","tooltip","permissionTooltipHelper","disabled","NewPathIcon","whiteSpace","label","breadcrumbsSecond","withStyles","listUploadIcons","uploadPath","_ref$forceDisable","forceDisable","uploadFileFunction","uploadFolderFunction","_ref$overrideStyles","anchorEl","setAnchorEl","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","undefined","event","currentTarget","UploadIcon","Menu","open","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","ListItemIcon","ListItemText","UploadFolderIcon","detailsList","borderColor","borderWidth","borderStyle","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","closePanel","right","top","_ref$className","ClosePanelIcon","months","value","days","Array","from","_","num","currentYear","Date","getFullYear","years","numYear","SelectStyled","root","input","borderBottom","fontSize","InputBase","DateSelector","forwardRef","ref","_ref$disableOptions","disableOptions","_ref$addSwitch","addSwitch","_ref$tooltip","_ref$borderBottom","onDateChange","_ref$value","useImperativeHandle","resetDate","dateEnabled","setDateEnabled","_useState3","_useState4","month","setMonth","_useState5","_useState6","day","setDay","_useState7","_useState8","year","setYear","useEffect","valueSplit","parseInt","_validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","dateString","validDate","_validDate2","isValid","isDateDisabled","clsx","fieldContainer","_defineProperty","fieldContainerBorder","labelContainer","container","InputLabel","htmlFor","inputLabel","tooltipContainer","title","placement","HelpIcon","FormSwitchWrapper","indicatorLabels","checked","name","onChange","e","target","switchOnly","FormControl","dateInput","Select","displayEmpty","option","dayNumber","fieldBasic","tooltipHelper","flex","display","alignItems","justifyContent","paddingBottom","marginBottom","formFieldStyles","modalStyleUtils","spacingUtils","dateSelector","paddingLeft","closeModalAndRefresh","objectInfo","statusEnabled","setStatusEnabled","type","setType","date","setDate","isDateValid","setIsDateValid","_useState9","_useState10","isSaving","setIsSaving","_useState11","_useState12","alreadyConfigured","setAlreadyConfigured","retention_mode","toLowerCase","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","resetForm","current","showSwitcher","ModalWrapper","spacerBottom","noValidate","autoComplete","onSubmit","preventDefault","formFieldRow","RadioGroupSelector","currentSelection","selectorOptions","modalButtonBar","selectedObject","versionId","version_id","expireDate","api","expires","mode","then","res","catch","error","setModalErrorSnackMessage","addRetention","disableRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","_ref$selectedVersion","selectedVersion","_useApi","useApi","err","setErrorSnackMessage","detailedError","_useApi2","deleteLoading","invokeDeleteApi","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","retentionConfig","canBypass","ConfirmDialog","confirmText","isOpen","titleIcon","ConfirmDeleteIcon","isLoading","onConfirm","recursive","decodeURLString","endsWith","confirmationContent","DialogContentText","Status","description","padding","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","titleItem","detailsPanel","metaData","_ref$linear","linear","metaKeys","Object","keys","element","renderItem","isArray","decodeURIComponent","Box","metadataLinear","Table","table","TableBody","TableRow","TableCell","component","scope","align","fontWeight","restProps","_objectWithoutProperties","_excluded","startIcon","items","titleLabel","objectActions","actionItem","ObjectActionButton","action","fileName","minHeight","fileNameText","overflow","textOverflow","strings","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","returnOnlyIcon","arguments","elementString","FileNonType","FolderBrowserIcon","lowercaseElement","_i","_extensionToIcon","_step","etc","_iterator","_createForOfIteratorHelper","s","n","done","ext","f","indexOf","FileMissingIcon","splitItem","IconWithLabel","newTileHeader","tagsForLabel","currentTagsContainer","noTagsForObject","deleteTag","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","currentItem","pop","tagsFor","plural","DisabledIcon","EditTagIcon","cleanObject","verID","SecureComponent","scopes","resource","flexFlow","tagKey","tag","errorProps","deleteIcon","onDelete","Chip","textTransform","size","CloseIcon","onDeleteTag","AddNewTagIcon","InputBoxWrapper","placeholder","trim","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","makeRequest","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","wrap","_context","prev","next","fetch","method","abrupt","sent","stop","_x","apply","performInspect","_ref3","_callee3","file","volume","urlOfInspectApi","_context3","_ref4","_callee2","resErr","blob","filename","decryptKey","_context2","ok","json","errorMessage","message","code","headers","getCookieValue","performDownload","_x2","InspectMenuIcon","deleteCookie","PasswordKeyIcon","KeyRevealer","containerForHeader","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","identityDownload","getTime","Math","random","ID","makeid","downloadCall","download","progress","updateProgress","instanceID","completeObject","msg","failObject","cancelObjectInList","storeCallForObjectWithID","setNewObject","percentage","prefix","waitingForFile","failed","cancelled","doDownload","modalFormScrollable","downloadObject","object","getClientOS","includes","setLongFileOpen","emptyFile","is_latest","last_modified","legal_hold_status","ObjectDetailsTitle","objectNameContainer","headerForSection","capitalizeFirst","actionsTray","textStyleUtils","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","_useState13","_useState14","allInfoElements","setAllInfoElements","_useState15","_useState16","objectToShare","setObjectToShare","_useState17","_useState18","versions","setVersions","_useState19","_useState20","setDeleteOpen","_useState21","_useState22","previewOpen","setPreviewOpen","_useState23","_useState24","totalVersionsSize","setTotalVersionsSize","_useState25","_useState26","longFileOpen","_useState27","_useState28","setMetaData","_useState29","_useState30","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","find","el","is_delete_marker","result","objects","tVersionSize","reduce","acc","currValue","resInfo","setLoadingObjectInfo","console","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","canSetTags","canChangeRetention","canInspect","canChangeVersioning","canGetObject","canDelete","multiActionButtons","DownloadIcon","ShareIcon","extensionPreview","PreviewIcon","LegalHoldIcon","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","content_type","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","ActionsListSection","DeleteIcon","iconLocation","fullWidth","ObjectInfoIcon","detailContainer","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","MetadataIcon","ObjectMetaData","modalBasic","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","log","restoreLocalObjectList","confirmButtonProps","wrapText","bgColor","mainFileVersionItem","intermediateLayer","borderBottomColor","versionContainer","buttonContainer","versionID","maxWidth","versionData","ctrItem","content","left","collapsableInfo","flexDirection","versionItem","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","DateTime","md","CheckboxWrapper","stopPropagation","overrideCheckboxStyles","noTopMargin","SpecificVersionPill","button","spacing","buttonDisabled","toFormat","setDeleteLoading","typeConfirm","setTypeConfirm","selectedVersions","selectedObjectsRequest","versionsContainer","noBottomBorder","versionsVirtualPanel","flexGrow","screenTitleContainer","bottom","sortByLabel","tableStyles","objectBrowserExtras","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","restoreVersion","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","b","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","RestoreFileVersion","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","LinearProgress","BrowserBreadcrumbs","ScreenTitle","listIcon","titleSpacer","subTitle","bucketDetails","detailsSpacer","actions","SelectMultipleIcon","DeleteNonCurrentIcon","SelectWrapper","options","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","browsePaper","parentWrapper","backgroundImage","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","loadingObjects","features","selFeatures","obOnly","records","searchObjects","selectedObjects","displayListObjects","sortASC","sortListObjects","payload","reverse","tableActions","idElement","newPath","setSelectedObjects","setObjectDetailsView","setIsOpeningOD","setSelectedObjectView","sendOnlyId","TableWrapper","itemActions","columns","entityName","idField","customPaperHeight","onSelect","targetD","elements","customEmptyMessage","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","sortBy","setLoadingObjects","onSelectAll","rowStyle","_payload$index","delete_flag","parentClassName","downloadSelected","createAsyncThunk","getState","itemsToDownload","filterFunction","rejectWithValue","setDownloadRenameModal","forEach","filteredItem","openPreview","fileObject","findFunction","setSelectedPreview","_x3","_x4","openShare","_ref6","_ref5","_x5","_x6","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","badgeOverlap","searchField","labelStyle","breadcrumbsContainer","fullContainer","hideListOnSmall","actionsSection","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","_downloadRenameModal$","location","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","isVersioned","lockingEnabled","downloadRenameModal","selectedPreview","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","pathSegment","pathname","pageTitle","currentPath","i","fileUpload","folderUpload","canDownload","canUpload","displayDeleteObject","resetRewind","setAttribute","quotaVals","setBucketDetailsLoad","setBucketInfo","setSelectedBucket","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","useCallback","folderPath","pathPrefix","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","encodedPath","filePath","fileWebkitRelativePath","relativeFolderPath","finalFolderPath","pathClean","startsWith","identity","xhr","XMLHttpRequest","setRequestHeader","areMultipleFiles","errorMessages","withCredentials","onload","removeTrace","response","JSON","detailedMessage","upload","addEventListener","floor","loaded","total","onerror","onloadend","onabort","formData","FormData","append","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","newFolderPath","_useDropzone","useDropzone","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","callActionButtonOverride","refresh","versioning","PageLayout","FilterObjectsSB","BucketsIcon","access","Badge","badgeContent","invisible","HistoryIcon","RefreshIcon","resetMessages","setLoadingRecords","multiple","UploadFilesButton","closeMenu","click","tableBlock","borderTop","VersionsNavigator","setShowDeletedObjects","overrideLabelClasses","overrideShowDeleted","ListObjectsTable","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","searchBar","setSearchVersions","AutoColorIcon","gap","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","IAM_PERMISSIONS","IAM_ROLES","SettingsIcon","middleComponent","currentRequestID","errorCounter","wsInFlight","initWSConnection","openCallback","onMessageCallback","URL","window","port","baseUrl","document","baseURI","wsProt","wsProtocol","protocol","WebSocket","hostname","onopen","onmessage","reconnectFn","onclose","warn","setTimeout","loadingVersioning","rewindDate","dateToRewind","allowResources","session","loadingLocking","loadRecords","isOpeningOD","isOpeningObjectDetail","onMessageCallBack","data","request_id","internalPathsPrefix","decodedPath","permitItems","permissionItems","setRecords","request_end","newMessage","initWSRequest","readyState","newRequestID","request","bucket_name","send","stringify","decodedIPaths","setLoadingVersioning","setSimplePathHandler","parentPath","requestDate","setIsVersioned","setLockingEnabled","object_locking_enabled","setLoadingLocking","OBHeader","ListObjects","dateInputContainer","durationInputs","validityIndicator","invalidDurationText","reverseInput","validityText","validTill","initialDate","maxDays","entity","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","hours","minutes","plus","calculateNewTime","formattedDate","valid","extraInputProps","paddingRight","min","max","noLabelMinWidth","LinkIcon","validityLabel","shareLinkInfo","copyShareLink","copyShareLinkInput","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","latestVersion","elem","slDate","currDate","diffDate","ceil","dateContainer","DaysSelector","newDate","PredefinedList","actionButton","setModalSnackMessage","iframeContainer","iframeBase","iframeHidden","_ref$isFullscreen","isFullscreen","loading","setLoading","basename","replace","origin","objectType","iframeLoaded","maxHeight","autoPlay","controls","muted","playsInline","onPlay","src","alt","onLoad","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","fileSize","overrideFileName","progressCallback","completeCallback","errorCallback","abortCallback","anchor","createElement","body","appendChild","store","req","evt","percentComplete","round","responseType","onreadystatechange","rspHeader","getResponseHeader","link","href","createObjectURL","removeChild","rspBody","fileExtension","fieldSort","localeCompare","permissionsArray","filteredPermissionsForBucket","permissionItem","returnElements","splitCurrentPath","permissionElement","splitURLARN","every","currentElementInPath","conditionOperator","prefixes","prefixItem","splitItems","pathToRouteElements","splitElement","WrappedComponent","fallback","props","Suspense","StyledSwitch","switchBase","transform","palette","common","white","boxShadow","thumb","track","transition","transitions","create","focusVisible","switchContainer","Switch","indicatorLabelOn","indicatorLabel","fieldDescription","_ref$label","_ref$checked","_ref$disabled","_ref$switchOnly","_ref$description","_ref$extraInputProps","switchComponent","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","Typography","inputStyles","inputFieldStyles","InputField","TextField","InputProps","textBoxContainer","overlayAction","_ref$type","_ref$autoComplete","_ref$multiline","multiline","_ref$index","_ref$error","_ref$required","required","_ref$placeholder","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","noMinWidthLabel","helperText","inputRebase","predefinedList","_ref$multiLine","multiLine","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","radioStyles","radioIcons","RadioButton","Radio","checkedIcon","radioSelectedIcon","radioUnselectedIcon","optionLabel","checkedOption","_ref$selectorOptions","_ref$displayInColumn","displayInColumn","RadioGroup","row","selectorOption","FormControlLabel","control","lineHeight","headerBarIcon","primary","main","headerBarSubheader","stContainer","titleColumn","leftItems","rightItems","shown","setShown","readOnly","navigator","clipboard","writeText","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/5522.72ab8875.chunk.js b/portal-ui/build/static/js/5522.72ab8875.chunk.js new file mode 100644 index 000000000..246188925 --- /dev/null +++ b/portal-ui/build/static/js/5522.72ab8875.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[5522],{94619:function(e,n,t){t.r(n);var i=t(29439),o=t(1413),a=t(72791),r=t(56028),s=t(61889),c=t(75952),l=t(21435),d=t(11135),u=t(25787),h=t(23814),m=t(81207),f=t(90673),p=t(87995),x=t(81551),b=t(80184);n.default=(0,u.Z)((function(e){return(0,d.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))((function(e){var n=e.modalOpen,t=e.onClose,o=e.classes,d=e.bucket,u=e.prefilledRoute,h=(0,x.TL)(),v=(0,a.useState)(""),j=(0,i.Z)(v,2),g=j[0],Z=j[1],S=(0,a.useState)("readonly"),_=(0,i.Z)(S,2),C=_[0],w=_[1];(0,a.useEffect)((function(){u&&Z(u)}),[u]);return(0,b.jsx)(r.Z,{modalOpen:n,title:"Add Anonymous Access Rule",onClose:t,titleIcon:(0,b.jsx)(c.sR0,{}),children:(0,b.jsxs)(s.ZP,{container:!0,children:[(0,b.jsx)(s.ZP,{item:!0,xs:12,className:o.formFieldRow,children:(0,b.jsx)(l.Z,{value:g,label:"Prefix",id:"prefix",name:"prefix",placeholder:"Enter Prefix",onChange:function(e){Z(e.target.value)},tooltip:"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy."})}),(0,b.jsx)(s.ZP,{item:!0,xs:12,children:(0,b.jsx)(f.Z,{id:"access",name:"Access",onChange:function(e){w(e.target.value)},label:"Access",value:C,options:[{label:"readonly",value:"readonly"},{label:"writeonly",value:"writeonly"},{label:"readwrite",value:"readwrite"}],disabled:!1})}),(0,b.jsxs)(s.ZP,{item:!0,xs:12,className:o.modalButtonBar,children:[(0,b.jsx)(c.zxk,{id:"clear",type:"button",variant:"regular",onClick:function(){Z(""),w("readonly")},label:"Clear"}),(0,b.jsx)(c.zxk,{id:"add-access-save",type:"submit",variant:"callAction",disabled:""===g.trim(),onClick:function(){m.Z.invoke("PUT","/api/v1/bucket/".concat(d,"/access-rules"),{prefix:g,access:C}).then((function(e){h((0,p.y1)("Access Rule added successfully")),t()})).catch((function(e){h((0,p.Ih)(e)),t()}))},label:"Save"})]})]})})}))},95522:function(e,n,t){t.r(n),t.d(n,{default:function(){return zn}});var i,o=t(1413),a=t(72791),r=t(78687),s=t(57689),c=t(11135),l=t(25787),d=t(81551),u=t(23814),h=t(29439),m=t(57831),f=t(75952),p=t(99779),x=t(61889),b=t(26181),v=t.n(b),j=t(81207),g=t(45248),Z=t(29472),S=t(93433),_=t(78029),C=t.n(_),w=t(72455),T=t(11087),y=t(13400),N=t(38442),E=t(56087),I=t(75578),F=t(87995),k=t(54756),O=t(80184),L=(0,I.Z)(a.lazy((function(){return t.e(2185).then(t.bind(t,62185))}))),P=(0,w.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},u.cx),{},{slashSpacingStyle:{margin:"0 5px"}}))})),B=function(e){var n=e.bucketName,t=e.internalPaths,i=e.hidePathButton,o=e.additionalOptions,c=(0,d.TL)(),l=(0,s.s0)(),u=P(),m=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),p=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),b=(0,r.v9)((function(e){return e.objectBrowser.versionedFile})),v=(0,r.v9)((function(e){return e.system.anonymousMode})),j=(0,r.v9)((function(e){return e.system.overrideStyles})),Z=(0,a.useState)(!1),_=(0,h.Z)(Z,2),w=_[0],I=_[1],B=(0,N.F)(n,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS])||v,A=t;""!==t&&(A="/".concat(t));var D=A.split("/").filter((function(e){return""!==e})),R=D.length-1,U=D.map((function(e,t){var i="".concat(D.slice(0,t+1).join("/"),"/"),o="/browser/".concat(n,"/").concat(i?"".concat((0,g.LL)(i)):"");return t===R&&e===b?null:(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)("span",{className:u.slashSpacingStyle,children:"/"}),t===R?(0,O.jsx)("span",{style:{cursor:"default"},children:e}):(0,O.jsx)(T.rU,{to:o,onClick:function(){c((0,k.db)({status:!1,objectName:""}))},children:e})]},"breadcrumbs-".concat(t.toString()))})),M=[];p&&(M=[(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)("span",{children:[(0,O.jsx)("span",{className:u.slashSpacingStyle,children:"/"}),b," - Versions"]})},"breadcrumbs-versionedItem")]);var z=[(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(T.rU,{to:"/browser/".concat(n),onClick:function(){c((0,k.db)({status:!1,objectName:""}))},children:n})},"breadcrumbs-root-path")].concat((0,S.Z)(U),(0,S.Z)(M)),G={};return j&&(G={backgroundColor:"transparent"}),(0,O.jsxs)(a.Fragment,{children:[(0,O.jsxs)("div",{className:u.breadcrumbsMain,children:[w&&(0,O.jsx)(L,{modalOpen:w,bucketName:n,folderName:t,onClose:function(){I(!1)}}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:"".concat(u.breadcrumbs),children:[(0,O.jsx)(y.Z,{onClick:function(){p?c((0,k.db)({status:!1,objectName:""})):l(-1)},sx:{border:"#EAEDEE 1px solid",backgroundColor:"#fff",borderLeft:0,borderRadius:0,width:38,height:38,marginRight:"10px"},children:(0,O.jsx)(f.ubh,{})}),(0,O.jsx)("div",{className:u.breadcrumbsList,dir:"rtl",children:z}),(0,O.jsx)(C(),{text:"".concat(n,"/").concat(D.join("/")),children:(0,O.jsx)(f.zxk,{id:"copy-path",icon:(0,O.jsx)(f.TIy,{style:{width:"12px",height:"12px",fill:"#969FA8",marginTop:-1}}),variant:"regular",onClick:function(){c((0,F.y1)("Path copied to clipboard"))},style:{width:"28px",height:"28px",color:"#969FA8",border:"#969FA8 1px solid",marginRight:5}})}),(0,O.jsx)("div",{className:u.additionalOptions,children:o})]}),!i&&(0,O.jsx)(f.ua7,{tooltip:B?"Choose or create a new path":(0,E.MK)([E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],"create a new path"),children:(0,O.jsx)(f.zxk,{id:"new-path",onClick:function(){I(!0)},disabled:!v&&(m||!B),icon:(0,O.jsx)(f.N$q,{style:{fill:"#969FA8"}}),style:{whiteSpace:"nowrap"},variant:"regular",label:"Create new path",sx:G})})]}),(0,O.jsx)("div",{className:u.breadcrumbsSecond,children:o})]})},A=t(47922),D=t(14917),R=t(74794),U=t(71715),M=t(77865),z=t(49900),G=t(57064),K=t(27454),W=(0,l.Z)((function(e){return(0,c.Z)({listUploadIcons:{height:20,"& .min-icon":{width:18,fill:"rgba(0,0,0,0.87)"}}})}))((function(e){var n=e.uploadPath,t=e.bucketName,i=e.forceDisable,o=void 0!==i&&i,s=e.uploadFileFunction,c=e.uploadFolderFunction,l=e.classes,d=e.overrideStyles,u=void 0===d?{}:d,m=(0,r.v9)((function(e){return e.system.anonymousMode})),p=(0,a.useState)(null),x=(0,h.Z)(p,2),b=x[0],v=x[1],j=Boolean(b),g=function(){v(null)},Z=(0,N.F)(n,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS])||m,S=(0,N.F)(t,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],!1,!0),_=Z||S;return(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(K.Z,{tooltip:_?"Upload Files":(0,E.MK)([E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],"upload files to this bucket"),children:(0,O.jsx)(f.zxk,{id:"upload-main","aria-controls":"upload-main-menu","aria-haspopup":"true","aria-expanded":j?"true":void 0,onClick:function(e){v(e.currentTarget)},label:"Upload",icon:(0,O.jsx)(f.rG2,{}),variant:"callAction",disabled:o||!_,sx:u})}),(0,O.jsxs)(U.Z,{id:"upload-main-menu","aria-labelledby":"upload-main",anchorEl:b,open:j,onClose:function(){g()},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:[(0,O.jsxs)(M.Z,{onClick:function(){s(g)},disabled:!Z||o,children:[(0,O.jsx)(G.Z,{className:l.listUploadIcons,children:(0,O.jsx)(f.rG2,{})}),(0,O.jsx)(z.Z,{children:"Upload File"})]}),(0,O.jsxs)(M.Z,{onClick:function(){c(g)},disabled:!S||o,children:[(0,O.jsx)(G.Z,{className:l.listUploadIcons,children:(0,O.jsx)(f.oXh,{})}),(0,O.jsx)(z.Z,{children:"Upload Folder"})]})]})]})})),H=(0,w.Z)((function(e){return(0,c.Z)({detailsList:{borderColor:"#EAEDEE",borderWidth:0,borderStyle:"solid",borderRadius:3,borderBottomLeftRadius:0,borderBottomRightRadius:0,width:0,transitionDuration:"0.3s",overflowX:"hidden",overflowY:"auto",position:"relative",opacity:0,marginLeft:-1,"&.open":{width:300,minWidth:300,borderLeftWidth:1,opacity:1},"@media (max-width: 799px)":{"&.open":{width:"100%",minWidth:"100%",borderLeftWidth:0}}},closePanel:{position:"absolute",right:0,top:8,"& .min-icon":{width:14}}})})),J=function(e){var n=e.open,t=e.closePanel,i=e.className,o=void 0===i?"":i,a=e.children,r=H();return(0,O.jsxs)(x.ZP,{item:!0,className:"".concat(r.detailsList," ").concat(n?"open":""," ").concat(o," detailsListPanel"),children:[(0,O.jsx)(y.Z,{onClick:t,className:r.closePanel,children:(0,O.jsx)(f.oto,{})}),a]})},V=t(64554),Y=t(34433),q=[{value:"01",label:"January"},{value:"02",label:"February"},{value:"03",label:"March"},{value:"04",label:"April"},{value:"05",label:"May"},{value:"06",label:"June"},{value:"07",label:"July"},{value:"08",label:"August"},{value:"09",label:"September"},{value:"10",label:"October"},{value:"11",label:"November"},{value:"12",label:"December"}],$=Array.from(Array(31),(function(e,n){return n+1})),X=(new Date).getFullYear(),Q=Array.from(Array(25),(function(e,n){return n+X})),ee=t(56028),ne=t(81159),te=t(83679),ie=t(4942),oe=t(28182),ae=t(30829),re=t(20068),se=t(68096),ce=t(58406),le=t(4834),de=(0,l.Z)((function(e){return(0,c.Z)({root:{"& .MuiSelect-icon":{color:"#000","&.Mui-disabled":{color:"#9c9c9c"}}},input:{borderBottom:0,fontSize:12}})}))(le.ZP),ue=(0,a.forwardRef)((function(e,n){var t=e.classes,i=e.id,o=e.label,r=e.disableOptions,s=void 0!==r&&r,c=e.addSwitch,l=void 0!==c&&c,d=e.tooltip,u=void 0===d?"":d,m=e.borderBottom,p=void 0!==m&&m,b=e.onDateChange,v=e.value,j=void 0===v?"":v;(0,a.useImperativeHandle)(n,(function(){return{resetDate:A}}));var g=(0,a.useState)(!1),Z=(0,h.Z)(g,2),S=Z[0],_=Z[1],C=(0,a.useState)(""),w=(0,h.Z)(C,2),T=w[0],y=w[1],N=(0,a.useState)(""),E=(0,h.Z)(N,2),I=E[0],F=E[1],k=(0,a.useState)(""),L=(0,h.Z)(k,2),P=L[0],B=L[1];(0,a.useEffect)((function(){if(""!==j){var e=j.split("-");B(e[0]),y(e[1]),F("".concat(parseInt(e[2])))}}),[j]),(0,a.useEffect)((function(){var e=function(e,n,t){var i=Date.parse("".concat(e,"-").concat(n,"-").concat(t));if(isNaN(i))return[!1,""];var o=parseInt(n),a=parseInt(t),r=o<10?"0".concat(o):o,s=a<10?"0".concat(a):a,c=new Date(i).toISOString().split("T")[0],l="".concat(e,"-").concat(r,"-").concat(s);return[c===l,l]}(P,T,I),n=(0,h.Z)(e,2),t=n[0],i=n[1];b(i,t)}),[T,I,P,b]);var A=function(){y(""),F(""),B("")},D=function(){return s||!!l&&!S};return(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:(0,oe.Z)(t.fieldContainer,(0,ie.Z)({},t.fieldContainerBorder,p)),children:[(0,O.jsx)("div",{className:t.labelContainer,children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(ae.Z,{htmlFor:i,className:t.inputLabel,children:[(0,O.jsx)("span",{children:o}),""!==u&&(0,O.jsx)("div",{className:t.tooltipContainer,children:(0,O.jsx)(re.Z,{title:u,placement:"top-start",children:(0,O.jsx)("div",{className:t.tooltip,children:(0,O.jsx)(f.byK,{})})})})]}),l&&(0,O.jsx)(ne.Z,{indicatorLabels:["Specific Date","Default (7 Days)"],checked:S,value:"date_enabled",id:"date-status",name:"date-status",onChange:function(e){_(e.target.checked),e.target.checked||b("",!0)},switchOnly:!0})]})}),(0,O.jsxs)("div",{children:[(0,O.jsx)(se.Z,{disabled:D(),className:t.dateInput,children:(0,O.jsxs)(ce.Z,{id:"".concat(i,"-month"),name:"".concat(i,"-month"),value:T,displayEmpty:!0,onChange:function(e){y(e.target.value)},input:(0,O.jsx)(de,{}),children:[(0,O.jsx)(M.Z,{value:"",disabled:!0,children:""}),q.map((function(e){return(0,O.jsx)(M.Z,{value:e.value,children:e.label},"select-".concat(i,"-monthOP-").concat(e.label))}))]})}),(0,O.jsx)(se.Z,{disabled:D(),className:t.dateInput,children:(0,O.jsxs)(ce.Z,{id:"".concat(i,"-day"),name:"".concat(i,"-day"),value:I,displayEmpty:!0,onChange:function(e){F(e.target.value)},input:(0,O.jsx)(de,{}),children:[(0,O.jsx)(M.Z,{value:"",disabled:!0,children:""}),$.map((function(e){return(0,O.jsx)(M.Z,{value:e,children:e},"select-".concat(i,"-dayOP-").concat(e))}))]})}),(0,O.jsx)(se.Z,{disabled:D(),className:t.dateInput,children:(0,O.jsxs)(ce.Z,{id:"".concat(i,"-year"),name:"".concat(i,"-year"),value:P,displayEmpty:!0,onChange:function(e){B(e.target.value)},input:(0,O.jsx)(de,{}),children:[(0,O.jsx)(M.Z,{value:"",disabled:!0,children:""}),Q.map((function(e){return(0,O.jsx)(M.Z,{value:e,children:e},"select-".concat(i,"-yearOP-").concat(e))}))]})})]})]})})),he=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({dateInput:{"&:not(:last-child)":{marginRight:22}}},u.YI),u.Hr),{},{labelContainer:{flex:1},fieldContainer:(0,o.Z)((0,o.Z)({},u.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),fieldContainerBorder:{borderBottom:"#9c9c9c 1px solid",marginBottom:20}}))}))(ue),me=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK),{},{dateSelector:{"& div":{borderBottom:0,marginBottom:0,"& div:nth-child(2)":{border:"1px solid #EAEAEA",paddingLeft:5,"& div":{border:0}}}}}))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,r=e.objectInfo,s=e.bucketName,c=(0,d.TL)(),l=(0,a.useState)(!0),u=(0,h.Z)(l,2),m=u[0],p=u[1],b=(0,a.useState)(""),v=(0,h.Z)(b,2),Z=v[0],S=v[1],_=(0,a.useState)(""),C=(0,h.Z)(_,2),w=C[0],T=C[1],y=(0,a.useState)(!1),N=(0,h.Z)(y,2),E=N[0],I=N[1],k=(0,a.useState)(!1),L=(0,h.Z)(k,2),P=L[0],B=L[1],A=(0,a.useState)(!1),D=(0,h.Z)(A,2),R=D[0],U=D[1];(0,a.useEffect)((function(){if(r.retention_mode&&(S(r.retention_mode.toLowerCase()),U(!0)),r.retention_until_date){var e=new Date(r.retention_until_date);if("Invalid Date"!==e.toString()){var n=e.getFullYear(),t=(o=e.getMonth()+1)<10?"0".concat(o):"".concat(o),i=e.getDate();isNaN(i)||"NaN"===t||isNaN(n)||T("".concat(n,"-").concat(t,"-").concat(i))}U(!0)}var o}),[r]);var M=(0,a.useRef)(null),z=function(){p(!1),S(""),M.current&&M.current.resetDate()},G=R&&("governance"===Z||""===Z);return(0,O.jsxs)(ee.Z,{title:"Set Retention Policy",modalOpen:t,onClose:function(){z(),i(!1)},children:[(0,O.jsxs)("div",{className:n.spacerBottom,children:[(0,O.jsx)("strong",{children:"Selected Object"}),": ",o]}),(0,O.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:[G&&(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,O.jsx)(ne.Z,{value:"status",id:"status",name:"status",checked:m,onChange:function(e){p(!m)},label:"Status",indicatorLabels:["Enabled","Disabled"]})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,O.jsx)(te.Z,{currentSelection:Z,id:"type",name:"type",label:"Type",disableOptions:!m||R&&""!==Z,onChange:function(e){S(e.target.value)},selectorOptions:[{label:"Governance",value:"governance"},{label:"Compliance",value:"compliance"}]})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:"".concat(n.dateSelector," "),children:(0,O.jsx)(he,{id:"date",label:"Date",disableOptions:!(m&&("governance"===Z||"compliance"===Z)),ref:M,value:w,borderBottom:!0,onDateChange:function(e,n){I(n),n&&T(e)}})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"reset",type:"button",variant:"regular",onClick:z,label:"Reset"}),(0,O.jsx)(f.zxk,{id:"save",type:"submit",variant:"callAction",disabled:m&&""===Z||m&&!E||P,onClick:function(){B(!0);var e=r.name,n=r.version_id,t=m||"governance"!==Z?"".concat(w,"T23:59:59Z"):"";m||"governance"!==Z?function(e,n,t){j.Z.invoke("PUT","/api/v1/buckets/".concat(s,"/objects/retention?prefix=").concat((0,g.LL)(e),"&version_id=").concat(n),{expires:t,mode:Z}).then((function(e){B(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),B(!1)}))}(e,n,t):function(e,n){j.Z.invoke("DELETE","/api/v1/buckets/".concat(s,"/objects/retention?prefix=").concat((0,g.LL)(e),"&version_id=").concat(n)).then((function(){B(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),B(!1)}))}(e,n)},label:"Save"})]})]})]})})),fe=t(51691),pe=t(23508),xe=t(9505),be=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=e.versioningInfo,c=e.selectedVersion,l=void 0===c?"":c,u=(0,d.TL)(),m=(0,xe.Z)((function(){return n(!0)}),(function(e){u((0,F.Ih)(e)),"Access Denied."===e.detailedError&&n(!0)})),p=(0,h.Z)(m,2),x=p[0],b=p[1],v=(0,a.useState)(!1),j=(0,h.Z)(v,2),Z=j[0],S=j[1],_=(0,a.useState)(!1),C=(0,h.Z)(_,2),w=C[0],T=C[1],y=(0,r.v9)((function(e){return e.objectBrowser.retentionConfig})),I=(0,N.F)([i],[E.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===y||void 0===y?void 0:y.mode);if(!o)return null;var k;return(0,O.jsx)(pe.Z,{title:"Delete Object",confirmText:"Delete",isOpen:t,titleIcon:(0,O.jsx)(f.NvT,{}),isLoading:x,onConfirm:function(){var e=(0,g.IO)(o).endsWith("/");b("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o).concat(""!==l?"&version_id=".concat(l):"&recursive=".concat(e,"&all_versions=").concat(Z)).concat(w?"&bypass=true":""))},onClose:function(){return n(!1)},confirmationContent:(0,O.jsxs)(fe.Z,{sx:{width:"430px"},children:["Are you sure you want to delete: ",(0,O.jsx)("br",{}),(0,O.jsx)("b",{children:(0,g.IO)(o)})," ",""!==l?(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)("br",{}),(0,O.jsx)("br",{}),"Version ID:",(0,O.jsx)("br",{}),(0,O.jsx)("strong",{children:l})]}):"","? ",(0,O.jsx)("br",{}),(0,O.jsx)("br",{}),(k=null===s||void 0===s?void 0:s.Status,("Enabled"===k||"Suspended"===k)&&""===l&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(ne.Z,{label:"Delete All Versions",indicatorLabels:["Yes","No"],checked:Z,value:"delete_versions",id:"delete-versions",name:"delete-versions",onChange:function(e){S(!Z)},description:""})})),I&&(Z||""!==l)&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)("div",{style:{marginTop:10},children:(0,O.jsx)(ne.Z,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:w,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){T(!w)},description:""})})}),Z&&(0,O.jsxs)(a.Fragment,{children:[(0,O.jsxs)("div",{style:{marginTop:10,border:"#c83b51 1px solid",borderRadius:3,padding:5,backgroundColor:"#c83b5120",color:"#c83b51"},children:["This will remove the object as well as all of its versions,"," ",(0,O.jsx)("br",{}),"This action is irreversible."]}),(0,O.jsx)("br",{}),"Are you sure you want to continue?"]})]})})},ve=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.open,i=e.closeModalAndRefresh,o=e.objectName,r=e.bucketName,s=e.actualInfo,c=(0,d.TL)(),l=(0,a.useState)(!1),u=(0,h.Z)(l,2),m=u[0],p=u[1],b=(0,a.useState)(!1),Z=(0,h.Z)(b,2),S=Z[0],_=Z[1],C=s.version_id;(0,a.useEffect)((function(){var e=v()(s,"legal_hold_status","OFF");p("ON"===e)}),[s]);var w=function(){p(!1)};return(0,O.jsxs)(ee.Z,{title:"Set Legal Hold",modalOpen:t,onClose:function(){w(),i(!1)},children:[(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.spacerBottom,children:["Object: ",r]}),(0,O.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault(),_(!0),j.Z.invoke("PUT","/api/v1/buckets/".concat(r,"/objects/legalhold?prefix=").concat((0,g.LL)(o),"&version_id=").concat(C),{status:m?"enabled":"disabled"}).then((function(){_(!1),i(!0)})).catch((function(e){c((0,F.zb)(e)),_(!1)}))}(e)},children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.formFieldRow,children:(0,O.jsx)(ne.Z,{value:"legalhold",id:"legalhold",name:"legalhold",checked:m,onChange:function(e){p(!m)},label:"Legal Hold Status",indicatorLabels:["Enabled","Disabled"],tooltip:"To enable this feature you need to enable versioning on the bucket before creation"})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"clear",type:"button",variant:"regular",onClick:w,label:"Clear"}),(0,O.jsx)(f.zxk,{id:"save",type:"submit",variant:"callAction",disabled:S,label:" Save"})]})]})]})})),je=t(78562),ge=t(79836),Ze=t(53382),Se=t(35855),_e=t(53994),Ce=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({titleItem:{width:"35%"}},u.bK),u.$b))}))((function(e){var n=e.metaData,t=e.classes,i=e.linear,o=void 0!==i&&i,r=Object.keys(n);return o?(0,O.jsx)(a.Fragment,{children:r.map((function(e,i){var o=Array.isArray(n[e])?n[e].map(decodeURIComponent).join(", "):decodeURIComponent(n[e]);return(0,O.jsxs)(V.Z,{className:t.metadataLinear,children:[(0,O.jsx)("strong",{children:e}),(0,O.jsx)("br",{}),o]},"box-meta-".concat(e,"-").concat(i.toString()))}))}):(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,sx:{marginTop:"25px",marginBottom:"5px"},children:(0,O.jsx)("h3",{style:{marginTop:"0",marginBottom:"0"},children:"Object Metadata"})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",children:(0,O.jsx)(Ze.Z,{children:r.map((function(e,i){var o=Array.isArray(n[e])?n[e].map(decodeURIComponent).join(", "):decodeURIComponent(n[e]);return(0,O.jsxs)(Se.Z,{children:[(0,O.jsx)(_e.Z,{component:"th",scope:"row",className:t.titleItem,children:e}),(0,O.jsx)(_e.Z,{align:"right",children:o})]},"tRow-".concat(i.toString()))}))})})})]})})),we=t(45987),Te=t(36151),ye=["disabled","onClick","icon","label","classes"],Ne=(0,l.Z)((function(e){return(0,c.Z)({root:{padding:"0 15px",height:22,margin:0,color:"#5E5E5E",fontWeight:"normal",fontSize:14,whiteSpace:"nowrap",width:"100%",justifyContent:"flex-start","&:hover":{backgroundColor:"transparent",color:"#000"},"& .min-icon":{width:11},"&:disabled":{color:"#EBEBEB",borderColor:"#EBEBEB"}}})}))((function(e){var n=e.disabled,t=e.onClick,i=e.icon,a=e.label,r=e.classes,s=(0,we.Z)(e,ye);return(0,O.jsx)(Te.Z,(0,o.Z)((0,o.Z)({},s),{},{disabled:n,onClick:t,className:(0,oe.Z)(r.root,"noDefaultHeight"),startIcon:i,sx:{height:"initial"},children:(0,O.jsx)("span",{className:"buttonItem",children:a})}))})),Ee=(0,l.Z)((function(){return(0,c.Z)((0,o.Z)({},u.$b))}))((function(e){var n=e.items,t=e.classes,i=e.title;return(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)("div",{className:t.titleLabel,children:i}),(0,O.jsxs)("ul",{className:t.objectActions,children:[(0,O.jsx)("li",{children:"Actions:"}),n.map((function(e,n){return(0,O.jsx)("li",{children:(0,O.jsx)(K.Z,{tooltip:e.tooltip||"",children:(0,O.jsx)(Ne,{label:e.label,icon:e.icon,onClick:e.action,disabled:e.disabled})})},"action-element-".concat(n.toString()))}))]})]})})),Ie=t(37762),Fe=(0,l.Z)((function(e){return(0,c.Z)({fileName:{display:"flex",alignItems:"center","& .min-icon":{width:16,height:16,marginRight:4,minWidth:16,minHeight:16}},fileNameText:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}})}))((function(e){var n=e.classes,t=e.icon,i=e.strings;return(0,O.jsxs)("div",{className:n.fileName,children:[t,(0,O.jsx)("span",{className:n.fileNameText,children:i[i.length-1]})]})})),ke=[{icon:(0,O.jsx)(f.n9O,{}),extensions:["mp4","mov","avi","mpeg","mpg"]},{icon:(0,O.jsx)(f.mYf,{}),extensions:["mp3","m4a","aac"]},{icon:(0,O.jsx)(f.UU9,{}),extensions:["pdf"]},{icon:(0,O.jsx)(f.hjP,{}),extensions:["ppt","pptx"]},{icon:(0,O.jsx)(f.hz9,{}),extensions:["xls","xlsx"]},{icon:(0,O.jsx)(f.xDw,{}),extensions:["cer","crt","pem"]},{icon:(0,O.jsx)(f.jG9,{}),extensions:["html","xml","css","py","go","php","cpp","h","java"]},{icon:(0,O.jsx)(f.NqG,{}),extensions:["cfg","yaml"]},{icon:(0,O.jsx)(f.OkY,{}),extensions:["sql"]},{icon:(0,O.jsx)(f.ZAy,{}),extensions:["ttf","otf"]},{icon:(0,O.jsx)(f.p2x,{}),extensions:["doc","docx","txt","rtf"]},{icon:(0,O.jsx)(f.xhr,{}),extensions:["zip","rar","tar","gz"]},{icon:(0,O.jsx)(f.rtI,{}),extensions:["epub","mobi","azw","azw3"]},{icon:(0,O.jsx)(f.q$4,{}),extensions:["jpeg","jpg","gif","tiff","png","heic","dng"]}],Oe=function(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=e,i=(0,O.jsx)(f.MoH,{});e.endsWith("/")&&(i=(0,O.jsx)(f.BI,{}),t=e.slice(0,-1));for(var o=e.toLowerCase(),a=0,r=ke;a svg":{marginRight:10}},tagsForLabel:{fontSize:16,margin:"20px 0 30px",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",width:"100%"},currentTagsContainer:{fontSize:14,fontWeight:"normal"},noTagsForObject:{color:"#858585"},deleteTag:{color:"#C83B51",marginLeft:5}},u.DF),u.ID),u.bK))}))((function(e){var n=e.modalOpen,t=e.onCloseAndUpdate,i=e.bucketName,s=e.actualInfo,c=e.classes,l=(0,d.TL)(),u=(0,r.v9)(F.N5),m=(0,a.useState)(""),p=(0,h.Z)(m,2),b=p[0],Z=p[1],S=(0,a.useState)(""),_=(0,h.Z)(S,2),C=_[0],w=_[1],T=(0,a.useState)(!1),y=(0,h.Z)(T,2),I=y[0],k=y[1],L=(0,a.useState)(!1),P=(0,h.Z)(L,2),B=P[0],A=P[1],D=(0,a.useState)(""),R=(0,h.Z)(D,2),U=R[0],M=R[1],z=(0,a.useState)(""),G=(0,h.Z)(z,2),K=G[0],W=G[1],H=(0,g.LL)(s.name),J=s.tags,Y=Object.keys(J||{}),q=s.name.split("/").pop()||"",$=function(e){return(0,O.jsxs)("div",{className:c.tagsForLabel,children:["Tag",e?"s":""," for: ",(0,O.jsx)("strong",{children:q})]})};return(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(ee.Z,{modalOpen:n,title:B?(0,O.jsx)("span",{style:{color:"#C83B51"},children:"Delete Tag"}):"Edit Tags",onClose:function(){t(!0)},titleIcon:B?(0,O.jsx)(f.dRf,{style:{fill:"#C83B51"}}):(0,O.jsx)(f.T0F,{}),children:B?(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)(x.ZP,{container:!0,children:[$(!1),"Are you sure you want to delete the tag"," ",(0,O.jsxs)("b",{className:c.deleteTag,children:[U," : ",K]})," ","?",(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"cancel",type:"button",variant:"regular",onClick:function(){M(""),W(""),A(!1)},label:"Cancel"}),(0,O.jsx)(f.zxk,{type:"submit",variant:"secondary",onClick:function(){var e=(0,o.Z)({},J);delete e[U];var n=u?s.version_id:"null";j.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/objects/tags?prefix=").concat(H,"&version_id=").concat(n),{tags:e}).then((function(e){t(!0),k(!1)})).catch((function(e){l((0,F.zb)(e)),k(!1)}))},id:"deleteTag",label:"Delete Tag"})]})]})}):(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsx)(N.s,{scopes:[E.Ft.S3_GET_OBJECT_TAGGING,E.Ft.S3_GET_ACTIONS],resource:i,children:(0,O.jsxs)(V.Z,{sx:{display:"flex",flexFlow:"column",width:"100%"},children:[$(!0),(0,O.jsxs)("div",{className:c.currentTagsContainer,children:["Current Tags:",(0,O.jsx)("br",{}),0===Y.length?(0,O.jsx)("span",{className:c.noTagsForObject,children:"There are no tags for this object"}):(0,O.jsx)(a.Fragment,{}),(0,O.jsx)(V.Z,{sx:{marginTop:"5px",marginBottom:"15px"},children:Y.map((function(e,n){var t=v()(J,"".concat(e),"");return""!==t?(0,O.jsx)(N.s,{scopes:[E.Ft.S3_DELETE_OBJECT_TAGGING],resource:i,errorProps:{deleteIcon:null,onDelete:null},children:(0,O.jsx)(Pe.Z,{style:{textTransform:"none",marginRight:"5px",marginBottom:"5px"},size:"small",label:"".concat(e," : ").concat(t),color:"primary",deleteIcon:(0,O.jsx)(Be.Z,{}),onDelete:function(){!function(e,n){M(e),W(n),A(!0)}(e,t)}})},"chip-".concat(n)):null}))})]})]})}),(0,O.jsx)(N.s,{scopes:[E.Ft.S3_PUT_OBJECT_TAGGING,E.Ft.S3_PUT_ACTIONS],resource:i,errorProps:{disabled:!0,onClick:null},children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.newTileHeader,children:[(0,O.jsx)(f.OCT,{})," Add New Tag"]}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(Le.Z,{value:b,label:"Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter Tag Key",onChange:function(e){Z(e.target.value)}})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(Le.Z,{value:C,label:"Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter Tag Label",onChange:function(e){w(e.target.value)}})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:[(0,O.jsx)(f.zxk,{id:"clear",type:"button",variant:"regular",color:"primary",onClick:function(){w(""),Z("")},label:"Clear"}),(0,O.jsx)(f.zxk,{type:"submit",variant:"callAction",disabled:""===C.trim()||""===b.trim()||I,onClick:function(){k(!0);var e={};e[b]=C;var n=(0,o.Z)((0,o.Z)({},J),e),a=u?s.version_id:"null";j.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/objects/tags?prefix=").concat(H,"&version_id=").concat(a),{tags:n}).then((function(e){t(!0),k(!1)})).catch((function(e){l((0,F.zb)(e)),k(!1)}))},id:"saveTag",label:"Save"})]})]})})]})})})})),De=t(74165),Re=t(15861),Ue=t(73669),Me=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.DF),u.ID),u.bK))}))((function(e){var n=e.classes,t=e.closeInspectModalAndRefresh,i=e.inspectOpen,o=e.inspectPath,r=e.volumeName,s=(0,d.TL)(),c=function(){return t(!1)},l=(0,a.useState)(!0),u=(0,h.Z)(l,2),m=u[0],p=u[1],b=(0,a.useState)(""),v=(0,h.Z)(b,2),j=v[0],Z=v[1],S=(0,a.useState)(""),_=(0,h.Z)(S,2),C=_[0],w=_[1];if(!o)return null;var T=function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(n){return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(n,{method:"GET"});case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}(),y=function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(){var n,t,i;return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=(0,g.LL)(o+"/xl.meta"),t=(0,g.LL)(r),i="/api/v1/admin/inspect?volume=".concat(t,"&file=").concat(n,"&encrypt=").concat(m),T(i).then(function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(n){var t,i,o,a;return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.ok){e.next=5;break}return e.next=3,n.json();case 3:t=e.sent,s((0,F.Ih)({errorMessage:t.message,detailedError:t.code}));case 5:return e.next=7,n.blob();case 7:if(i=e.sent,o=n.headers.get("content-disposition").split('"')[1],a=(0,g.Do)(o)||"",(0,g.zZ)(i,o),w(o),""!==a){e.next=15;break}return c(),e.abrupt("return");case 15:Z(a);case 16:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()).catch((function(e){s((0,F.Ih)(e))}));case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();return(0,O.jsxs)(a.Fragment,{children:[!j&&(0,O.jsx)(ee.Z,{modalOpen:i,titleIcon:(0,O.jsx)(f.Gp8,{}),title:"Inspect Object",onClose:c,children:(0,O.jsxs)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault()}(e)},children:["Would you like to encrypt ",(0,O.jsx)("b",{children:(0,g.IO)(o)}),"?"," ",(0,O.jsx)("br",{}),(0,O.jsx)(ne.Z,{label:"Encrypt",indicatorLabels:["Yes","No"],checked:m,value:"encrypt",id:"encrypt",name:"encrypt",onChange:function(e){p(!m)},description:""}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.modalButtonBar,children:(0,O.jsx)(f.zxk,{id:"inspect",type:"submit",variant:"callAction",color:"primary",onClick:y,label:"Inspect"})})]})}),j?(0,O.jsx)(ee.Z,{modalOpen:i,title:"Inspect Decryption Key",onClose:function(){(0,g.kT)(C),c(),Z("")},titleIcon:(0,O.jsx)(f.tvm,{}),children:(0,O.jsxs)(fe.Z,{children:[(0,O.jsxs)(V.Z,{children:["This will be displayed only once. It cannot be recovered.",(0,O.jsx)("br",{}),"Use secure medium to share this key."]}),(0,O.jsx)(V.Z,{children:(0,O.jsx)(Ue.Z,{value:j})})]})}):null]})})),ze=t(76610),Ge=(0,w.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},u.ID),u.DF),u.bK),u.Bz))})),Ke=function(e){var n=e.open,t=e.closeModal,i=e.currentItem,o=e.internalPaths,r=e.actualInfo,s=e.bucketName,c=Ge(),l=(0,d.TL)(),u=(0,a.useState)(i),m=(0,h.Z)(u,2),p=m[0],b=m[1],v=(0,a.useState)(!1),j=(0,h.Z)(v,2),Z=j[0],S=j[1];return(0,O.jsxs)(ee.Z,{title:"Rename Download",modalOpen:n,onClose:t,titleIcon:(0,O.jsx)(f.dY8,{}),children:[(0,O.jsxs)("div",{children:["The file you are trying to download has a long name.",(0,O.jsx)("br",{}),"This can cause issues on Windows Systems by trimming the file name after download.",(0,O.jsx)("br",{}),(0,O.jsx)("br",{})," We recommend to rename the file download"]}),(0,O.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){!function(e){e.preventDefault();var n=(0,g.LL)("".concat(s,"-").concat(r.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ze.YO)(8),a=(0,A.LR)(s,o,r.version_id,parseInt(r.size||"0"),p,i,(function(e){l((0,k.RO)({instanceID:n,progress:e}))}),(function(){l((0,k.oK)(n))}),(function(e){l((0,k.qJ)({instanceID:n,msg:e}))}),(function(){l((0,k.Im)(n))}));(0,ze.EN)(i,a),l((0,k.Mc)({ID:i,bucketName:s,done:!1,instanceID:n,percentage:0,prefix:p,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""})),t()}(e)},children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:c.modalFormScrollable,children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(Le.Z,{id:"download-filename",name:"download-filename",onChange:function(e){b(e.target.value)},label:"",type:"text",value:p,error:p.length>200&&!Z?"Filename should be less than 200 characters long.":""})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.formFieldRow,children:(0,O.jsx)(ne.Z,{value:"acceptLongName",id:"acceptLongName",name:"acceptLongName",checked:Z,onChange:function(e){S(e.target.checked),e.target.checked&&b(i)},label:"Use Original Name"})})]}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:c.modalButtonBar,children:(0,O.jsx)(f.zxk,{id:"download-file",type:"submit",variant:"callAction",color:"primary",disabled:p.length>200&&!Z,label:"Download File"})})]})})]})},We=function(e,n,t,i){var o=(0,g.LL)("".concat(n,"-").concat(i.name,"-").concat((new Date).getTime(),"-").concat(Math.random()));if(i.name.length>200&&(0,g.mv)().toLowerCase().includes("win"))e((0,k.Hg)(!0));else{var a=(0,ze.YO)(8),r=(0,A.LR)(n,t,i.version_id,parseInt(i.size||"0"),null,a,(function(n){e((0,k.RO)({instanceID:o,progress:n}))}),(function(){e((0,k.oK)(o))}),(function(n){e((0,k.qJ)({instanceID:o,msg:n}))}),(function(){e((0,k.Im)(o))}));(0,ze.EN)(a,r),e((0,k.Mc)({ID:a,bucketName:n,done:!1,instanceID:o,percentage:0,prefix:i.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}},He={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},Je=(0,l.Z)((function(){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({ObjectDetailsTitle:{display:"flex",alignItems:"center","& .min-icon":{width:26,height:26,minWidth:26,minHeight:26}},objectNameContainer:{whiteSpace:"nowrap",textOverflow:"ellipsis",overflow:"hidden",alignItems:"center",marginLeft:10},headerForSection:{display:"flex",justifyContent:"space-between",alignItems:"center",paddingBottom:15,borderBottom:"#E2E2E2 2px solid",fontWeight:"bold",fontSize:18,color:"#000",margin:"20px 22px"},capitalizeFirst:{textTransform:"capitalize"}},u.OR),u.bK),u.VI),u.$b))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,s=e.versioningInfo,c=e.locking,l=e.onClosePanel,u=(0,d.TL)(),m=(0,r.v9)(F.N5),p=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),b=(0,r.v9)((function(e){return e.objectBrowser.selectedVersion})),Z=(0,r.v9)((function(e){return e.objectBrowser.loadingObjectInfo})),S=(0,r.v9)((function(e){return e.system.overrideStyles})),_=(0,a.useState)(!1),C=(0,h.Z)(_,2),w=C[0],T=C[1],y=(0,a.useState)(!1),I=(0,h.Z)(y,2),L=I[0],P=I[1],B=(0,a.useState)(!1),D=(0,h.Z)(B,2),R=D[0],U=D[1],M=(0,a.useState)(!1),z=(0,h.Z)(M,2),G=z[0],W=z[1],H=(0,a.useState)(!1),J=(0,h.Z)(H,2),q=J[0],$=J[1],X=(0,a.useState)(null),Q=(0,h.Z)(X,2),ee=Q[0],ne=Q[1],te=(0,a.useState)([]),ie=(0,h.Z)(te,2),oe=ie[0],ae=ie[1],re=(0,a.useState)(null),se=(0,h.Z)(re,2),ce=se[0],le=se[1],de=(0,a.useState)([]),ue=(0,h.Z)(de,2),he=ue[0],fe=ue[1],pe=(0,a.useState)(!1),xe=(0,h.Z)(pe,2),ge=xe[0],Ze=xe[1],Se=(0,a.useState)(!1),_e=(0,h.Z)(Se,2),we=_e[0],Te=_e[1],ye=(0,a.useState)(0),Ne=(0,h.Z)(ye,2),Ie=Ne[0],Fe=Ne[1],ke=(0,a.useState)(!1),Le=(0,h.Z)(ke,2),Pe=Le[0],Be=Le[1],De=(0,a.useState)(null),Re=(0,h.Z)(De,2),Ue=Re[0],ze=Re[1],Ge=(0,a.useState)(!1),Je=(0,h.Z)(Ge,2),Ve=Je[0],Ye=Je[1],qe=((0,g.IO)(t)||"").split("/").pop()||"",$e=[];ee&&($e=ee.name.split("/")),(0,a.useEffect)((function(){if(m&&oe&&oe.length>=1){var e=oe.find((function(e){return e.is_latest}))||He;""!==b&&(e=oe.find((function(e){return e.version_id===b}))||He),e.is_delete_marker||Ye(!0),ne(e)}}),[b,m,oe]),(0,a.useEffect)((function(){Z&&""!==t&&j.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(m?"&with_versions=true":"")).then((function(e){var n=e.objects||[];if(m){ae(n),fe(n);var t=n.reduce((function(e,n){return null!==n&&void 0!==n&&n.size?e+parseInt(n.size):e}),0);Fe(t)}else{var i=n[0];ne(i),fe([]),i.is_delete_marker||Ye(!0)}u((0,k.vH)(!1))})).catch((function(e){console.error("Error loading object details",e),u((0,k.vH)(!1))}))}),[Z,i,t,u,m,b]),(0,a.useEffect)((function(){Ve&&""!==t&&j.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects/metadata?prefix=").concat(t)).then((function(e){var n=v()(e,"objectMetadata",{});ze(n),Ye(!1)})).catch((function(e){console.error("Error Getting Metadata Status: ",e.detailedError),Ye(!1)}))}),[i,t,Ve]);var Xe=[];ee&&ee.tags&&(Xe=Object.keys(ee.tags));var Qe=(0,O.jsx)("div",{style:{textAlign:"center",marginTop:35},children:(0,O.jsx)(f.aNw,{})});if(!ee)return Z?Qe:null;var en=$e.length>0?$e[$e.length-1]:ee.name,nn=[i,qe,[i,ee.name].join("/")],tn=(0,N.F)(i,[E.Ft.S3_PUT_OBJECT_LEGAL_HOLD,E.Ft.S3_PUT_ACTIONS]),on=(0,N.F)(nn,[E.Ft.S3_PUT_OBJECT_TAGGING,E.Ft.S3_PUT_ACTIONS]),an=(0,N.F)(nn,[E.Ft.S3_GET_OBJECT_RETENTION,E.Ft.S3_PUT_OBJECT_RETENTION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],!0),rn=(0,N.F)(nn,[E.Ft.ADMIN_INSPECT_DATA]),sn=(0,N.F)(nn,[E.Ft.S3_GET_BUCKET_VERSIONING,E.Ft.S3_PUT_BUCKET_VERSIONING,E.Ft.S3_GET_OBJECT_VERSION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS]),cn=(0,N.F)(nn,[E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS]),ln=(0,N.F)([i,qe,[i,ee.name].join("/")],[E.Ft.S3_DELETE_OBJECT]),dn=[{action:function(){We(u,i,t,ee)},label:"Download",disabled:!!ee.is_delete_marker||!cn,icon:(0,O.jsx)(f._8t,{}),tooltip:cn?"Download this Object":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"download this object")},{action:function(){T(!0)},label:"Share",disabled:!!ee.is_delete_marker||!cn,icon:(0,O.jsx)(f.aAc,{}),tooltip:cn?"Share this File":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"share this object")},{action:function(){Te(!0)},label:"Preview",disabled:!!ee.is_delete_marker||"none"===(0,A.Bg)(qe)||!cn,icon:(0,O.jsx)(f.P99,{}),tooltip:cn?"Preview this File":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"preview this object")},{action:function(){W(!0)},label:"Legal Hold",disabled:!c||!m||!!ee.is_delete_marker||!tn||""!==b,icon:(0,O.jsx)(f.fNL,{}),tooltip:tn?c?"Change Legal Hold rules for this File":"Object Locking must be enabled on this bucket in order to set Legal Hold":(0,E.MK)([E.Ft.S3_PUT_OBJECT_LEGAL_HOLD,E.Ft.S3_PUT_ACTIONS],"change legal hold settings for this object")},{action:function(){P(!0)},label:"Retention",disabled:!m||!!ee.is_delete_marker||!an||""!==b||!c,icon:(0,O.jsx)(f.E9d,{}),tooltip:an?c?"Change Retention rules for this File":"Object Locking must be enabled on this bucket in order to set Retention Rules":(0,E.MK)([E.Ft.S3_GET_OBJECT_RETENTION,E.Ft.S3_PUT_OBJECT_RETENTION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],"change Retention Rules for this object")},{action:function(){U(!0)},label:"Tags",disabled:!!ee.is_delete_marker||""!==b||!on,icon:(0,O.jsx)(f.DgT,{}),tooltip:on?"Change Tags for this File":(0,E.MK)([E.Ft.S3_PUT_OBJECT_TAGGING,E.Ft.S3_GET_OBJECT_TAGGING,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],"set Tags on this object")},{action:function(){$(!0)},label:"Inspect",disabled:!m||!!ee.is_delete_marker||""!==b||!rn,icon:(0,O.jsx)(f.Gp8,{}),tooltip:rn?"Inspect this file":(0,E.MK)([E.Ft.ADMIN_INSPECT_DATA],"inspect this file")},{action:function(){u((0,k.db)({status:!p,objectName:en}))},label:p?"Hide Object Versions":"Display Object Versions",icon:(0,O.jsx)(f.cRd,{}),disabled:!m||!(ee.version_id&&"null"!==ee.version_id)||!sn,tooltip:sn?ee.version_id&&"null"!==ee.version_id?"Display Versions for this file":"":(0,E.MK)([E.Ft.S3_GET_BUCKET_VERSIONING,E.Ft.S3_PUT_BUCKET_VERSIONING,E.Ft.S3_GET_OBJECT_VERSION,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS],"display all versions of this object")}],un={};return S&&(un={backgroundColor:"transparent"}),(0,O.jsxs)(a.Fragment,{children:[w&&ee&&(0,O.jsx)(Y.default,{open:w,closeModalAndRefresh:function(){le(null),T(!1)},bucketName:i,dataObject:ce||ee}),L&&ee&&(0,O.jsx)(me,{open:L,closeModalAndRefresh:function(e){P(!1),e&&u((0,k.vH)(!0))},objectName:qe,objectInfo:ee,bucketName:i}),ge&&(0,O.jsx)(be,{deleteOpen:ge,selectedBucket:i,selectedObject:t,closeDeleteModalAndRefresh:function(e){Ze(!1),e&&""===b?l(!0):(u((0,k.Eq)(!0)),u((0,k.M3)("")),u((0,k.vH)(!0)))},versioningInfo:m?s:void 0,selectedVersion:b}),G&&ee&&(0,O.jsx)(ve,{open:G,closeModalAndRefresh:function(e){W(!1),e&&u((0,k.vH)(!0))},objectName:ee.name,bucketName:i,actualInfo:ee}),we&&ee&&(0,O.jsx)(je.default,{open:we,bucketName:i,object:{name:ee.name,version_id:ee.version_id||"null",size:parseInt(ee.size||"0"),content_type:"",last_modified:ee.last_modified},onClosePreview:function(){Te(!1)}}),R&&ee&&(0,O.jsx)(Ae,{modalOpen:R,bucketName:i,actualInfo:ee,onCloseAndUpdate:function(e){U(!1),e&&u((0,k.vH)(!0))}}),q&&ee&&(0,O.jsx)(Me,{inspectOpen:q,volumeName:i,inspectPath:ee.name,closeInspectModalAndRefresh:function(e){$(!1),e&&u((0,k.vH)(!0))}}),Pe&&ee&&(0,O.jsx)(Ke,{open:Pe,closeModal:function(){Be(!1)},currentItem:qe,bucketName:i,internalPaths:t,actualInfo:ee}),Z?(0,O.jsx)(a.Fragment,{children:Qe}):(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(Ee,{title:(0,O.jsxs)("div",{className:n.ObjectDetailsTitle,children:[Oe(en,!0),(0,O.jsx)("span",{className:n.objectNameContainer,children:en})]}),items:dn}),(0,O.jsx)(K.Z,{tooltip:ln?"":(0,E.MK)([E.Ft.S3_DELETE_OBJECT],"delete this object"),children:(0,O.jsx)(x.ZP,{item:!0,xs:12,sx:{justifyContent:"center",display:"flex"},children:(0,O.jsx)(N.s,{resource:[i,qe,[i,ee.name].join("/")],scopes:[E.Ft.S3_DELETE_OBJECT],errorProps:{disabled:!0},children:(0,O.jsx)(f.zxk,{id:"delete-element-click",icon:(0,O.jsx)(f.pJl,{}),iconLocation:"start",fullWidth:!0,variant:"secondary",onClick:function(){Ze(!0)},disabled:""===b&&ee.is_delete_marker,sx:(0,o.Z)({width:"calc(100% - 44px)",margin:"8px 0"},un),label:"Delete".concat(""!==b?" version":"")})})})}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.headerForSection,children:[(0,O.jsx)("span",{children:"Object Info"}),(0,O.jsx)(f.Gvh,{})]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Name:"}),(0,O.jsx)("br",{}),(0,O.jsx)("div",{style:{overflowWrap:"break-word"},children:en})]}),""!==b&&(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Version ID:"}),(0,O.jsx)("br",{}),b]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Size:"}),(0,O.jsx)("br",{}),(0,g.ae)(ee.size||"0")]}),ee.version_id&&"null"!==ee.version_id&&""===b&&(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Versions:"}),(0,O.jsx)("br",{}),he.length," version",1!==he.length?"s":"",","," ",(0,g.l5)(Ie)]}),""===b&&(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Last Modified:"}),(0,O.jsx)("br",{}),function(e){var n=new Date,t=new Date(e),i=n.getTime()-t.getTime(),o=(0,g.nF)(i,"ms");return""!==o.trim()?"".concat(o," ago"):"Just now"}(ee.last_modified)]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"ETAG:"}),(0,O.jsx)("br",{}),ee.etag||"N/A"]}),(0,O.jsxs)(V.Z,{className:n.detailContainer,children:[(0,O.jsx)("strong",{children:"Tags:"}),(0,O.jsx)("br",{}),0===Xe.length?"N/A":Xe.map((function(e,n){return(0,O.jsxs)("span",{children:[e,":",v()(ee,"tags.".concat(e),""),n div":{borderBottomColor:"#F8F8F8"}},"@media (max-width: 799px)":{margin:0,"&:hover, &.selected":{backgroundColor:"transparent","& > div":{borderBottomColor:"#E2E2E2"}}}},versionContainer:{fontSize:16,fontWeight:"bold",display:"flex",alignItems:"center","& svg.min-icon":{width:18,height:18,minWidth:18,minHeight:18,marginRight:10},"@media (max-width: 799px)":{fontSize:14,"& svg.min-icon":{display:"none"}}},buttonContainer:{textAlign:"right","& button":{marginLeft:"1.5rem"},"@media (max-width: 600px)":{"& button":{marginLeft:"5px"}}},versionID:{fontSize:"12px",margin:"2px 0",whiteSpace:"nowrap",textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden"},versionData:{marginRight:"10px",fontSize:12,color:"#868686","@media (max-width: 799px)":{textOverflow:"ellipsis",maxWidth:"95%",overflow:"hidden",whiteSpace:"nowrap"}},ctrItem:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",height:"calc(100% + 2px)",backgroundColor:"#F8F8F8",left:"24px"},"@media (max-width: 799px)":{"&::before":{display:"none"}}},collapsableInfo:{"@media (max-width: 799px)":{display:"flex",flexDirection:"column"}},versionItem:{"@media (max-width: 799px)":{display:"none"}}})}))((function(e){var n=e.classes,t=e.fileName,i=e.versionInfo,o=e.isSelected,a=e.checkable,r=e.isChecked,s=e.onCheck,c=e.onShare,l=e.onDownload,d=e.onRestore,u=e.onPreview,h=e.globalClick,m=e.index,b=e.key,v=e.style,j=i.is_delete_marker,Z=[{icon:(0,O.jsx)(f.P99,{}),action:u,tooltip:"Preview"},{icon:(0,O.jsx)(f._8t,{}),action:l,tooltip:"Download this version"},{icon:(0,O.jsx)(f.aAc,{}),action:c,tooltip:"Share this version"},{icon:(0,O.jsx)(f.D7Y,{}),action:d,tooltip:"Restore this version"}],S=null;i.is_delete_marker?S="deleted":i.is_latest?S="current":"null"===i.version_id&&(S="null");var _=p.ou.now();return i.last_modified&&(_=p.ou.fromISO(i.last_modified)),(0,O.jsx)(x.ZP,{container:!0,flex:1,className:n.ctrItem,onClick:function(){h(i)},style:v,children:(0,O.jsx)(x.ZP,{item:!0,xs:12,className:"".concat(n.intermediateLayer," ").concat(o?"selected":""),children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:"".concat(n.mainFileVersionItem," ").concat(i.is_delete_marker?"deleted":""),children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,justifyContent:"space-between",children:(0,O.jsxs)(x.ZP,{container:!0,children:[(0,O.jsxs)(x.ZP,{item:!0,xs:!0,md:4,className:n.versionContainer,children:[a&&(0,O.jsx)($e.Z,{checked:r,id:"select-".concat(i.version_id),label:"",name:"select-".concat(i.version_id),onChange:function(e){e.stopPropagation(),e.preventDefault(),s(i.version_id||"")},value:i.version_id||"",disabled:i.is_delete_marker,overrideCheckboxStyles:{paddingLeft:0,height:34,width:25},noTopMargin:!0}),Oe(t,!0)," v",m.toString(),(0,O.jsx)("span",{className:n.versionItem,children:S&&(0,O.jsx)(qe,{type:S})})]}),(0,O.jsx)(x.ZP,{item:!0,xs:10,md:8,className:n.buttonContainer,children:Z.map((function(e,t){return(0,O.jsx)(re.Z,{title:e.tooltip,children:(0,O.jsx)(y.Z,{size:"small",id:"version-action-".concat(e.tooltip,"-").concat(t.toString()),className:"".concat(n.spacing," ").concat(j?n.buttonDisabled:""),disabled:j,onClick:function(n){n.stopPropagation(),j?n.preventDefault():e.action(i)},sx:{backgroundColor:"#F8F8F8",borderRadius:"100%",width:"28px",height:"28px",padding:"5px","& .min-icon":{width:"14px",height:"14px"}},children:e.icon})},"version-action-".concat(e.tooltip,"-").concat(t.toString()))}))})]})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.versionID,children:"null"!==i.version_id?i.version_id:"-"}),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.collapsableInfo,children:[(0,O.jsxs)("span",{className:n.versionData,children:[(0,O.jsx)("strong",{children:"Last modified:"})," ",_.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)")]}),(0,O.jsxs)("span",{className:n.versionData,children:[(0,O.jsx)("strong",{children:"Size:"})," ",(0,g.ae)(i.size||"0")]})]})]})})},b)})),Qe=t(90673),en=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedObject,s=(0,d.TL)(),c=(0,a.useState)(!1),l=(0,h.Z)(c,2),u=l[0],m=l[1],p=(0,a.useState)(""),b=(0,h.Z)(p,2),v=b[0],Z=b[1],S=(0,a.useState)(!1),_=(0,h.Z)(S,2),C=_[0],w=_[1],T=(0,r.v9)((function(e){return e.objectBrowser.retentionConfig})),y=(0,N.F)([i],[E.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===T||void 0===T?void 0:T.mode);if((0,a.useEffect)((function(){u&&j.Z.invoke("DELETE","/api/v1/buckets/".concat(i,"/objects?path=").concat(o,"&non_current_versions=true").concat(C?"&bypass=true":"")).then((function(){n(!0)})).catch((function(e){s((0,F.Ih)(e)),m(!1)}))}),[u,n,s,o,i,C]),!o)return null;return(0,O.jsx)(pe.Z,{title:"Delete Non-Current versions",confirmText:"Delete",isOpen:t,titleIcon:(0,O.jsx)(f.NvT,{}),isLoading:u,onConfirm:function(){m(!0)},onClose:function(){return n(!1)},confirmButtonProps:{disabled:"YES, PROCEED"!==v||u},confirmationContent:(0,O.jsxs)(fe.Z,{children:["Are you sure you want to delete all the non-current versions for:"," ",(0,O.jsx)("b",{children:(0,g.IO)(o)}),"? ",(0,O.jsx)("br",{}),y&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)("div",{style:{marginTop:10},children:(0,O.jsx)(ne.Z,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:C,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){w(!C)},description:""})})}),(0,O.jsx)("br",{}),"To continue please type ",(0,O.jsx)("b",{children:"YES, PROCEED"})," in the box.",(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(Le.Z,{id:"type-confirm",name:"retype-tenant",onChange:function(e){Z(e.target.value)},label:"",value:v})})]})})},nn=function(e){var n=e.closeDeleteModalAndRefresh,t=e.deleteOpen,i=e.selectedBucket,o=e.selectedVersions,s=e.selectedObject,c=(0,d.TL)(),l=(0,a.useState)(!1),u=(0,h.Z)(l,2),m=u[0],p=u[1],x=(0,a.useState)(!1),b=(0,h.Z)(x,2),v=b[0],g=b[1],Z=(0,r.v9)((function(e){return e.objectBrowser.retentionConfig})),S=(0,N.F)([i],[E.Ft.S3_BYPASS_GOVERNANCE_RETENTION])&&"governance"===(null===Z||void 0===Z?void 0:Z.mode);return(0,a.useEffect)((function(){if(m){var e=o.map((function(e){return{path:s,versionID:e,recursive:!1}}));e.length>0&&j.Z.invoke("POST","/api/v1/buckets/".concat(i,"/delete-objects?all_versions=false").concat(v?"&bypass=true":""),e).then((function(){p(!1),n(!0)})).catch((function(e){c((0,F.Ih)(e)),p(!1)}))}}),[m,n,i,s,o,v,c]),o?(0,O.jsx)(pe.Z,{title:"Delete Selected Versions",confirmText:"Delete",isOpen:t,titleIcon:(0,O.jsx)(f.NvT,{}),isLoading:m,onConfirm:function(){p(!0)},onClose:function(){return n(!1)},confirmationContent:(0,O.jsxs)(fe.Z,{children:["Are you sure you want to delete the selected ",o.length," ","versions for ",(0,O.jsx)("strong",{children:s}),"?",S&&(0,O.jsx)(a.Fragment,{children:(0,O.jsx)("div",{style:{marginTop:10},children:(0,O.jsx)(ne.Z,{label:"Bypass Governance Mode",indicatorLabels:["Yes","No"],checked:v,value:"bypass_governance",id:"bypass_governance",name:"bypass_governance",onChange:function(e){g(!v)},description:""})})})]})}):null},tn=t(5171),on={is_latest:!0,last_modified:"",legal_hold_status:"",name:"",retention_mode:"",retention_until_date:"",size:"0",tags:{},version_id:null},an=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({versionsContainer:{padding:10,"@media (max-width: 799px)":{minHeight:800}},noBottomBorder:{borderBottom:0},versionsVirtualPanel:{flexGrow:1,height:"calc(100% - 120px)",overflow:"auto","@media (max-width: 799px)":{height:600}},screenTitleContainer:{position:"relative","&::before":{content:"' '",display:"block",position:"absolute",width:"2px",backgroundColor:"#F8F8F8",left:"24px",height:"40px",bottom:0},"@media (max-width: 799px)":{"&::before":{display:"none"}}},sortByLabel:{color:"#838383",fontWeight:"bold",whiteSpace:"nowrap",marginRight:12,fontSize:14,"@media (max-width: 600px)":{display:"none"}}},u.OR),u.VX),u.bK),u.VI),u.cx),u.C4),u.Bz))}))((function(e){var n=e.classes,t=e.internalPaths,i=e.bucketName,o=(0,d.TL)(),s=(0,r.v9)((function(e){return e.objectBrowser.searchVersions})),c=(0,r.v9)((function(e){return e.objectBrowser.loadingVersions})),l=(0,r.v9)((function(e){return e.objectBrowser.selectedVersion})),u=(0,r.v9)(F.N5),m=(0,a.useState)(!1),p=(0,h.Z)(m,2),b=p[0],Z=p[1],_=(0,a.useState)(null),C=(0,h.Z)(_,2),w=C[0],T=C[1],y=(0,a.useState)(null),N=(0,h.Z)(y,2),E=N[0],I=N[1],L=(0,a.useState)([]),P=(0,h.Z)(L,2),R=P[0],U=P[1],M=(0,a.useState)(!1),z=(0,h.Z)(M,2),G=z[0],W=z[1],H=(0,a.useState)(null),J=(0,h.Z)(H,2),V=J[0],q=J[1],$=(0,a.useState)("date"),X=(0,h.Z)($,2),Q=X[0],ee=X[1],ne=(0,a.useState)(!1),te=(0,h.Z)(ne,2),ie=te[0],oe=te[1],ae=(0,a.useState)(!1),re=(0,h.Z)(ae,2),se=re[0],ce=re[1],le=(0,a.useState)(!1),de=(0,h.Z)(le,2),ue=de[0],he=de[1],me=(0,a.useState)([]),fe=(0,h.Z)(me,2),pe=fe[0],xe=fe[1],be=(0,a.useState)(!1),ve=(0,h.Z)(be,2),ge=ve[0],Ze=ve[1],Se=[];w&&(Se=w.name.split("/")),(0,a.useEffect)((function(){c||w||o((0,k.Eq)(!0))}),[c,w,o]),(0,a.useEffect)((function(){c&&""!==t&&j.Z.invoke("GET","/api/v1/buckets/".concat(i,"/objects?prefix=").concat(t).concat(u?"&with_versions=true":"")).then((function(e){var n=v()(e,"objects",[]),i=(0,g.IO)(t),a=n.filter((function(e){return e.name===i}));u?(T(a.find((function(e){return e.is_latest}))||on),U(a)):(T(a[0]),U([])),o((0,k.Eq)(!1))})).catch((function(e){o((0,F.Ih)(e)),o((0,k.Eq)(!1))}))}),[c,i,t,o,u]);var _e=function(e){I(e),Z(!0)},Ce=function(e){I(e),oe(!0)},we=function(e){q(e),W(!0)},Te=function(e){!function(e){var n=(0,g.LL)("".concat(i,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),a=(0,ze.YO)(8),r=(0,A.LR)(i,t,e.version_id,parseInt(e.size||"0"),null,a,(function(e){o((0,k.RO)({instanceID:n,progress:e}))}),(function(){o((0,k.oK)(n))}),(function(e){o((0,k.qJ)({instanceID:n,msg:e}))}),(function(){o((0,k.Im)(n))}));(0,ze.EN)(a,r),o((0,k.Mc)({ID:a,bucketName:i,done:!1,instanceID:n,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))}(e)},ye=function(e){o((0,k.M3)(e.version_id||""))},Ne=R.filter((function(e){return!!e.version_id&&e.version_id.includes(s)})),Ee=R.reduce((function(e,n){return n.size?e+parseInt(n.size):e}),0);Ne.sort((function(e,n){if("size"===Q)return e.size&&n.size?e.sizen.size?1:0:0;var t=new Date(e.last_modified).getTime(),i=new Date(n.last_modified).getTime();return ti?-1:0}));var Ie=function(e){if(pe.includes(e)){var n=pe.filter((function(n){return n!==e}));xe(n)}else{var t=(0,S.Z)(pe);t.push(e),xe(t)}};return(0,O.jsxs)(a.Fragment,{children:[b&&w&&(0,O.jsx)(Y.default,{open:b,closeModalAndRefresh:function(){I(null),Z(!1),oe(!1)},bucketName:i,dataObject:E||w}),G&&w&&V&&(0,O.jsx)(Ye,{restoreOpen:G,bucketName:i,versionToRestore:V,objectPath:w.name,onCloseAndUpdate:function(e){W(!1),q(null),e&&(o((0,k.Eq)(!0)),o((0,k.vH)(!0)))}}),ie&&w&&(0,O.jsx)(je.default,{open:ie,bucketName:i,object:{name:w.name,version_id:E&&E.version_id?E.version_id:"null",size:parseInt(E&&E.size?E.size:"0"),content_type:"",last_modified:w.last_modified},onClosePreview:function(){oe(!1)}}),se&&(0,O.jsx)(en,{deleteOpen:se,closeDeleteModalAndRefresh:function(e){ce(!1),e&&(o((0,k.Eq)(!0)),o((0,k.M3)("")),o((0,k.vH)(!0)))},selectedBucket:i,selectedObject:t}),ge&&(0,O.jsx)(nn,{selectedBucket:i,selectedObject:(0,g.IO)(t),deleteOpen:ge,selectedVersions:pe,closeDeleteModalAndRefresh:function(e){Ze(!1),e&&(o((0,k.Eq)(!0)),o((0,k.M3)("")),o((0,k.vH)(!0)),xe([]))}}),(0,O.jsxs)(x.ZP,{container:!0,className:n.versionsContainer,children:[!w&&(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(Ve.Z,{})}),w&&(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(x.ZP,{item:!0,xs:12,children:(0,O.jsx)(B,{bucketName:i,internalPaths:(0,g.IO)(t),hidePathButton:!0})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,O.jsx)(D.Z,{icon:(0,O.jsx)("span",{className:n.listIcon,children:(0,O.jsx)(f.cRd,{})}),title:(0,O.jsxs)("span",{className:n.titleSpacer,children:[Se.length>0?Se[Se.length-1]:w.name," ","Versions"]}),subTitle:(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,O.jsx)("span",{className:n.detailsSpacer,children:(0,O.jsxs)("strong",{children:[R.length," Version",1===R.length?"":"s","\xa0\xa0\xa0"]})}),(0,O.jsx)("span",{className:n.detailsSpacer,children:(0,O.jsx)("strong",{children:(0,g.l5)(Ee)})})]})}),actions:(0,O.jsxs)(a.Fragment,{children:[(0,O.jsx)(K.Z,{tooltip:"Select Multiple Versions",children:(0,O.jsx)(f.zxk,{id:"select-multiple-versions",onClick:function(){he(!ue)},icon:(0,O.jsx)(f.amE,{}),variant:ue?"callAction":"regular",style:{marginRight:8}})}),ue&&(0,O.jsx)(K.Z,{tooltip:"Delete Selected Versions",children:(0,O.jsx)(f.zxk,{id:"delete-multiple-versions",onClick:function(){Ze(!0)},icon:(0,O.jsx)(f.pJl,{}),variant:"secondary",style:{marginRight:8},disabled:0===pe.length})}),(0,O.jsx)(K.Z,{tooltip:"Delete Non Current Versions",children:(0,O.jsx)(f.zxk,{id:"delete-non-current",onClick:function(){ce(!0)},icon:(0,O.jsx)(f.utM,{}),variant:"secondary",style:{marginRight:15},disabled:R.length<=1})}),(0,O.jsx)("span",{className:n.sortByLabel,children:"Sort by"}),(0,O.jsx)(Qe.Z,{id:"sort-by",label:"",value:Q,onChange:function(e){ee(e.target.value)},name:"sort-by",options:[{label:"Date",value:"date"},{label:"Size",value:"size"}]})]}),className:n.noBottomBorder})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.versionsVirtualPanel,children:w.version_id&&"null"!==w.version_id&&(0,O.jsx)(tn.aV,{style:{width:"100%"},containerStyle:{width:"100%",maxWidth:"100%"},width:1,height:800,rowCount:Ne.length,rowHeight:108,rowRenderer:function(e){var n=e.key,t=e.index,i=(e.isScrolling,e.isVisible,e.style),o=R.length-t;return(0,O.jsx)(Xe,{style:i,fileName:(null===w||void 0===w?void 0:w.name)||"",versionInfo:Ne[t],index:o,onDownload:Te,onRestore:we,onShare:_e,onPreview:Ce,globalClick:ye,isSelected:l===Ne[t].version_id,checkable:ue,onCheck:Ie,isChecked:pe.includes(Ne[t].version_id||"")},n)}})})]})]})]})})),rn=t(9859),sn=function(e){if(e.name.endsWith("/"))return"";var n=p.ou.now(),t=p.ou.fromISO(e.last_modified);return n.hasSame(t,"day")&&n.hasSame(t,"month")&&n.hasSame(t,"year")?"Today, ".concat(t.toFormat("HH:mm")):t.toFormat("ccc, LLL dd yyyy HH:mm (ZZZZ)")},cn=function(e){return e.name.endsWith("/")||!e.size?"-":(0,g.ae)(String(e.size))},ln=[{label:"Name",elementKey:"name",renderFunction:Oe,enableSort:!0},{label:"Last Modified",elementKey:"last_modified",renderFunction:sn,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:cn,renderFullObject:!0,width:100,enableSort:!0}],dn=[{label:"Name",elementKey:"name",renderFunction:Oe,enableSort:!0},{label:"Object Date",elementKey:"last_modified",renderFunction:sn,renderFullObject:!0,enableSort:!0},{label:"Size",elementKey:"size",renderFunction:cn,renderFullObject:!0,width:100,enableSort:!0},{label:"Deleted",elementKey:"delete_flag",renderFunction:function(e){return e?"Yes":"No"},width:60}],un=t(92983),hn=t(46078),mn=(0,w.Z)((function(e){return(0,c.Z)({browsePaper:{border:0,height:"calc(100vh - 290px)","&.isEmbedded":{height:"calc(100vh - 315px)"},"&.actionsPanelOpen":{minHeight:"100%"},"@media (max-width: 800px)":{width:800}},parentWrapper:{position:"relative",height:"calc(100% - 60px)","@media (max-width: 800px)":{overflowX:"auto"}},"@global":{".rowLine:hover .iconFileElm":{backgroundImage:"url(/images/ob_file_filled.svg)"},".rowLine:hover .iconFolderElm":{backgroundImage:"url(/images/ob_folder_filled.svg)"}}})})),fn=function(e){var n=e.internalPaths,t=mn(),i=(0,d.TL)(),o=(0,s.UO)(),c=(0,s.s0)(),l=(0,a.useState)("ASC"),u=(0,h.Z)(l,2),m=u[0],f=u[1],p=(0,a.useState)("name"),x=(0,h.Z)(p,2),b=x[0],j=x[1],Z=o.bucketName||"",_=(0,r.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),C=(0,r.v9)((function(e){return e.objectBrowser.loadingObjects})),w=(0,r.v9)(hn.$4),T=!(null===w||void 0===w||!w.includes("object-browser-only")),y=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),I=(0,r.v9)((function(e){return e.objectBrowser.records})),F=(0,r.v9)((function(e){return e.objectBrowser.searchObjects})),L=(0,r.v9)((function(e){return e.objectBrowser.selectedObjects})),P=(0,r.v9)((function(e){return e.system.anonymousMode})),B=(0,N.F)(Z,[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET]),D=I.filter((function(e){return""===F||e.name.toLowerCase().indexOf(F.toLowerCase())>=0})).sort((0,A.P_)(b)),R=[];R="ASC"===m?D:D.reverse();var U=[{type:"view",label:"View",onClick:function(e){var t=e.name,o="/browser/".concat(Z).concat(t?"/".concat((0,g.LL)(t)):"");!P||null===n||e.name.endsWith("/")?(i((0,k.S2)([])),c(o),P||(i((0,k.vb)(!0)),i((0,k.Eq)(!0)),i((0,k.d_)(!0))),i((0,k.EE)("".concat(t?"".concat((0,g.LL)(t)):"")))):We(i,Z,"".concat((0,g.LL)(t)),e)},sendOnlyId:!1}];return(0,O.jsx)(un.Z,{itemActions:U,columns:y?dn:ln,isLoading:C,entityName:"Objects",idField:"name",records:R,customPaperHeight:"".concat(t.browsePaper," ").concat(T?"isEmbedded":""," ").concat(_?"actionsPanelOpen":""),selectedItems:L,onSelect:P?void 0:function(e){var n=e.target,t=n.value,o=n.checked,a=(0,S.Z)(L);return o?a.push(t):a=a.filter((function(e){return e!==t})),i((0,k.S2)(a)),i((0,k.EE)(null)),a},customEmptyMessage:B||P?"This location is empty".concat(y?"":", please try uploading a new file"):(0,E.MK)([E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],"view Objects in this bucket"),sortConfig:{currentSort:b,currentDirection:m,triggerSort:function(e){var n=v()(e,"sortDirection","DESC");j(e.sortBy),f(n),i((0,k.Cn)(!0))}},onSelectAll:function(){if(i((0,k.EE)(null)),L.length!==R.length){var e=R.map((function(e){return e.name}));i((0,k.S2)(e))}else i((0,k.S2)([]))},rowStyle:function(e){var n,t=e.index;return null!==(n=R[t])&&void 0!==n&&n.delete_flag?"deleted":""},parentClassName:t.parentWrapper})},pn=t(96382),xn=(0,pn.hg)("objectBrowser/downloadSelected",function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(n,t){var i,o,a,r,s,c;return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=t.getState,t.rejectWithValue,o=t.dispatch,a=i(),r=function(e){var t=(0,g.LL)("".concat(n,"-").concat(e.name,"-").concat((new Date).getTime(),"-").concat(Math.random())),i=(0,ze.YO)(8),a=(0,A.LR)(n,(0,g.LL)(e.name),e.version_id,e.size,null,i,(function(e){o((0,k.RO)({instanceID:t,progress:e}))}),(function(){o((0,k.oK)(t))}),(function(e){o((0,k.qJ)({instanceID:t,msg:e}))}),(function(){o((0,k.Im)(t))}));(0,ze.EN)(i,a),o((0,k.Mc)({ID:i,bucketName:n,done:!1,instanceID:t,percentage:0,prefix:e.name,type:"download",waitingForFile:!0,failed:!1,cancelled:!1,errorMessage:""}))},0===a.objectBrowser.selectedObjects.length){e.next=12;break}if(s=[],c=function(e){return a.objectBrowser.selectedObjects.includes(e.name)},1!==(s=a.objectBrowser.records.filter(c)).length){e.next=11;break}if(!(s[0].name.length>200&&(0,g.mv)().toLowerCase().includes("win"))){e.next=11;break}return o((0,k.$y)(s[0])),e.abrupt("return");case 11:s.forEach((function(e){r(e)}));case 12:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),bn=(0,pn.hg)("objectBrowser/openPreview",function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(n,t){var i,o,a,r,s;return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,t.rejectWithValue,o=t.dispatch,1===(a=i()).objectBrowser.selectedObjects.length&&(s=function(e){return a.objectBrowser.selectedObjects.includes(e.name)},(r=a.objectBrowser.records.find(s))&&(o((0,k.eP)(r)),o((0,k.ei)(!0))));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),vn=(0,pn.hg)("objectBrowser/openShare",function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(n,t){var i,o,a,r,s;return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,t.rejectWithValue,o=t.dispatch,1===(a=i()).objectBrowser.selectedObjects.length&&(s=function(e){return a.objectBrowser.selectedObjects.includes(e.name)},(r=a.objectBrowser.records.find(s))&&(o((0,k.eP)(r)),o((0,k.Qf)(!0))));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),jn=(0,pn.hg)("objectBrowser/openAnonymousAccess",function(){var e=(0,Re.Z)((0,De.Z)().mark((function e(n,t){var i,o,a;return(0,De.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getState,o=t.dispatch,1===(a=i()).objectBrowser.selectedObjects.length&&a.objectBrowser.selectedObjects[0].endsWith("/")&&o((0,k.xV)(!0));case 3:case"end":return e.stop()}}),e)})));return function(n,t){return e.apply(this,arguments)}}()),gn=t(59114),Zn=function(){var e=(0,d.TL)(),n=(0,r.v9)((function(e){return e.objectBrowser.searchObjects}));return(0,O.jsx)(gn.Z,{placeholder:"Start typing to filter objects in the bucket",onChange:function(n){e((0,k.G4)(n))},value:n})},Sn=t(94619),_n=(0,I.Z)(a.lazy((function(){return t.e(711).then(t.bind(t,50711))}))),Cn=(0,I.Z)(a.lazy((function(){return Promise.resolve().then(t.bind(t,34433))}))),wn=(0,I.Z)(a.lazy((function(){return Promise.all([t.e(3691),t.e(9683),t.e(6901)]).then(t.bind(t,26901))}))),Tn=(0,I.Z)(a.lazy((function(){return Promise.resolve().then(t.bind(t,78562))}))),yn=(0,w.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)((0,o.Z)({badgeOverlap:{"& .MuiBadge-badge":{top:10,right:1,width:5,height:5,minWidth:5}}},u.VX),u.OR),u.qg),{},{searchField:(0,o.Z)((0,o.Z)({},u.qg.searchField),{},{maxWidth:380}),screenTitleContainer:{border:"#EAEDEE 1px solid"},labelStyle:{color:"#969FA8",fontSize:"12px"},breadcrumbsContainer:{padding:"12px 14px 5px"},fullContainer:{position:"relative","@media (max-width: 799px)":{width:0}},hideListOnSmall:{"@media (max-width: 799px)":{display:"none"}},actionsSection:{display:"flex",justifyContent:"space-between",width:"100%"}},u.C4),u.cx),u.Bz))})),Nn={borderWidth:2,borderRadius:2,borderColor:"#eeeeee",outline:"none"},En={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#2196f3"},In={borderStyle:"dashed",backgroundColor:"#fafafa",borderColor:"#00e676"},Fn=function(){var e,n=yn(),t=(0,d.TL)(),i=(0,s.UO)(),c=(0,s.s0)(),l=(0,s.TH)(),u=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),b=(0,r.v9)((function(e){return e.objectBrowser.rewind.bucketToRewind})),S=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),_=(0,r.v9)((function(e){return e.objectBrowser.showDeleted})),C=(0,r.v9)((function(e){return e.objectBrowser.objectDetailsOpen})),w=(0,r.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),T=(0,r.v9)((function(e){return e.objectBrowser.loadingObjects})),y=(0,r.v9)((function(e){return e.objectBrowser.simplePath})),I=(0,r.v9)((function(e){return e.objectBrowser.versionInfo})),L=(0,r.v9)((function(e){return e.objectBrowser.lockingEnabled})),P=(0,r.v9)((function(e){return e.objectBrowser.downloadRenameModal})),U=(0,r.v9)((function(e){return e.objectBrowser.selectedPreview})),M=(0,r.v9)((function(e){return e.objectBrowser.shareFileModalOpen})),z=(0,r.v9)((function(e){return e.objectBrowser.previewOpen})),G=(0,r.v9)((function(e){return e.objectBrowser.selectedBucket})),H=(0,r.v9)((function(e){return e.system.anonymousMode})),V=(0,r.v9)((function(e){return e.system.overrideStyles})),Y=(0,r.v9)((function(e){return e.objectBrowser.anonymousAccessOpen})),q=(0,r.v9)(rn.HQ),$=(0,r.v9)(rn.G6),X=(0,a.useState)(!1),Q=(0,h.Z)(X,2),ee=Q[0],ne=Q[1],te=(0,a.useState)(!1),ie=(0,h.Z)(te,2),oe=ie[0],ae=ie[1],re=(0,a.useState)(!1),se=(0,h.Z)(re,2),ce=se[0],le=se[1],de=(0,a.useState)(!1),ue=(0,h.Z)(de,2),he=ue[0],me=ue[1],fe=(0,a.useState)(!1),pe=(0,h.Z)(fe,2),xe=pe[0],be=pe[1],ve=(0,a.useState)(null),je=(0,h.Z)(ve,2),ge=je[0],Ze=je[1],Se=i.bucketName||"",_e=l.pathname.split("/browser/".concat(Se,"/")),Ce=2===_e.length?_e[1]:"",we=(0,g.IO)(Ce),Te=we.split("/").filter((function(e){return""!==e})),ye=[Se];Te.length>0&&(ye=ye.concat(Te));var Ne=(0,a.useRef)(null),Ie=(0,a.useRef)(null),Fe=(0,N.F)(Se,[E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS]),ke=(0,N.F)(Se,[E.Ft.S3_DELETE_OBJECT]),Oe=(0,N.F)(ye,[E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],!0,!0)||H,Le=(0,N.F)(Se,[E.Ft.S3_DELETE_OBJECT]),Pe=(0,N.F)(Se,[E.Ft.S3_GET_BUCKET_POLICY,E.Ft.S3_PUT_BUCKET_POLICY,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS]),Be=(0,r.v9)((function(e){return e.objectBrowser.selectedObjects}));(0,a.useEffect)((function(){t((0,k.G4)("")),t((0,k.Cn)(!0)),t((0,k.S2)([]))}),[y,t]),(0,a.useEffect)((function(){u&&b!==Se&&t((0,k._w)())}),[u,b,Se,t]),(0,a.useEffect)((function(){null!==Ie.current&&(Ie.current.setAttribute("directory",""),Ie.current.setAttribute("webkitdirectory",""))}),[Ie]),(0,a.useEffect)((function(){if(1===Be.length){var e=Be[0];"none"!==(0,A.Bg)(e)?be(!0):be(!1),e.endsWith("/")?me(!1):me(!0)}else me(!1),be(!1)}),[Be]),(0,a.useEffect)((function(){ge||H||j.Z.invoke("GET","/api/v1/buckets/".concat(Se,"/quota")).then((function(e){var n=null;e.quota&&(n=e),Ze(n)})).catch((function(e){console.error("Error Getting Quota Status: ",e.detailedError),Ze(null)}))}),[ge,Se,H]),(0,a.useEffect)((function(){Be.length>0?t((0,k.vb)(!0)):0!==Be.length||null!==w||T||t((0,k.vb)(!1))}),[Be,w,t,T]),(0,a.useEffect)((function(){ce||(t((0,rn.d5)(!0)),le(!0))}),[ce,t,le]),(0,a.useEffect)((function(){!T&&!q||H||j.Z.invoke("GET","/api/v1/buckets/".concat(Se)).then((function(e){t((0,rn.d5)(!1)),t((0,rn.f4)(e)),t((0,k.RS)(Se))})).catch((function(e){t((0,rn.d5)(!1)),t((0,F.Ih)(e))}))}),[Se,q,t,H,T]),(0,a.useEffect)((function(){""!==G&&j.Z.invoke("GET","/api/v1/buckets/".concat(G,"/retention")).then((function(e){t((0,k.c8)(e))})).catch((function(e){t((0,k.c8)(null))}))}),[G,t]);var Ae=function(e){if(null!==e&&void 0!==e&&null!==e.target.files&&void 0!==e.target.files){e.preventDefault();for(var n=[],t=0;t1,_="An error occurred while uploading the file".concat(S?"s":"","."),C={413:"Error - File size too large"};Z.withCredentials=!1,Z.onload=function(e){if(Z.status>=200&&Z.status<300)t((0,k.oK)(j)),r({status:Z.status}),(0,ze.GM)(p);else{if(C[Z.status])_=C[Z.status];else if(Z.response)try{var n=JSON.parse(Z.response);_=n.detailedMessage}catch(i){_="something went wrong"}t((0,k.qJ)({instanceID:j,msg:_})),s({status:Z.status,message:_}),(0,ze.GM)(p)}},Z.upload.addEventListener("error",(function(e){s(_),t((0,k.qJ)({instanceID:j,msg:"A network error occurred."}))})),Z.upload.addEventListener("progress",(function(e){var n=Math.floor(100*e.loaded/e.total);t((0,k.RO)({instanceID:j,progress:n}))})),Z.onerror=function(){s(_),t((0,k.qJ)({instanceID:j,msg:"A network error occurred."}))},Z.onloadend=function(){0===e.length&&t((0,k.Cn)(!0))},Z.onabort=function(){t((0,k.Im)(j))};var w=new FormData;void 0!==a.size&&(w.append(a.size.toString(),d,l),(0,ze.EN)(p,Z),t((0,k.Mc)({ID:p,bucketName:n,done:!1,instanceID:j,percentage:0,prefix:"".concat((0,g.IO)(u)).concat(l),type:"upload",waitingForFile:!1,failed:!1,cancelled:!1,errorMessage:""})),(0,ze.N5)(p,w),(0,ze.EN)(p,Z))}))},r=[];t((0,k.LD)());for(var s=0;s0){var i=r.length,o=r.length-n.length,a={errorMessage:"There were some errors during file upload",detailedError:"Uploaded files ".concat(o,"/").concat(i)};t((0,F.Ih)(a))}t((0,k.Cn)(!0)),t((0,k.S2)([]))}))}(e,Se,i,n)}),[Se,t,y,H]),Re=(0,a.useCallback)((function(e){if(e&&e.length>0&&Oe){var n=e[0].path;De(e,n)}Oe||t((0,F.Ih)({errorMessage:"Upload not allowed",detailedError:(0,E.MK)([E.Ft.S3_PUT_OBJECT,E.Ft.S3_PUT_ACTIONS],"upload objects to this location")}))}),[De]),Ue=(0,m.uI)({noClick:!0,onDrop:Re}),Me=Ue.getRootProps,Ge=Ue.getInputProps,We=Ue.isDragActive,He=Ue.isDragAccept,Ve=(0,a.useMemo)((function(){return(0,o.Z)((0,o.Z)((0,o.Z)({},Nn),We?En:{}),He?In:{})}),[We,He]),Ye=function(e){if(t((0,k.EE)(null)),t((0,k.db)({status:!1})),C&&null!==w){var n=(0,g.IO)(Ce).split("/");n.pop();var i="";n&&n.length>0&&(i="".concat(n.join("/"),"/")),c("/browser/".concat(Se,"/").concat((0,g.LL)(i)))}t((0,k.vb)(!1)),t((0,k.S2)([])),e&&t((0,k.Cn)(!0))},qe=p.ou.now();null!==$&&void 0!==$&&$.creation_date&&(qe=p.ou.fromISO($.creation_date));var Xe={},Qe={};V&&(Xe={backgroundColor:"transparent"},Qe={color:v()(V,"buttonStyles.textColor","#fff"),backgroundColor:v()(V,"buttonStyles.backgroundColor","#07193E"),"&:hover":{color:v()(V,"buttonStyles.hoverText","#fff"),backgroundColor:v()(V,"buttonStyles.hoverColor","#0D2453")},"&:active":{color:v()(V,"buttonStyles.activeText","#fff"),backgroundColor:v()(V,"buttonStyles.activeColor","#05132F")}});var en=[{action:function(){t(xn(Se))},label:"Download",disabled:!Fe||0===(null===Be||void 0===Be?void 0:Be.length),icon:(0,O.jsx)(f._8t,{}),tooltip:Fe?"Download Selected":(0,E.MK)([E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS],"download objects from this bucket")},{action:function(){t(vn())},label:"Share",disabled:1!==Be.length||!he,icon:(0,O.jsx)(f.aAc,{}),tooltip:he?"Share Selected File":"Sharing unavailable"},{action:function(){t(bn())},label:"Preview",disabled:1!==Be.length||!xe,icon:(0,O.jsx)(f.P99,{}),tooltip:xe?"Preview Selected File":"Preview unavailable"},{action:function(){t(jn())},label:"Anonymous Access",disabled:1!==Be.length||!Be[0].endsWith("/")||!Pe,icon:(0,O.jsx)(f.cuP,{}),tooltip:1===Be.length&&Be[0].endsWith("/")?"Set Anonymous Access to this Folder":"Anonymous Access unavailable"},{action:function(){ne(!0)},label:"Delete",icon:(0,O.jsx)(f.pJl,{}),disabled:!ke||0===Be.length||!Le,tooltip:ke?"Delete Selected Files":(0,E.MK)([E.Ft.S3_DELETE_OBJECT],"delete objects in this bucket")}];return(0,O.jsxs)(a.Fragment,{children:[M&&U&&(0,O.jsx)(Cn,{open:M,closeModalAndRefresh:function(){t((0,k.Qf)(!1)),t((0,k.eP)(null))},bucketName:Se,dataObject:{name:U.name,last_modified:"",version_id:U.version_id}}),ee&&(0,O.jsx)(_n,{deleteOpen:ee,selectedBucket:Se,selectedObjects:Be,closeDeleteModalAndRefresh:function(e){ne(!1),e&&(t((0,F.y1)("Objects deleted successfully.")),t((0,k.S2)([])),t((0,k.Cn)(!0)))},versioning:I}),oe&&(0,O.jsx)(wn,{open:oe,closeModalAndRefresh:function(){ae(!1)},bucketName:Se}),z&&(0,O.jsx)(Tn,{open:z,bucketName:Se,object:U,onClosePreview:function(){t((0,k.ei)(!1)),t((0,k.eP)(null))}}),!!P&&(0,O.jsx)(Ke,{open:!!P,closeModal:function(){t((0,k.$y)(null))},currentItem:(null===(e=P.name.split("/"))||void 0===e?void 0:e.pop())||"",bucketName:Se,internalPaths:Ce,actualInfo:{name:P.name,last_modified:"",version_id:P.version_id,size:P.size.toString()}}),Y&&(0,O.jsx)(Sn.default,{onClose:function(){t((0,k.xV)(!1))},bucket:Se,modalOpen:Y,prefilledRoute:"".concat(Be[0],"*")}),(0,O.jsxs)(R.Z,{variant:"full",children:[H&&(0,O.jsx)("div",{style:{paddingBottom:16},children:(0,O.jsx)(Zn,{})}),(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.screenTitleContainer,children:(0,O.jsx)(D.Z,{icon:(0,O.jsx)("span",{children:(0,O.jsx)(f.wNb,{style:{width:30}})}),title:(0,O.jsx)("span",{className:n.titleSpacer,children:Se}),subTitle:H?null:(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.bucketDetails,children:[(0,O.jsxs)("span",{className:n.detailsSpacer,children:["Created on:\xa0\xa0",(0,O.jsx)("strong",{children:null!==$&&void 0!==$&&$.creation_date?qe.toFormat("ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"):""})]}),(0,O.jsxs)("span",{className:n.detailsSpacer,children:["Access:\xa0\xa0\xa0",(0,O.jsx)("strong",{children:(null===$||void 0===$?void 0:$.access)||""})]}),$&&(0,O.jsx)(a.Fragment,{children:(0,O.jsxs)("span",{className:n.detailsSpacer,children:[$.size&&(0,O.jsx)(a.Fragment,{children:(0,g.l5)($.size)}),$.size&&ge&&(0,O.jsxs)(a.Fragment,{children:[" / ",(0,g.l5)(ge.quota)]}),$.size&&$.objects?" - ":"",$.objects&&(0,O.jsxs)(a.Fragment,{children:[$.objects,"\xa0Object",$.objects&&1!==$.objects?"s":""]})]})})]})}),actions:(0,O.jsxs)("div",{className:n.actionsSection,children:[!H&&(0,O.jsx)(K.Z,{tooltip:"Rewind Bucket",children:(0,O.jsx)(f.zxk,{id:"rewind-objects-list",label:"Rewind",icon:(0,O.jsx)(Z.Z,{badgeContent:" ",color:"secondary",variant:"dot",invisible:!u,className:n.badgeOverlap,sx:{height:16},children:(0,O.jsx)(f.F_y,{style:{minWidth:16,minHeight:16,width:16,height:16,marginTop:-3}})}),variant:"regular",onClick:function(){ae(!0)},disabled:!I||!(0,N.F)(Se,[E.Ft.S3_GET_OBJECT,E.Ft.S3_GET_ACTIONS]),sx:Xe})}),(0,O.jsx)(K.Z,{tooltip:"Reload List",children:(0,O.jsx)(f.zxk,{id:"refresh-objects-list",label:"Refresh",icon:(0,O.jsx)(f.DuK,{}),variant:"regular",onClick:function(){S?t((0,k.Eq)(!0)):(t((0,k.o_)()),t((0,k._D)(!0)),t((0,k.Cn)(!0)))},disabled:!H&&(!(0,N.F)(Se,[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET])||u),sx:Xe})}),(0,O.jsx)("input",{type:"file",multiple:!0,onChange:Ae,style:{display:"none"},ref:Ne}),(0,O.jsx)("input",{type:"file",multiple:!0,onChange:Ae,style:{display:"none"},ref:Ie}),(0,O.jsx)(W,{bucketName:Se,uploadPath:ye.join("/"),uploadFileFunction:function(e){Ne&&Ne.current&&Ne.current.click(),e()},uploadFolderFunction:function(e){Ie&&Ie.current&&Ie.current.click(),e()},overrideStyles:Qe})]})})}),(0,O.jsxs)("div",(0,o.Z)((0,o.Z)({id:"object-list-wrapper"},Me({style:(0,o.Z)({},Ve)})),{},{children:[(0,O.jsx)("input",(0,o.Z)({},Ge())),(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.tableBlock,sx:{border:"#EAEDEE 1px solid",borderTop:0},children:[S?(0,O.jsx)(a.Fragment,{children:null!==w&&(0,O.jsx)(an,{internalPaths:w,bucketName:Se})}):(0,O.jsx)(N.s,{scopes:[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],resource:Se,errorProps:{disabled:!0},children:(0,O.jsxs)(x.ZP,{item:!0,xs:12,className:n.fullContainer,children:[!H&&(0,O.jsx)(x.ZP,{item:!0,xs:12,className:n.breadcrumbsContainer,children:(0,O.jsx)(B,{bucketName:Se,internalPaths:we,additionalOptions:!I||u?null:(0,O.jsx)("div",{children:(0,O.jsx)($e.Z,{name:"deleted_objects",id:"showDeletedObjects",value:"deleted_on",label:"Show deleted objects",onChange:function(){t((0,k.o_)()),t((0,k.mz)(!_)),Ye(!0)},checked:_,overrideLabelClasses:n.labelStyle,className:n.overrideShowDeleted,noTopMargin:!0})}),hidePathButton:!1})}),(0,O.jsx)(fn,{internalPaths:w})]})}),!H&&(0,O.jsx)(N.s,{scopes:[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],resource:Se,errorProps:{disabled:!0},children:(0,O.jsxs)(J,{open:C,closePanel:function(){Ye(!1)},className:"".concat(S?n.hideListOnSmall:""),children:[Be.length>0&&(0,O.jsx)(Ee,{items:en,title:"Selected Objects:"}),null!==w&&(0,O.jsx)(Je,{internalPaths:w,bucketName:Se,onClosePanel:Ye,versioningInfo:I,locking:L})]})})]})]}))]})]})},kn=t(49535),On=t(26824),Ln=t(73996),Pn=t(47974),Bn=t(4677),An=function(e){var n=e.bucketName,t=(0,d.TL)(),i=(0,r.v9)(hn.$4),o=(0,r.v9)((function(e){return e.objectBrowser.versionsMode})),c=(0,r.v9)((function(e){return e.objectBrowser.versionedFile})),l=(0,r.v9)((function(e){return e.objectBrowser.searchVersions})),u=!(null===i||void 0===i||!i.includes("object-browser-only")),h=(0,s.s0)(),m=(0,kn.Z)(n,[E.Ft.S3_GET_BUCKET_POLICY,E.Ft.S3_PUT_BUCKET_POLICY,E.Ft.S3_GET_BUCKET_VERSIONING,E.Ft.S3_PUT_BUCKET_VERSIONING,E.Ft.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,E.Ft.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,E.Ft.S3_DELETE_BUCKET,E.Ft.S3_GET_BUCKET_NOTIFICATIONS,E.Ft.S3_PUT_BUCKET_NOTIFICATIONS,E.Ft.S3_GET_REPLICATION_CONFIGURATION,E.Ft.S3_PUT_REPLICATION_CONFIGURATION,E.Ft.S3_GET_LIFECYCLE_CONFIGURATION,E.Ft.S3_PUT_LIFECYCLE_CONFIGURATION,E.Ft.ADMIN_GET_BUCKET_QUOTA,E.Ft.ADMIN_SET_BUCKET_QUOTA,E.Ft.S3_PUT_BUCKET_TAGGING,E.Ft.S3_GET_BUCKET_TAGGING,E.Ft.S3_LIST_BUCKET_VERSIONS,E.Ft.S3_GET_BUCKET_POLICY_STATUS,E.Ft.S3_DELETE_BUCKET_POLICY,E.Ft.S3_GET_ACTIONS,E.Ft.S3_PUT_ACTIONS]),p=(0,O.jsx)(a.Fragment,{children:o?(0,O.jsx)(a.Fragment,{children:(0,O.jsx)(gn.Z,{placeholder:"Start typing to filter versions of ".concat(c),onChange:function(e){t((0,k.Pr)(e))},value:l})}):(0,O.jsx)(N.s,{scopes:[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET],resource:n,errorProps:{disabled:!0},children:(0,O.jsx)(Zn,{})})});return(0,O.jsx)(a.Fragment,{children:u?(0,O.jsxs)(f.rjZ,{container:!0,sx:{padding:"20px 32px 0"},children:[(0,O.jsx)(f.rjZ,{children:(0,O.jsx)(Ln.Z,{marginRight:30,marginTop:10})}),(0,O.jsxs)(f.rjZ,{item:!0,xs:!0,sx:{display:"flex",gap:10},children:[p,(0,O.jsx)(Bn.Z,{})]})]}):(0,O.jsx)(Pn.Z,{label:(0,O.jsx)(f.hbI,{label:"Object Browser",onClick:function(){h(E.gA.OBJECT_BROWSER_VIEW)}}),actions:(0,O.jsx)(N.s,{scopes:E.D[E.EI.BUCKET_ADMIN],resource:n,errorProps:{disabled:!0},children:(0,O.jsx)(K.Z,{tooltip:m?"Configure Bucket":"You do not have the required permissions to configure this bucket. Please contact your MinIO administrator to request "+E.EI.BUCKET_ADMIN+" permisions.",children:(0,O.jsx)(f.zxk,{id:"configure-bucket-main",color:"primary","aria-label":"Configure Bucket",onClick:function(){return h("/buckets/".concat(n,"/admin"))},icon:(0,O.jsx)(f.ewm,{style:{width:20,height:20,marginTop:-3}}),style:{padding:"0 10px"}})})}),middleComponent:p})})},Dn=0,Rn=0,Un=!1,Mn=function e(n,t){if(!Un){Un=!0;var o=new URL(window.location.toString()),a=o.port,r=new URL(document.baseURI).pathname,s=(0,On.x2)(o.protocol);(i=new WebSocket("".concat(s,"://").concat(o.hostname,":").concat(a).concat(r,"ws/objectManager"))).onopen=function(){Un=!1,n&&n(),Rn=0},t&&(i.onmessage=t);var c=function(){Rn<=5?(e((function(){}),t),Rn+=1):console.error("Websocket not available.")};i.onclose=function(){Un=!1,console.warn("Websocket Disconnected. Attempting Reconnection..."),setTimeout(c,3e3)},i.onerror=function(){Un=!1,console.error("Error in websocket connection. Attempting reconnection...")}}},zn=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)({},u.Bz))}))((function(){var e=(0,d.TL)(),n=(0,s.UO)(),t=(0,s.TH)(),o=(0,r.v9)((function(e){return e.objectBrowser.loadingVersioning})),c=(0,r.v9)((function(e){return e.objectBrowser.rewind.rewindEnabled})),l=(0,r.v9)((function(e){return e.objectBrowser.rewind.dateToRewind})),u=(0,r.v9)((function(e){return e.objectBrowser.showDeleted})),h=(0,r.v9)((function(e){return e.console.session.allowResources})),m=(0,r.v9)((function(e){return e.objectBrowser.loadingObjects})),f=(0,r.v9)((function(e){return e.objectBrowser.loadingLocking})),p=(0,r.v9)((function(e){return e.objectBrowser.loadRecords})),x=(0,r.v9)((function(e){return e.objectBrowser.selectedInternalPaths})),b=(0,r.v9)((function(e){return e.objectBrowser.simplePath})),v=(0,r.v9)((function(e){return e.objectBrowser.isOpeningObjectDetail})),Z=(0,r.v9)((function(e){return e.system.anonymousMode})),S=n.bucketName||"",_=t.pathname.split("/browser/".concat(S,"/")),C=2===_.length?_[1]:"",w=(0,a.useCallback)((function(n){e((0,k.Cn)(!1));var t=JSON.parse(n.data.toString());if(Dn===t.request_id){if(t.request_id!==Dn)return;if("The Access Key Id you provided does not exist in our records."===t.error)window.location.reload();else if("Access Denied."===t.error){var i=t.prefix,o="";if(i){var a=(0,g.IO)(i);o=a.endsWith("/")?a:a+"/"}var r=(0,A.kh)(S,o,h||[]);return void(r&&0!==r.length?e((0,k.ZJ)(r)):e((0,F.Ih)({errorMessage:t.error,detailedError:t.error})))}if(t.request_end)return e((0,k.Cn)(!1)),void e((0,k._D)(!1));t.data&&e((0,k.rW)(t.data))}}),[e,h,S]),T=(0,a.useCallback)((function(n,t){if(i&&1===i.readyState)try{var o=Dn+1;e((0,k.o_)());var a={bucket_name:S,prefix:(0,g.LL)(n),mode:c||u?"rewind":"objects",date:t.toISOString(),request_id:o};i.send(JSON.stringify(a)),Dn=o}catch(r){console.error(r)}else{Mn((function(){T(n,t)}),w)}}),[S,c,u,e,w]);(0,a.useEffect)((function(){return function(){var e={mode:"cancel",request_id:Dn};i&&1===i.readyState&&i.send(JSON.stringify(e))}}),[]),(0,a.useEffect)((function(){var n=(0,g.IO)(C);e((0,k.IJ)(!0)),n.endsWith("/")||""===n?(e((0,k.vb)(!1)),e((0,k.EE)(null)),e((0,k.Su)(""===n?"/":n))):(e((0,k.vH)(!0)),e((0,k.vb)(!0)),e((0,k.Eq)(!0)),e((0,k.EE)("".concat(n?"".concat((0,g.LL)(n)):""))),e((0,k.Su)("".concat(n.split("/").slice(0,-1).join("/"),"/"))))}),[C,l,c,e]),(0,a.useEffect)((function(){if(!m&&!p&&!c&&!v){var n=(0,g.IO)(C);if(!n.endsWith("/")&&b!==n&&""!==n){(0,k._D)(!0);var t="".concat(n.split("/").slice(0,-1).join("/"),"/");T(t,new Date)}}e((0,k.d_)(!1))}),[m,p,e,C,T,c,b]);var y=(0,kn.Z)(S,[E.Ft.S3_LIST_BUCKET,E.Ft.S3_ALL_LIST_BUCKET])||Z;return(0,a.useEffect)((function(){if(m&&y){var n="";if(C){var t=(0,g.IO)(C);n=x===C?"".concat((0,g.IO)(C).split("/").slice(0,-1).join("/"),"/"):t.endsWith("/")?t:t+"/"}var i=new Date;c&&l&&(i=new Date(l)),T(n,i)}else e((0,k.Cn)(!1))}),[m,C,e,l,c,y,T]),(0,a.useEffect)((function(){e((0,k.db)({status:!1}))}),[C,e]),(0,a.useEffect)((function(){o&&!Z&&(y?j.Z.invoke("GET","/api/v1/buckets/".concat(S,"/versioning")).then((function(n){e((0,k.lS)(n)),e((0,k.IJ)(!1))})).catch((function(n){console.error("Error Getting Object Versioning Status: ",n.detailedError),e((0,k.IJ)(!1))})):(e((0,k.IJ)(!1)),e((0,k.o_)())))}),[S,o,e,y,Z]),(0,a.useEffect)((function(){f&&(y?j.Z.invoke("GET","/api/v1/buckets/".concat(S,"/object-locking")).then((function(n){e((0,k.lY)(n.object_locking_enabled)),e((0,k.Jn)(!1))})).catch((function(n){console.error("Error Getting Object Locking Status: ",n.detailedError),e((0,k.Jn)(!1))})):(e((0,k.o_)()),e((0,k.Jn)(!1))))}),[S,f,e,y]),(0,a.useEffect)((function(){f&&(y?j.Z.invoke("GET","/api/v1/buckets/".concat(S,"/object-locking")).then((function(n){e((0,k.lY)(n.object_locking_enabled)),(0,k.Jn)(!1)})).catch((function(e){console.error("Error Getting Object Locking Status: ",e.detailedError),(0,k.Jn)(!1)})):(e((0,k.o_)()),(0,k.Jn)(!1)))}),[S,f,e,y]),(0,O.jsxs)(a.Fragment,{children:[!Z&&(0,O.jsx)(An,{bucketName:S}),(0,O.jsx)(Fn,{})]})}))},34433:function(e,n,t){t.r(n),t.d(n,{default:function(){return T}});var i=t(29439),o=t(1413),a=t(72791),r=t(78687),s=t(75952),c=t(11135),l=t(25787),d=t(78029),u=t.n(d),h=t(61889),m=t(40986),f=t(23814),p=t(81207),x=t(56028),b=t(64163),v=t(30829),j=t(99779),g=t(21435),Z=t(80184),S=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},f.YI),f.Hr),{},{labelContainer:{display:"flex",alignItems:"center",marginBottom:15},fieldContainer:(0,o.Z)((0,o.Z)({},f.YI.fieldContainer),{},{display:"flex",alignItems:"center",justifyContent:"space-between",paddingBottom:10,marginTop:11,marginBottom:6}),dateInputContainer:{margin:"0 10px"},durationInputs:{display:"flex",alignItems:"center",justifyContent:"flex-start"},validityIndicator:{display:"flex",alignItems:"center",justifyContent:"flex-start",marginTop:25,marginLeft:10},invalidDurationText:{marginTop:15,display:"flex",color:"red",fontSize:11},reverseInput:{flexFlow:"row-reverse","& > label":{fontWeight:400,marginLeft:15,marginRight:25}},validityText:{fontSize:14,marginTop:15,display:"flex",alignItems:"center",justifyContent:"center","@media (max-width: 900px)":{flexFlow:"column"},"& > .min-icon":{color:"#5E5E5E",width:15,height:15,marginRight:10}},validTill:{fontWeight:"bold",marginLeft:15}}))}))((function(e){var n=e.classes,t=e.id,o=e.initialDate,r=e.label,c=e.maxDays,l=e.entity,d=e.onChange,u=(0,a.useState)(7),m=(0,i.Z)(u,2),f=m[0],p=m[1],x=(0,a.useState)(0),b=(0,i.Z)(x,2),S=b[0],_=b[1],C=(0,a.useState)(0),w=(0,i.Z)(C,2),T=w[0],y=w[1],N=(0,a.useState)(!0),E=(0,i.Z)(N,2),I=E[0],F=E[1],k=(0,a.useState)(j.ou.now()),O=(0,i.Z)(k,2),L=O[0],P=O[1];(0,a.useEffect)((function(){isNaN(S)||isNaN(f)||isNaN(T)||P(function(e,n,t,i){return j.ou.fromJSDate(e).plus({days:n,hours:t,minutes:i})}(o,f,S,T))}),[o,f,S,T]),(0,a.useEffect)((function(){if(I){var e=L.toFormat("yyyy-MM-dd HH:mm:ss");d(e.split(" ").join("T"),!0)}else d("0000-00-00",!1)}),[L,d,I]),(0,a.useEffect)((function(){var e=!0;(f<0||c&&f>c||isNaN(f))&&(e=!1),(S<0||S>23||isNaN(S))&&(e=!1),(T<0||T>59||isNaN(T))&&(e=!1),!c||f!==c||0===S&&0===T||(e=!1),F(e)}),[L,c,d,f,S,T]);var B={style:{textAlign:"center",paddingRight:10,paddingLeft:10,width:25},className:"removeArrows"};return(0,Z.jsx)(a.Fragment,{children:(0,Z.jsxs)(h.ZP,{container:!0,className:n.fieldContainer,children:[(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:n.labelContainer,children:(0,Z.jsx)(v.Z,{htmlFor:t,className:n.inputLabel,sx:{marginLeft:"10px"},children:(0,Z.jsx)("span",{children:r})})}),(0,Z.jsxs)(h.ZP,{item:!0,xs:12,className:n.durationInputs,children:[(0,Z.jsx)(h.ZP,{item:!0,className:n.dateInputContainer,children:(0,Z.jsx)(g.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:c?c.toString():"999",label:"Days",name:t,onChange:function(e){p(parseInt(e.target.value))},value:f.toString(),extraInputProps:B,noLabelMinWidth:!0})}),(0,Z.jsx)(h.ZP,{item:!0,className:n.dateInputContainer,children:(0,Z.jsx)(g.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"23",label:"Hours",name:t,onChange:function(e){_(parseInt(e.target.value))},value:S.toString(),extraInputProps:B,noLabelMinWidth:!0})}),(0,Z.jsx)(h.ZP,{item:!0,className:n.dateInputContainer,children:(0,Z.jsx)(g.Z,{id:t,className:n.reverseInput,type:"number",min:"0",max:"59",label:"Minutes",name:t,onChange:function(e){y(parseInt(e.target.value))},value:T.toString(),extraInputProps:B,noLabelMinWidth:!0})})]}),(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:"".concat(n.validityIndicator," ").concat(n.formFieldRow),children:I?(0,Z.jsxs)("div",{className:n.validityText,children:[(0,Z.jsx)(s.xPt,{}),(0,Z.jsxs)("div",{className:n.validityLabel,children:[l," will be available until:"]})," ",(0,Z.jsx)("div",{className:n.validTill,children:L.toFormat("MM/dd/yyyy HH:mm:ss")})]}):(0,Z.jsx)("div",{className:n.invalidDurationText,children:"Please select a valid duration."})})]})})})),_=t(45248),C=t(87995),w=t(81551),T=(0,l.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({shareLinkInfo:{fontSize:14,fontWeight:400},copyShareLink:{display:"flex","@media (max-width: 900px)":{flexFlow:"column",alignItems:"center",justifyContent:"center"}},copyShareLinkInput:{"& div:first-child":{marginTop:0},"@media (max-width: 900px)":{minWidth:250}}},f.ID),f.DF))}))((function(e){var n=e.classes,t=e.open,o=e.closeModalAndRefresh,c=e.bucketName,l=e.dataObject,d=(0,w.TL)(),f=(0,r.v9)(C.N5),v=(0,a.useState)(""),j=(0,i.Z)(v,2),g=j[0],T=j[1],y=(0,a.useState)(!0),N=(0,i.Z)(y,2),E=N[0],I=N[1],F=(0,a.useState)(!1),k=(0,i.Z)(F,2),O=k[0],L=k[1],P=(0,a.useState)(""),B=(0,i.Z)(P,2),A=B[0],D=B[1],R=(0,a.useState)(!0),U=(0,i.Z)(R,2),M=U[0],z=U[1],G=(0,a.useState)("null"),K=(0,i.Z)(G,2),W=K[0],H=K[1],J=new Date;return(0,a.useEffect)((function(){if(void 0===l.version_id)return f?(p.Z.invoke("GET","/api/v1/buckets/".concat(c,"/objects?prefix=").concat((0,_.LL)(l.name)).concat(f?"&with_versions=true":"")).then((function(e){var n=(e.objects||[]).find((function(e){return e.is_latest}));H(n?"".concat(n.version_id):"null")})).catch((function(e){d((0,C.zb)(e))})),void I(!1)):(H("null"),void I(!1));H(l.version_id||"null"),I(!1)}),[c,l,f,d]),(0,a.useEffect)((function(){if(M&&!E){L(!0),T("");var e=new Date("".concat(A)),n=new Date,t=Math.ceil((e.getTime()-n.getTime())/1e3);t>0&&p.Z.invoke("GET","/api/v1/buckets/".concat(c,"/objects/share?prefix=").concat((0,_.LL)(l.name),"&version_id=").concat(W).concat(""!==A?"&expires=".concat(t,"s"):"")).then((function(e){T(e),L(!1)})).catch((function(e){d((0,C.zb)(e)),T(""),L(!1)}))}}),[l,A,c,M,T,d,f,E,W]),(0,Z.jsx)(a.Fragment,{children:(0,Z.jsxs)(x.Z,{title:"Share File",titleIcon:(0,Z.jsx)(s.aAc,{style:{fill:"#4CCB92"}}),modalOpen:t,onClose:function(){o()},children:[E&&(0,Z.jsx)(h.ZP,{item:!0,xs:12,children:(0,Z.jsx)(m.Z,{})}),!E&&(0,Z.jsxs)(a.Fragment,{children:[(0,Z.jsxs)(h.ZP,{item:!0,xs:12,className:n.shareLinkInfo,children:["This is a temporary URL with integrated access credentials for sharing objects valid for up to 7 days.",(0,Z.jsx)("br",{}),(0,Z.jsx)("br",{}),"The temporary URL expires after the configured time limit."]}),(0,Z.jsx)("br",{}),(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:n.dateContainer,children:(0,Z.jsx)(S,{initialDate:J,id:"date",label:"Active for",maxDays:7,onChange:function(e,n){z(n),n?D(e):(D(""),T(""))},entity:"Link"})}),(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:"".concat(n.copyShareLink," ").concat(n.formFieldRow," "),children:(0,Z.jsx)(h.ZP,{item:!0,xs:12,className:n.copyShareLinkInput,children:(0,Z.jsx)(b.Z,{content:g,actionButton:(0,Z.jsx)(u(),{text:g,children:(0,Z.jsx)(s.zxk,{id:"copy-path",variant:"regular",onClick:function(){d((0,C.MK)("Share URL Copied to clipboard"))},disabled:""===g||O,style:{marginRight:"5px",width:"28px",height:"28px",padding:"0px"},icon:(0,Z.jsx)(s.TIy,{})})})})})})]})]})})}))},78562:function(e,n,t){t.r(n),t.d(n,{default:function(){return b}});var i=t(72791),o=t(56028),a=t(4942),r=t(29439),s=t(11135),c=t(25787),l=t(61889),d=t(40986),u=t(47922),h=t(45248),m=t(28182),f=t(80184),p=(0,c.Z)((function(){return(0,s.Z)({iframeContainer:{border:"0px",flex:"1 1 auto",width:"100%",height:250,backgroundColor:"transparent",borderRadius:5,"&.image":{height:500},"&.text":{height:700},"&.audio":{height:150},"&.video":{height:350},"&.fullHeight":{height:"calc(100vh - 185px)"}},iframeBase:{backgroundColor:"#fff"},iframeHidden:{display:"none"}})}))((function(e){var n=e.bucketName,t=e.object,o=e.isFullscreen,s=void 0!==o&&o,c=e.classes,p=(0,i.useState)(!0),x=(0,r.Z)(p,2),b=x[0],v=x[1],j="";if(t){var g=(0,h.LL)(t.name),Z=document.baseURI.replace(window.location.origin,"");j="".concat(window.location.origin).concat(Z,"api/v1/buckets/").concat(n,"/objects/download?preview=true&prefix=").concat(g),t.version_id&&(j=j.concat("&version_id=".concat(t.version_id)))}var S=(0,u.Bg)((null===t||void 0===t?void 0:t.name)||""),_=function(){v(!1)};return(0,f.jsxs)(i.Fragment,{children:[b&&(0,f.jsx)(l.ZP,{item:!0,xs:12,children:(0,f.jsx)(d.Z,{})}),(0,f.jsxs)("div",{style:{textAlign:"center"},children:["video"===S&&(0,f.jsx)("video",{style:{width:"auto",height:"auto",maxWidth:"calc(100vw - 100px)",maxHeight:"calc(100vh - 200px)"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:_,children:(0,f.jsx)("source",{src:j,type:"video/mp4"})}),"audio"===S&&(0,f.jsx)("audio",{style:{width:"100%",height:"auto"},autoPlay:!0,controls:!0,muted:!1,playsInline:!0,onPlay:_,children:(0,f.jsx)("source",{src:j,type:"audio/mpeg"})}),"image"===S&&(0,f.jsx)("img",{style:{width:"auto",height:"auto",maxWidth:"100vw",maxHeight:"100vh"},src:j,alt:"preview",onLoad:_}),"video"!==S&&"audio"!==S&&"image"!==S&&(0,f.jsx)("div",{className:(0,m.Z)(c.iframeBase,(0,a.Z)({},c.iframeHidden,b)),children:(0,f.jsx)("iframe",{src:j,title:"File Preview",allowTransparency:!0,className:"".concat(c.iframeContainer," ").concat(s?"fullHeight":S),onLoad:_,children:"File couldn't be loaded. Please try Download instead"})})]})]})})),x=t(75952),b=function(e){var n=e.open,t=e.bucketName,a=e.object,r=e.onClosePreview;return(0,f.jsx)(i.Fragment,{children:(0,f.jsx)(o.Z,{modalOpen:n,title:"Preview - ".concat(null===a||void 0===a?void 0:a.name),onClose:r,wideLimit:!1,titleIcon:(0,f.jsx)(x.$30,{}),children:(0,f.jsx)(p,{bucketName:t,object:a})})})}},47922:function(e,n,t){t.d(n,{Bg:function(){return s},LR:function(){return r},P_:function(){return c},kh:function(){return l}});var i=t(45248),o=t(76610),a=t(81551),r=function(e,n,t,r){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,c=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,d=arguments.length>7?arguments[7]:void 0,u=arguments.length>8?arguments[8]:void 0,h=arguments.length>9?arguments[9]:void 0,m=document.createElement("a");document.body.appendChild(m);var f=document.baseURI.replace(window.location.origin,""),p=a.ZP.getState().system.anonymousMode,x="".concat(window.location.origin).concat(f,"api/v1/buckets/").concat(e,"/objects/download?prefix=").concat(n).concat(null!==s&&""!==s.trim()?"&override_file_name=".concat((0,i.LL)(s||"")):"");t&&(x=x.concat("&version_id=".concat(t)));var b=new XMLHttpRequest;return b.open("GET",x,!0),p&&b.setRequestHeader("X-Anonymous","1"),b.addEventListener("progress",(function(e){var n=Math.round(e.loaded/r*100);l&&l(n)}),!1),b.responseType="blob",b.onreadystatechange=function(){if(4===b.readyState)if(200===b.status){var e=b.getResponseHeader("Content-Disposition"),n="download";if(e)n=decodeURIComponent(e).split('"')[1];d&&d(),(0,o.GM)(c);var t=document.createElement("a");t.href=window.URL.createObjectURL(b.response),t.download=n,document.body.appendChild(t),t.click(),document.body.removeChild(t)}else{if("application/json"===b.getResponseHeader("Content-Type")){var i=JSON.parse(b.response);if(i.detailedMessage)return void u(i.detailedMessage)}u("Unexpected response status code (".concat(b.status,")."))}},b.onerror=function(){u&&u("A network error occurred.")},b.onabort=function(){h&&h()},b},s=function(e){var n=e.split(".").pop();return n?(n=n.toLowerCase(),["jif","jfif","apng","avif","svg","webp","bmp","ico","jpg","jpe","jpeg","gif","png","heic"].includes(n)?"image":["pdf"].includes(n)?"text":["wav","mp3","alac","aiff","dsd","pcm"].includes(n)?"audio":["mp4","avi","mpg","webm","mov","flv","mkv","wmv","avchd","mpeg-4"].includes(n)?"video":"none"):"none"},c=function(e){switch(e){case"name":return function(e,n){return e.name.localeCompare(n.name)};case"last_modified":return function(e,n){return new Date(e.last_modified).getTime()-new Date(n.last_modified).getTime()};case"size":return function(e,n){return(e.size||-1)-(n.size||-1)}}},l=function(e,n,t){if(0===t.length)return null;var i=t.filter((function(n){return n.resource.endsWith(":".concat(e))||n.resource.includes(":".concat(e,"/"))}));if(0===i.length)return null;var o=[],a=n.split("/");return i.forEach((function(e){var n=(e.resource.split(":").pop()||"").split("/");n.length>1&&n.every((function(e,n){return"*"!==e&&((!a[n]||a[n]===e)&&(a[n]||o.push({name:"".concat(e,"/"),size:0,last_modified:"",version_id:""}),!0))})),"StringEquals"!==e.conditionOperator&&"StringLike"!==e.conditionOperator||e.prefixes.forEach((function(e){if(""!==e){var n=e.split("/"),t=[];n.every((function(e,n){return!e.includes("*")&&""!==e&&(e!==a[n]?(o.push({name:"".concat(t.join("/")).concat(t.length>0?"/":"").concat(e,"/"),size:0,last_modified:"",version_id:""}),!1):(""!==e&&t.push(e),!0))}))}}))})),o}},75578:function(e,n,t){var i=t(1413),o=t(72791),a=t(80184);n.Z=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(t){return(0,a.jsx)(o.Suspense,{fallback:n,children:(0,a.jsx)(e,(0,i.Z)({},t))})}}},81159:function(e,n,t){var i=t(4942),o=t(1413),a=t(72791),r=t(11135),s=t(25787),c=t(9955),l=t(30829),d=t(20068),u=t(20890),h=t(61889),m=t(23814),f=t(75952),p=t(28182),x=t(80184),b=(0,s.Z)((function(e){return{root:{width:50,height:24,padding:0,margin:0},switchBase:{padding:1,"&$checked":{transform:"translateX(24px)",color:e.palette.common.white,"& + $track":{backgroundColor:"#4CCB92",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,border:"none"}},"&$focusVisible $thumb":{color:"#4CCB92",border:"6px solid #fff"}},thumb:{width:22,height:22,backgroundColor:"#FAFAFA",border:"2px solid #FFFFFF",marginLeft:1},track:{borderRadius:12,backgroundColor:"#E2E2E2",boxShadow:"inset 0px 1px 4px rgba(0,0,0,0.1)",opacity:1,transition:e.transitions.create(["background-color","border"])},checked:{},focusVisible:{},switchContainer:{display:"flex",alignItems:"center",justifyContent:"flex-end"}}}))(c.Z);n.Z=(0,s.Z)((function(e){return(0,r.Z)((0,o.Z)((0,o.Z)({indicatorLabelOn:{fontWeight:"bold",color:"#081C42 !important"},indicatorLabel:{fontSize:12,color:"#E2E2E2",margin:"0 8px 0 10px"},fieldDescription:{marginTop:4,color:"#999999"},tooltip:{fontSize:16}},m.OR),m.YI))}))((function(e){var n=e.label,t=void 0===n?"":n,r=e.onChange,s=e.value,c=e.id,m=e.name,v=e.checked,j=void 0!==v&&v,g=e.disabled,Z=void 0!==g&&g,S=e.switchOnly,_=void 0!==S&&S,C=e.tooltip,w=void 0===C?"":C,T=e.description,y=void 0===T?"":T,N=e.classes,E=e.indicatorLabels,I=e.extraInputProps,F=void 0===I?{}:I,k=(0,x.jsxs)(a.Fragment,{children:[!_&&(0,x.jsx)("span",{className:(0,p.Z)(N.indicatorLabel,(0,i.Z)({},N.indicatorLabelOn,!j)),children:E&&E.length>1?E[1]:"OFF"}),(0,x.jsx)(b,{checked:j,onChange:r,color:"primary",name:m,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},F),disabled:Z,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s,id:c}),!_&&(0,x.jsx)("span",{className:(0,p.Z)(N.indicatorLabel,(0,i.Z)({},N.indicatorLabelOn,j)),children:E?E[0]:"ON"})]});return _?k:(0,x.jsx)("div",{children:(0,x.jsxs)(h.ZP,{container:!0,alignItems:"center",children:[(0,x.jsx)(h.ZP,{item:!0,xs:12,sm:8,md:8,children:""!==t&&(0,x.jsxs)(l.Z,{htmlFor:c,className:N.inputLabel,children:[(0,x.jsx)("span",{children:t}),""!==w&&(0,x.jsx)("div",{className:N.tooltipContainer,children:(0,x.jsx)(d.Z,{title:w,placement:"top-start",children:(0,x.jsx)("div",{className:N.tooltip,children:(0,x.jsx)(f.byK,{})})})})]})}),(0,x.jsx)(h.ZP,{item:!0,xs:12,sm:""!==t?4:12,md:""!==t?4:12,textAlign:"right",justifyContent:"end",className:N.switchContainer,children:k}),""!==y&&(0,x.jsx)(h.ZP,{item:!0,xs:12,textAlign:"left",children:(0,x.jsx)(u.Z,{component:"p",className:N.fieldDescription,children:y})})]})})}))},21435:function(e,n,t){var i=t(29439),o=t(1413),a=t(72791),r=t(27391),s=t(61889),c=t(30829),l=t(20068),d=t(13400),u=t(20165),h=t(3579),m=t(11135),f=t(72455),p=t(25787),x=t(23814),b=t(75952),v=t(28182),j=t(80184),g=(0,f.Z)((function(e){return(0,m.Z)((0,o.Z)({},x.gM))}));function Z(e){var n=g();return(0,j.jsx)(r.Z,(0,o.Z)({InputProps:{classes:n}},e))}n.Z=(0,p.Z)((function(e){return(0,m.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},x.YI),x.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}}}))}))((function(e){var n=e.label,t=e.onChange,r=e.value,m=e.id,f=e.name,p=e.type,x=void 0===p?"text":p,g=e.autoComplete,S=void 0===g?"off":g,_=e.disabled,C=void 0!==_&&_,w=e.multiline,T=void 0!==w&&w,y=e.tooltip,N=void 0===y?"":y,E=e.index,I=void 0===E?0:E,F=e.error,k=void 0===F?"":F,O=e.required,L=void 0!==O&&O,P=e.placeholder,B=void 0===P?"":P,A=e.min,D=e.max,R=e.overlayId,U=e.overlayIcon,M=void 0===U?null:U,z=e.overlayObject,G=void 0===z?null:z,K=e.extraInputProps,W=void 0===K?{}:K,H=e.overlayAction,J=e.noLabelMinWidth,V=void 0!==J&&J,Y=e.pattern,q=void 0===Y?"":Y,$=e.autoFocus,X=void 0!==$&&$,Q=e.classes,ee=e.className,ne=void 0===ee?"":ee,te=e.onKeyPress,ie=e.onFocus,oe=e.onPaste,ae=(0,o.Z)({"data-index":I},W),re=(0,a.useState)(!1),se=(0,i.Z)(re,2),ce=se[0],le=se[1];"number"===x&&A&&(ae.min=A),"number"===x&&D&&(ae.max=D),""!==q&&(ae.pattern=q);var de=M,ue=x;return"password"===x&&null===M&&(de=ce?(0,j.jsx)(u.Z,{}):(0,j.jsx)(h.Z,{}),ue=ce?"text":"password"),(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(s.ZP,{container:!0,className:(0,v.Z)(""!==ne?ne:"",""!==k?Q.errorInField:Q.inputBoxContainer),children:[""!==n&&(0,j.jsxs)(c.Z,{htmlFor:m,className:V?Q.noMinWidthLabel:Q.inputLabel,children:[(0,j.jsxs)("span",{children:[n,L?"*":""]}),""!==N&&(0,j.jsx)("div",{className:Q.tooltipContainer,children:(0,j.jsx)(l.Z,{title:N,placement:"top-start",children:(0,j.jsx)("div",{className:Q.tooltip,children:(0,j.jsx)(b.byK,{})})})})]}),(0,j.jsxs)("div",{className:Q.textBoxContainer,children:[(0,j.jsx)(Z,{id:m,name:f,fullWidth:!0,value:r,autoFocus:X,disabled:C,onChange:t,type:ue,multiline:T,autoComplete:S,inputProps:ae,error:""!==k,helperText:k,placeholder:B,className:Q.inputRebase,onKeyPress:te,onFocus:ie,onPaste:oe}),de&&(0,j.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,j.jsx)(d.Z,{onClick:H?function(){H()}:function(){return le(!ce)},id:R,size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:de})}),G&&(0,j.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:G})]})]})})}))},64163:function(e,n,t){var i=t(1413),o=t(72791),a=t(61889),r=t(11135),s=t(25787),c=t(23814),l=t(80184);n.Z=(0,s.Z)((function(e){return(0,r.Z)((0,i.Z)({},c.xx))}))((function(e){var n=e.classes,t=e.label,i=void 0===t?"":t,r=e.content,s=e.multiLine,c=void 0!==s&&s,d=e.actionButton;return(0,l.jsx)(o.Fragment,{children:(0,l.jsxs)(a.ZP,{className:n.prefinedContainer,children:[""!==i&&(0,l.jsx)(a.ZP,{item:!0,xs:12,className:n.predefinedTitle,children:i}),(0,l.jsxs)(a.ZP,{item:!0,xs:12,className:"".concat(n.predefinedList," ").concat(d?n.includesActionButton:""),children:[(0,l.jsx)(a.ZP,{item:!0,xs:12,className:c?n.innerContentMultiline:n.innerContent,children:r}),d&&(0,l.jsx)("div",{className:n.overlayShareOption,children:d})]})]})})}))},83679:function(e,n,t){var i=t(4942),o=t(1413),a=(t(72791),t(28182)),r=t(61889),s=t(10765),c=t(85523),l=t(61419),d=t(30829),u=t(20068),h=t(11135),m=t(25787),f=t(72455),p=t(23814),x=t(75952),b=t(80184),v=(0,f.Z)((0,o.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},p.FU)),j=function(e){var n=v();return(0,b.jsx)(l.Z,(0,o.Z)({className:n.root,disableRipple:!0,color:"default",checkedIcon:(0,b.jsx)("span",{className:n.radioSelectedIcon}),icon:(0,b.jsx)("span",{className:n.radioUnselectedIcon})},e))};n.Z=(0,m.Z)((function(e){return(0,h.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.YI),p.Hr),{},{optionLabel:{"&.Mui-disabled":{"& .MuiFormControlLabel-label":{color:"#9c9c9c"}},"&:last-child":{marginRight:0},"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E"}},checkedOption:{"& .MuiFormControlLabel-label":{fontSize:12,color:"#07193E",fontWeight:700}}}))}))((function(e){var n=e.selectorOptions,t=void 0===n?[]:n,o=e.currentSelection,l=e.label,h=e.id,m=e.name,f=e.onChange,p=e.tooltip,v=void 0===p?"":p,g=e.disableOptions,Z=void 0!==g&&g,S=e.classes,_=e.displayInColumn,C=void 0!==_&&_;return(0,b.jsxs)(r.ZP,{container:!0,spacing:1,children:[(0,b.jsx)(r.ZP,{item:!0,fontSize:60,children:(0,b.jsxs)(d.Z,{htmlFor:h,className:S.inputLabel,children:[(0,b.jsx)("span",{children:l}),""!==v&&(0,b.jsx)("div",{className:S.tooltipContainer,children:(0,b.jsx)(u.Z,{title:v,placement:"top-start",children:(0,b.jsx)("div",{children:(0,b.jsx)(x.byK,{})})})})]})}),(0,b.jsx)(r.ZP,{item:!0,children:(0,b.jsx)(s.Z,{"aria-label":h,id:h,name:m,value:o,onChange:f,row:!C,style:{display:"flex",textAlign:"right"},children:t.map((function(e){return(0,b.jsx)(c.Z,{value:e.value,control:(0,b.jsx)(j,{}),label:e.label,disabled:Z,className:(0,a.Z)(S.optionLabel,(0,i.Z)({},S.checkedOption,e.value===o))},"rd-".concat(m,"-").concat(e.value))}))})})]})}))},90673:function(e,n,t){var i=t(1413),o=t(72791),a=t(61889),r=t(4834),s=t(30829),c=t(20068),l=t(68096),d=t(58406),u=t(77865),h=t(11135),m=t(25787),f=t(23814),p=t(75952),x=t(80184),b=(0,m.Z)((function(e){return(0,h.Z)({root:{height:38,lineHeight:1,"label + &":{marginTop:e.spacing(3)}},input:{height:38,position:"relative",color:"#07193E",fontSize:13,fontWeight:600,padding:"8px 20px 10px 10px",border:"#e5e5e5 1px solid",borderRadius:4,display:"flex",alignItems:"center","&:hover":{borderColor:"#393939"},"&:focus":{backgroundColor:"#fff"}}})}))(r.ZP);n.Z=(0,m.Z)((function(e){return(0,h.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},f.YI),f.Hr),{},{fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var n=e.classes,t=e.id,i=e.name,r=e.onChange,h=e.options,m=e.label,f=e.tooltip,v=void 0===f?"":f,j=e.value,g=e.disabled,Z=void 0!==g&&g;return(0,x.jsx)(o.Fragment,{children:(0,x.jsxs)(a.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==m&&(0,x.jsxs)(s.Z,{htmlFor:t,className:n.inputLabel,children:[(0,x.jsx)("span",{children:m}),""!==v&&(0,x.jsx)("div",{className:n.tooltipContainer,children:(0,x.jsx)(c.Z,{title:v,placement:"top-start",children:(0,x.jsx)("div",{className:n.tooltip,children:(0,x.jsx)(p.byK,{})})})})]}),(0,x.jsx)(l.Z,{fullWidth:!0,children:(0,x.jsx)(d.Z,{id:t,name:i,value:j,onChange:r,input:(0,x.jsx)(b,{}),disabled:Z,children:h.map((function(e){return(0,x.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(i,"-").concat(e.label))}))})})]})})}))},14917:function(e,n,t){t(72791);var i=t(61889),o=t(72455),a=t(80184),r=(0,o.Z)((function(e){return{headerBarIcon:{marginRight:".7rem",color:e.palette.primary.main,"& .min-icon":{width:44,height:44},"@media (max-width: 600px)":{display:"none"}},headerBarSubheader:{color:"grey","@media (max-width: 900px)":{maxWidth:200}},stContainer:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:8,borderBottom:"1px solid #EAEAEA","@media (max-width: 600px)":{flexFlow:"column"}},titleColumn:{height:"auto",justifyContent:"center",display:"flex",flexFlow:"column",alignItems:"flex-start","& h1":{fontSize:19}},leftItems:{display:"flex",alignItems:"center","@media (max-width: 600px)":{flexFlow:"column",width:"100%"}},rightItems:{display:"flex",alignItems:"center","& button":{marginLeft:8},"@media (max-width: 600px)":{width:"100%"}}}}));n.Z=function(e){var n=e.icon,t=e.title,o=e.subTitle,s=e.actions,c=e.className,l=r();return(0,a.jsx)(i.ZP,{container:!0,children:(0,a.jsxs)(i.ZP,{item:!0,xs:12,className:"".concat(l.stContainer," ").concat(c||""),children:[(0,a.jsxs)("div",{className:l.leftItems,children:[n?(0,a.jsx)("div",{className:l.headerBarIcon,children:n}):null,(0,a.jsxs)("div",{className:l.titleColumn,children:[(0,a.jsx)("h1",{style:{margin:0},children:t}),(0,a.jsx)("span",{className:l.headerBarSubheader,children:o})]})]}),(0,a.jsx)("div",{className:l.rightItems,children:s})]})})}},73669:function(e,n,t){var i=t(29439),o=t(72791),a=t(64554),r=t(75952),s=t(21435),c=t(80184);n.Z=function(e){var n=e.value,t=(0,o.useState)(!1),l=(0,i.Z)(t,2),d=l[0],u=l[1];return(0,c.jsxs)(a.Z,{sx:{display:"flex",alignItems:"center",flexFlow:{sm:"row",xs:"column"}},children:[(0,c.jsx)(s.Z,{id:"inspect-dec-key",name:"inspect-dec-key",placeholder:"",label:"",type:d?"text":"password",onChange:function(){},value:n,overlayIcon:(0,c.jsx)(r.TIy,{}),extraInputProps:{readOnly:!0},overlayAction:function(){return navigator.clipboard.writeText(n)}}),(0,c.jsx)(r.zxk,{id:"show-hide-key",style:{marginLeft:"10px"},variant:"callAction",onClick:function(){return u(!d)},label:"Show/Hide"})]})}},26824:function(e,n,t){t.d(n,{HE:function(){return a},V9:function(){return i},ci:function(){return o},x2:function(){return r}});var i=1006,o=1008,a=1011,r=function(e){var n="ws";return"https:"===e&&(n="wss"),n}}}]); +//# sourceMappingURL=5522.72ab8875.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/5522.72ab8875.chunk.js.map b/portal-ui/build/static/js/5522.72ab8875.chunk.js.map new file mode 100644 index 000000000..cb5700d81 --- /dev/null +++ b/portal-ui/build/static/js/5522.72ab8875.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/5522.72ab8875.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddAccessRule.tsx","screens/Console/Buckets/BucketDetails/BrowserHandler.tsx","screens/Console/ObjectBrowser/BrowserBreadcrumbs.tsx","screens/Console/Buckets/ListBuckets/UploadFilesButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DetailsListPanel.tsx","screens/Console/Common/FormComponents/DateSelector/utils.ts","screens/Console/Common/FormComponents/DateSelector/DateSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetRetention.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteObject.tsx","utils/validationFunctions.ts","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SetLegalHoldModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ObjectMetaData.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectActionButton.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ActionsListSection.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/IconWithLabel.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/utils.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/TagsModal.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/InspectObject.tsx","screens/Console/ObjectBrowser/RenameLongFilename.tsx","screens/Console/ObjectBrowser/utils.ts","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ObjectDetailPanel.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/RestoreFileVersion.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/SpecificVersionPill.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/FileVersionItem.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/DeleteNonCurrent.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/DeleteSelectedVersions.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/VersionsNavigator.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsHelpers.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjectsTable.tsx","screens/Console/ObjectBrowser/objectBrowserThunks.ts","screens/Console/ObjectBrowser/FilterObjectsSB.tsx","screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx","screens/Console/ObjectBrowser/OBHeader.tsx","screens/Console/Common/FormComponents/DaysSelector/DaysSelector.tsx","screens/Console/Buckets/ListBuckets/Objects/ObjectDetails/ShareFile.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileContent.tsx","screens/Console/Buckets/ListBuckets/Objects/Preview/PreviewFileModal.tsx","screens/Console/Buckets/ListBuckets/Objects/utils.ts","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/PredefinedList/PredefinedList.tsx","screens/Console/Common/FormComponents/RadioGroupSelector/RadioGroupSelector.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","screens/Console/Common/ScreenTitle/ScreenTitle.tsx","screens/Console/Tools/KeyRevealer.tsx","utils/wsUtils.ts"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState, useEffect } from \"react\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { Grid } from \"@mui/material\";\nimport { AddAccessRuleIcon, Button } from \"mds\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IAddAccessRule {\n classes: any;\n modalOpen: boolean;\n onClose: () => any;\n bucket: string;\n prefilledRoute?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\nconst AddAccessRule = ({\n modalOpen,\n onClose,\n classes,\n bucket,\n prefilledRoute,\n}: IAddAccessRule) => {\n const dispatch = useAppDispatch();\n\n const [prefix, setPrefix] = useState(\"\");\n const [selectedAccess, setSelectedAccess] = useState(\"readonly\");\n\n useEffect(() => {\n if (prefilledRoute) {\n setPrefix(prefilledRoute);\n }\n }, [prefilledRoute]);\n\n const accessOptions = [\n { label: \"readonly\", value: \"readonly\" },\n { label: \"writeonly\", value: \"writeonly\" },\n { label: \"readwrite\", value: \"readwrite\" },\n ];\n\n const resetForm = () => {\n setPrefix(\"\");\n setSelectedAccess(\"readonly\");\n };\n\n const createProcess = () => {\n api\n .invoke(\"PUT\", `/api/v1/bucket/${bucket}/access-rules`, {\n prefix: prefix,\n access: selectedAccess,\n })\n .then((res: any) => {\n dispatch(setSnackBarMessage(\"Access Rule added successfully\"));\n onClose();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n onClose();\n });\n };\n\n return (\n }\n >\n \n \n {\n setPrefix(e.target.value);\n }}\n tooltip={\n \"Enter '/' to apply the rule to all prefixes and objects at the bucket root. Do not include the wildcard asterisk '*' as part of the prefix *unless* it is an explicit part of the prefix name. The Console automatically appends an asterisk to the appropriate sections of the resulting IAM policy.\"\n }\n />\n \n \n {\n setSelectedAccess(e.target.value);\n }}\n label=\"Access\"\n value={selectedAccess}\n options={accessOptions}\n disabled={false}\n />\n \n \n \n\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(AddAccessRule);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useCallback, useEffect } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useParams } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport { containerForHeader } from \"../../Common/FormComponents/common/styleLibrary\";\n\nimport ListObjects from \"../ListBuckets/Objects/ListObjects/ListObjects\";\nimport { IAM_SCOPES } from \"../../../../common/SecureComponent/permissions\";\nimport {\n newMessage,\n resetMessages,\n setIsOpeningOD,\n setIsVersioned,\n setLoadingLocking,\n setLoadingObjectInfo,\n setLoadingObjects,\n setLoadingRecords,\n setLoadingVersioning,\n setLoadingVersions,\n setLockingEnabled,\n setObjectDetailsView,\n setRecords,\n setSelectedObjectView,\n setSimplePathHandler,\n setVersionsModeEnabled,\n} from \"../../ObjectBrowser/objectBrowserSlice\";\nimport hasPermission from \"../../../../common/SecureComponent/accessControl\";\nimport { IMessageEvent } from \"websocket\";\nimport { wsProtocol } from \"../../../../utils/wsUtils\";\nimport {\n WebsocketRequest,\n WebsocketResponse,\n} from \"../ListBuckets/Objects/ListObjects/types\";\nimport { decodeURLString, encodeURLString } from \"../../../../common/utils\";\nimport { permissionItems } from \"../ListBuckets/Objects/utils\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\nimport api from \"../../../../common/api\";\nimport { BucketObjectLocking, BucketVersioningInfo } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport OBHeader from \"../../ObjectBrowser/OBHeader\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader,\n });\n\nlet objectsWS: WebSocket;\nlet currentRequestID: number = 0;\nlet errorCounter: number = 0;\nlet wsInFlight: boolean = false;\n\nconst initWSConnection = (\n openCallback?: () => void,\n onMessageCallback?: (message: IMessageEvent) => void\n) => {\n if (wsInFlight) {\n return;\n }\n wsInFlight = true;\n const url = new URL(window.location.toString());\n const isDev = process.env.NODE_ENV === \"development\";\n const port = isDev ? \"9090\" : url.port;\n\n // check if we are using base path, if not this always is `/`\n const baseLocation = new URL(document.baseURI);\n const baseUrl = baseLocation.pathname;\n\n const wsProt = wsProtocol(url.protocol);\n\n objectsWS = new WebSocket(\n `${wsProt}://${url.hostname}:${port}${baseUrl}ws/objectManager`\n );\n\n objectsWS.onopen = () => {\n wsInFlight = false;\n if (openCallback) {\n openCallback();\n }\n errorCounter = 0;\n };\n\n if (onMessageCallback) {\n objectsWS.onmessage = onMessageCallback;\n }\n\n const reconnectFn = () => {\n if (errorCounter <= 5) {\n initWSConnection(() => {}, onMessageCallback);\n errorCounter += 1;\n } else {\n console.error(\"Websocket not available.\");\n }\n };\n\n objectsWS.onclose = () => {\n wsInFlight = false;\n console.warn(\"Websocket Disconnected. Attempting Reconnection...\");\n\n // We reconnect after 3 seconds\n setTimeout(reconnectFn, 3000);\n };\n\n objectsWS.onerror = () => {\n wsInFlight = false;\n console.error(\"Error in websocket connection. Attempting reconnection...\");\n // Onclose will be triggered by specification, reconnect function will be executed there to avoid duplicated requests\n };\n};\n\nconst BrowserHandler = () => {\n const dispatch = useAppDispatch();\n const params = useParams();\n const location = useLocation();\n\n const loadingVersioning = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersioning\n );\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const rewindDate = useSelector(\n (state: AppState) => state.objectBrowser.rewind.dateToRewind\n );\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted\n );\n const allowResources = useSelector(\n (state: AppState) => state.console.session.allowResources\n );\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n const loadingLocking = useSelector(\n (state: AppState) => state.objectBrowser.loadingLocking\n );\n const loadRecords = useSelector(\n (state: AppState) => state.objectBrowser.loadRecords\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath\n );\n const isOpeningOD = useSelector(\n (state: AppState) => state.objectBrowser.isOpeningObjectDetail\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n\n const bucketName = params.bucketName || \"\";\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n /*WS Request Handlers*/\n const onMessageCallBack = useCallback(\n (message: IMessageEvent) => {\n // reset start status\n dispatch(setLoadingObjects(false));\n\n const response: WebsocketResponse = JSON.parse(message.data.toString());\n if (currentRequestID === response.request_id) {\n // If response is not from current request, we can omit\n if (response.request_id !== currentRequestID) {\n return;\n }\n\n if (\n response.error ===\n \"The Access Key Id you provided does not exist in our records.\"\n ) {\n // Session expired.\n window.location.reload();\n } else if (response.error === \"Access Denied.\") {\n const internalPathsPrefix = response.prefix;\n let pathPrefix = \"\";\n\n if (internalPathsPrefix) {\n const decodedPath = decodeURLString(internalPathsPrefix);\n\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n\n const permitItems = permissionItems(\n bucketName,\n pathPrefix,\n allowResources || []\n );\n\n if (!permitItems || permitItems.length === 0) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: response.error,\n detailedError: response.error,\n })\n );\n } else {\n dispatch(setRecords(permitItems));\n }\n\n return;\n }\n\n // This indicates final messages is received.\n if (response.request_end) {\n dispatch(setLoadingObjects(false));\n dispatch(setLoadingRecords(false));\n return;\n }\n\n if (response.data) {\n dispatch(newMessage(response.data));\n }\n }\n },\n [dispatch, allowResources, bucketName]\n );\n\n const initWSRequest = useCallback(\n (path: string, date: Date) => {\n if (objectsWS && objectsWS.readyState === 1) {\n try {\n const newRequestID = currentRequestID + 1;\n dispatch(resetMessages());\n\n const request: WebsocketRequest = {\n bucket_name: bucketName,\n prefix: encodeURLString(path),\n mode: rewindEnabled || showDeleted ? \"rewind\" : \"objects\",\n date: date.toISOString(),\n request_id: newRequestID,\n };\n\n objectsWS.send(JSON.stringify(request));\n\n // We store the new ID for the requestID\n currentRequestID = newRequestID;\n } catch (e) {\n console.error(e);\n }\n } else {\n // Socket is disconnected, we request reconnection but will need to recreate call\n const dupRequest = () => {\n initWSRequest(path, date);\n };\n initWSConnection(dupRequest, onMessageCallBack);\n }\n },\n [bucketName, rewindEnabled, showDeleted, dispatch, onMessageCallBack]\n );\n\n useEffect(() => {\n return () => {\n const request: WebsocketRequest = {\n mode: \"cancel\",\n request_id: currentRequestID,\n };\n\n if (objectsWS && objectsWS.readyState === 1) {\n objectsWS.send(JSON.stringify(request));\n }\n };\n }, []);\n\n useEffect(() => {\n const decodedIPaths = decodeURLString(internalPaths);\n\n dispatch(setLoadingVersioning(true));\n\n if (decodedIPaths.endsWith(\"/\") || decodedIPaths === \"\") {\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjectView(null));\n dispatch(\n setSimplePathHandler(decodedIPaths === \"\" ? \"/\" : decodedIPaths)\n );\n } else {\n dispatch(setLoadingObjectInfo(true));\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(\n setSelectedObjectView(\n `${decodedIPaths ? `${encodeURLString(decodedIPaths)}` : ``}`\n )\n );\n dispatch(\n setSimplePathHandler(\n `${decodedIPaths.split(\"/\").slice(0, -1).join(\"/\")}/`\n )\n );\n }\n }, [internalPaths, rewindDate, rewindEnabled, dispatch]);\n\n // Direct file access effect / prefix\n useEffect(() => {\n if (!loadingObjects && !loadRecords && !rewindEnabled && !isOpeningOD) {\n // No requests are in progress, We review current path, if it doesn't end in '/' and current list is empty then we trigger a new request.\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n if (\n !decodedInternalPaths.endsWith(\"/\") &&\n simplePath !== decodedInternalPaths &&\n decodedInternalPaths !== \"\"\n ) {\n setLoadingRecords(true);\n const parentPath = `${decodedInternalPaths\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n\n initWSRequest(parentPath, new Date());\n }\n }\n dispatch(setIsOpeningOD(false));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadingObjects,\n loadRecords,\n dispatch,\n internalPaths,\n initWSRequest,\n rewindEnabled,\n simplePath,\n ]);\n\n const displayListObjects =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || anonymousMode;\n\n // Common objects list\n useEffect(() => {\n // begin watch if bucketName in bucketList and start pressed\n if (loadingObjects && displayListObjects) {\n let pathPrefix = \"\";\n if (internalPaths) {\n const decodedPath = decodeURLString(internalPaths);\n\n // internalPaths are selected (file details), we split and get parent folder\n if (selectedInternalPaths === internalPaths) {\n pathPrefix = `${decodeURLString(internalPaths)\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\")}/`;\n } else {\n pathPrefix = decodedPath.endsWith(\"/\")\n ? decodedPath\n : decodedPath + \"/\";\n }\n }\n\n let requestDate = new Date();\n\n if (rewindEnabled && rewindDate) {\n requestDate = new Date(rewindDate);\n }\n initWSRequest(pathPrefix, requestDate);\n } else {\n dispatch(setLoadingObjects(false));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n loadingObjects,\n internalPaths,\n dispatch,\n rewindDate,\n rewindEnabled,\n displayListObjects,\n initWSRequest,\n ]);\n\n useEffect(() => {\n dispatch(setVersionsModeEnabled({ status: false }));\n }, [internalPaths, dispatch]);\n\n useEffect(() => {\n if (loadingVersioning && !anonymousMode) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/versioning`)\n .then((res: BucketVersioningInfo) => {\n dispatch(setIsVersioned(res));\n dispatch(setLoadingVersioning(false));\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Versioning Status: \",\n err.detailedError\n );\n dispatch(setLoadingVersioning(false));\n });\n } else {\n dispatch(setLoadingVersioning(false));\n dispatch(resetMessages());\n }\n }\n }, [\n bucketName,\n loadingVersioning,\n dispatch,\n displayListObjects,\n anonymousMode,\n ]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n dispatch(setLockingEnabled(res.object_locking_enabled));\n dispatch(setLoadingLocking(false));\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.detailedError\n );\n dispatch(setLoadingLocking(false));\n });\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingLocking(false));\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n useEffect(() => {\n if (loadingLocking) {\n if (displayListObjects) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/object-locking`)\n .then((res: BucketObjectLocking) => {\n dispatch(setLockingEnabled(res.object_locking_enabled));\n setLoadingLocking(false);\n })\n .catch((err: ErrorResponseHandler) => {\n console.error(\n \"Error Getting Object Locking Status: \",\n err.detailedError\n );\n setLoadingLocking(false);\n });\n } else {\n dispatch(resetMessages());\n setLoadingLocking(false);\n }\n }\n }, [bucketName, loadingLocking, dispatch, displayListObjects]);\n\n return (\n \n {!anonymousMode && }\n \n \n );\n};\n\nexport default withStyles(styles)(BrowserHandler);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { CSSObject } from \"styled-components\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Link, useNavigate } from \"react-router-dom\";\nimport { IconButton } from \"@mui/material\";\nimport { objectBrowserCommon } from \"../Common/FormComponents/common/styleLibrary\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { BackCaretIcon, Button, CopyIcon, NewPathIcon, Tooltip } from \"mds\";\nimport { hasPermission } from \"../../../common/SecureComponent\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport withSuspense from \"../Common/Components/withSuspense\";\nimport { setSnackBarMessage } from \"../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { setVersionsModeEnabled } from \"./objectBrowserSlice\";\n\nconst CreatePathModal = withSuspense(\n React.lazy(\n () => import(\"../Buckets/ListBuckets/Objects/ListObjects/CreatePathModal\")\n )\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...objectBrowserCommon,\n slashSpacingStyle: {\n margin: \"0 5px\",\n },\n })\n);\n\ninterface IObjectBrowser {\n bucketName: string;\n internalPaths: string;\n hidePathButton?: boolean;\n additionalOptions?: React.ReactNode;\n}\n\nconst BrowserBreadcrumbs = ({\n bucketName,\n internalPaths,\n hidePathButton,\n additionalOptions,\n}: IObjectBrowser) => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const [createFolderOpen, setCreateFolderOpen] = useState(false);\n\n const canCreatePath =\n hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]) || anonymousMode;\n\n let paths = internalPaths;\n\n if (internalPaths !== \"\") {\n paths = `/${internalPaths}`;\n }\n\n const splitPaths = paths.split(\"/\").filter((path) => path !== \"\");\n const lastBreadcrumbsIndex = splitPaths.length - 1;\n\n let breadcrumbsMap = splitPaths.map((objectItem: string, index: number) => {\n const subSplit = `${splitPaths.slice(0, index + 1).join(\"/\")}/`;\n const route = `/browser/${bucketName}/${\n subSplit ? `${encodeURLString(subSplit)}` : ``\n }`;\n\n if (index === lastBreadcrumbsIndex && objectItem === versionedFile) {\n return null;\n }\n\n return (\n \n /\n {index === lastBreadcrumbsIndex ? (\n {objectItem}\n ) : (\n {\n dispatch(\n setVersionsModeEnabled({ status: false, objectName: \"\" })\n );\n }}\n >\n {objectItem}\n \n )}\n \n );\n });\n\n let versionsItem: any[] = [];\n\n if (versionsMode) {\n versionsItem = [\n \n \n /\n {versionedFile} - Versions\n \n ,\n ];\n }\n\n const listBreadcrumbs: any[] = [\n \n {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n }}\n >\n {bucketName}\n \n ,\n ...breadcrumbsMap,\n ...versionsItem,\n ];\n\n const closeAddFolderModal = () => {\n setCreateFolderOpen(false);\n };\n\n const goBackFunction = () => {\n if (versionsMode) {\n dispatch(setVersionsModeEnabled({ status: false, objectName: \"\" }));\n } else {\n navigate(-1);\n }\n };\n\n let regularButtonOverride: CSSObject = {};\n\n if (colorVariants) {\n regularButtonOverride = {\n backgroundColor: \"transparent\",\n };\n }\n\n return (\n \n
\n {createFolderOpen && (\n \n )}\n \n \n \n \n
\n {listBreadcrumbs}\n
\n \n \n }\n variant={\"regular\"}\n onClick={() => {\n dispatch(setSnackBarMessage(\"Path copied to clipboard\"));\n }}\n style={{\n width: \"28px\",\n height: \"28px\",\n color: \"#969FA8\",\n border: \"#969FA8 1px solid\",\n marginRight: 5,\n }}\n />\n \n
{additionalOptions}
\n
\n {!hidePathButton && (\n \n {\n setCreateFolderOpen(true);\n }}\n disabled={anonymousMode ? false : rewindEnabled || !canCreatePath}\n icon={}\n style={{\n whiteSpace: \"nowrap\",\n }}\n variant={\"regular\"}\n label={\"Create new path\"}\n sx={regularButtonOverride}\n />\n \n )}\n
\n
{additionalOptions}
\n
\n );\n};\n\nexport default BrowserBreadcrumbs;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CSSObject } from \"styled-components\";\nimport { Menu, MenuItem } from \"@mui/material\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport ListItemIcon from \"@mui/material/ListItemIcon\";\nimport { Button, UploadFolderIcon, UploadIcon } from \"mds\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../common/SecureComponent\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\nimport { useSelector } from \"react-redux\";\nimport { AppState } from \"../../../../store\";\n\ninterface IUploadFilesButton {\n uploadPath: string;\n bucketName: string;\n forceDisable?: boolean;\n uploadFileFunction: (closeFunction: () => void) => void;\n uploadFolderFunction: (closeFunction: () => void) => void;\n classes: any;\n overrideStyles?: CSSObject;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n listUploadIcons: {\n height: 20,\n \"& .min-icon\": {\n width: 18,\n fill: \"rgba(0,0,0,0.87)\",\n },\n },\n });\n\nconst UploadFilesButton = ({\n uploadPath,\n bucketName,\n forceDisable = false,\n uploadFileFunction,\n uploadFolderFunction,\n classes,\n overrideStyles = {},\n}: IUploadFilesButton) => {\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const [anchorEl, setAnchorEl] = useState(null);\n const openUploadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseUpload = () => {\n setAnchorEl(null);\n };\n\n const uploadObjectAllowed =\n hasPermission(uploadPath, [\n IAM_SCOPES.S3_PUT_OBJECT,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]) || anonymousMode;\n const uploadFolderAllowed = hasPermission(\n bucketName,\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n false,\n true\n );\n\n const uploadEnabled: boolean = uploadObjectAllowed || uploadFolderAllowed;\n\n return (\n \n \n }\n variant={\"callAction\"}\n disabled={forceDisable || !uploadEnabled}\n sx={overrideStyles}\n />\n \n {\n handleCloseUpload();\n }}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"center\",\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"center\",\n }}\n >\n {\n uploadFileFunction(handleCloseUpload);\n }}\n disabled={!uploadObjectAllowed || forceDisable}\n >\n \n \n \n Upload File\n \n {\n uploadFolderFunction(handleCloseUpload);\n }}\n disabled={!uploadFolderAllowed || forceDisable}\n >\n \n \n \n Upload Folder\n \n \n \n );\n};\n\nexport default withStyles(styles)(UploadFilesButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Grid, IconButton } from \"@mui/material\";\nimport { ClosePanelIcon } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IDetailsListPanel {\n open: boolean;\n className?: string;\n closePanel: () => void;\n children: React.ReactNode;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n detailsList: {\n borderColor: \"#EAEDEE\",\n borderWidth: 0,\n borderStyle: \"solid\",\n borderRadius: 3,\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n width: 0,\n transitionDuration: \"0.3s\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n position: \"relative\",\n opacity: 0,\n marginLeft: -1,\n \"&.open\": {\n width: 300,\n minWidth: 300,\n borderLeftWidth: 1,\n opacity: 1,\n },\n \"@media (max-width: 799px)\": {\n \"&.open\": {\n width: \"100%\",\n minWidth: \"100%\",\n borderLeftWidth: 0,\n },\n },\n },\n closePanel: {\n position: \"absolute\",\n right: 0,\n top: 8,\n \"& .min-icon\": {\n width: 14,\n },\n },\n })\n);\n\nconst DetailsListPanel = ({\n open,\n closePanel,\n className = \"\",\n children,\n}: IDetailsListPanel) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n {children}\n \n );\n};\n\nexport default DetailsListPanel;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const months = [\n { value: \"01\", label: \"January\" },\n { value: \"02\", label: \"February\" },\n { value: \"03\", label: \"March\" },\n { value: \"04\", label: \"April\" },\n { value: \"05\", label: \"May\" },\n { value: \"06\", label: \"June\" },\n { value: \"07\", label: \"July\" },\n { value: \"08\", label: \"August\" },\n { value: \"09\", label: \"September\" },\n { value: \"10\", label: \"October\" },\n { value: \"11\", label: \"November\" },\n { value: \"12\", label: \"December\" },\n];\n\nexport const days = Array.from(Array(31), (_, num) => num + 1);\n\nconst currentYear = new Date().getFullYear();\n\nexport const years = Array.from(\n Array(25),\n (_, numYear) => numYear + currentYear\n);\n\nexport const validDate = (year: string, month: string, day: string): any[] => {\n const currentDate = Date.parse(`${year}-${month}-${day}`);\n\n if (isNaN(currentDate)) {\n return [false, \"\"];\n }\n\n const parsedMonth = parseInt(month);\n const parsedDay = parseInt(day);\n\n const monthForString = parsedMonth < 10 ? `0${parsedMonth}` : parsedMonth;\n const dayForString = parsedDay < 10 ? `0${parsedDay}` : parsedDay;\n\n const parsedDate = new Date(currentDate).toISOString().split(\"T\")[0];\n const dateString = `${year}-${monthForString}-${dayForString}`;\n\n return [parsedDate === dateString, dateString];\n};\n\n// twoDigitDate gets a two digit string number used for months or days\n// returns \"NaN\" if number is NaN\nexport const twoDigitDate = (num: number): string => {\n return num < 10 ? `0${num}` : `${num}`;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useState,\n} from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport { SelectChangeEvent } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport Tooltip from \"@mui/material/Tooltip\";\nimport FormControl from \"@mui/material/FormControl\";\nimport Select from \"@mui/material/Select\";\nimport MenuItem from \"@mui/material/MenuItem\";\nimport InputBase from \"@mui/material/InputBase\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport FormSwitchWrapper from \"../FormSwitchWrapper/FormSwitchWrapper\";\nimport { days, months, validDate, years } from \"./utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateInput: {\n \"&:not(:last-child)\": {\n marginRight: 22,\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n flex: 1,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n fieldContainerBorder: {\n borderBottom: \"#9c9c9c 1px solid\",\n marginBottom: 20,\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n \"& .MuiSelect-icon\": {\n color: \"#000\",\n \"&.Mui-disabled\": {\n color: \"#9c9c9c\",\n },\n },\n },\n input: {\n borderBottom: 0,\n fontSize: 12,\n },\n })\n)(InputBase);\n\ninterface IDateSelectorProps {\n classes: any;\n id: string;\n label: string;\n disableOptions?: boolean;\n addSwitch?: boolean;\n tooltip?: string;\n borderBottom?: boolean;\n value?: string;\n onDateChange: (date: string, isValid: boolean) => any;\n}\n\nconst DateSelector = forwardRef(\n (\n {\n classes,\n id,\n label,\n disableOptions = false,\n addSwitch = false,\n tooltip = \"\",\n borderBottom = false,\n onDateChange,\n value = \"\",\n }: IDateSelectorProps,\n ref: any\n ) => {\n useImperativeHandle(ref, () => ({ resetDate }));\n\n const [dateEnabled, setDateEnabled] = useState(false);\n const [month, setMonth] = useState(\"\");\n const [day, setDay] = useState(\"\");\n const [year, setYear] = useState(\"\");\n\n useEffect(() => {\n // verify if there is a current value\n // assume is in the format \"2021-12-30\"\n if (value !== \"\") {\n const valueSplit = value.split(\"-\");\n setYear(valueSplit[0]);\n setMonth(valueSplit[1]);\n // Turn to single digit to be displayed on dropdown buttons\n setDay(`${parseInt(valueSplit[2])}`);\n }\n }, [value]);\n\n useEffect(() => {\n const [isValid, dateString] = validDate(year, month, day);\n onDateChange(dateString, isValid);\n }, [month, day, year, onDateChange]);\n\n const resetDate = () => {\n setMonth(\"\");\n setDay(\"\");\n setYear(\"\");\n };\n\n const isDateDisabled = () => {\n if (disableOptions) {\n return disableOptions;\n } else if (addSwitch) {\n return !dateEnabled;\n } else {\n return false;\n }\n };\n\n const onMonthChange = (e: SelectChangeEvent) => {\n setMonth(e.target.value as string);\n };\n\n const onDayChange = (e: SelectChangeEvent) => {\n setDay(e.target.value as string);\n };\n\n const onYearChange = (e: SelectChangeEvent) => {\n setYear(e.target.value as string);\n };\n\n return (\n \n
\n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n {addSwitch && (\n {\n setDateEnabled(e.target.checked);\n if (!e.target.checked) {\n onDateChange(\"\", true);\n }\n }}\n switchOnly\n />\n )}\n
\n
\n
\n \n }\n >\n \n {\"\"}\n \n {months.map((option) => (\n \n {option.label}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {days.map((dayNumber) => (\n \n {dayNumber}\n \n ))}\n \n \n \n }\n >\n \n {\"\"}\n \n {years.map((year) => (\n \n {year}\n \n ))}\n \n \n
\n \n );\n }\n);\n\nexport default withStyles(styles)(DateSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useRef, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\n\nimport { twoDigitDate } from \"../../../../Common/FormComponents/DateSelector/utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport DateSelector from \"../../../../Common/FormComponents/DateSelector/DateSelector\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n dateSelector: {\n \"& div\": {\n borderBottom: 0,\n marginBottom: 0,\n\n \"& div:nth-child(2)\": {\n border: \"1px solid #EAEAEA\",\n paddingLeft: 5,\n\n \"& div\": {\n border: 0,\n },\n },\n },\n },\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (updateInfo: boolean) => void;\n objectName: string;\n bucketName: string;\n objectInfo: IFileInfo;\n}\n\ninterface IRefObject {\n resetDate: () => void;\n}\n\nconst SetRetention = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n objectInfo,\n bucketName,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [statusEnabled, setStatusEnabled] = useState(true);\n const [type, setType] = useState(\"\");\n const [date, setDate] = useState(\"\");\n const [isDateValid, setIsDateValid] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [alreadyConfigured, setAlreadyConfigured] = useState(false);\n\n useEffect(() => {\n if (objectInfo.retention_mode) {\n setType(objectInfo.retention_mode.toLowerCase());\n setAlreadyConfigured(true);\n }\n // get retention_until_date if defined\n if (objectInfo.retention_until_date) {\n const valueDate = new Date(objectInfo.retention_until_date);\n if (valueDate.toString() !== \"Invalid Date\") {\n const year = valueDate.getFullYear();\n const month = twoDigitDate(valueDate.getMonth() + 1);\n const day = valueDate.getDate();\n if (!isNaN(day) && month !== \"NaN\" && !isNaN(year)) {\n setDate(`${year}-${month}-${day}`);\n }\n }\n setAlreadyConfigured(true);\n }\n }, [objectInfo]);\n\n const dateElement = useRef(null);\n\n const dateFieldDisabled = () => {\n return !(statusEnabled && (type === \"governance\" || type === \"compliance\"));\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n const resetForm = () => {\n setStatusEnabled(false);\n setType(\"\");\n if (dateElement.current) {\n dateElement.current.resetDate();\n }\n };\n\n const addRetention = (\n selectedObject: string,\n versionId: string | null,\n expireDate: string\n ) => {\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`,\n {\n expires: expireDate,\n mode: type,\n }\n )\n .then((res: any) => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const disableRetention = (\n selectedObject: string,\n versionId: string | null\n ) => {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${bucketName}/objects/retention?prefix=${encodeURLString(\n selectedObject\n )}&version_id=${versionId}`\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const saveNewRetentionPolicy = () => {\n setIsSaving(true);\n const selectedObject = objectInfo.name;\n const versionId = objectInfo.version_id;\n\n const expireDate =\n !statusEnabled && type === \"governance\" ? \"\" : `${date}T23:59:59Z`;\n\n if (!statusEnabled && type === \"governance\") {\n disableRetention(selectedObject, versionId);\n\n return;\n }\n\n addRetention(selectedObject, versionId, expireDate);\n };\n\n const showSwitcher =\n alreadyConfigured && (type === \"governance\" || type === \"\");\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n
\n Selected Object: {objectName}\n
\n ) => {\n onSubmit(e);\n }}\n >\n {showSwitcher && (\n \n ) => {\n setStatusEnabled(!statusEnabled);\n }}\n label={\"Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n />\n \n )}\n \n {\n setType(e.target.value);\n }}\n selectorOptions={[\n { label: \"Governance\", value: \"governance\" },\n { label: \"Compliance\", value: \"compliance\" },\n ]}\n />\n \n \n {\n setIsDateValid(isValid);\n if (isValid) {\n setDate(date);\n }\n }}\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetRetention);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport useApi from \"../../../../Common/Hooks/useApi\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\nimport { BucketVersioningInfo } from \"../../../types\";\nimport { isVersionedMode } from \"../../../../../../utils/validationFunctions\";\n\ninterface IDeleteObjectProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n\n versioningInfo: BucketVersioningInfo | undefined;\n selectedVersion?: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n versioningInfo,\n selectedVersion = \"\",\n}: IDeleteObjectProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n\n // We close the modal box on access denied.\n if (err.detailedError === \"Access Denied.\") {\n closeDeleteModalAndRefresh(true);\n }\n };\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n const [deleteVersions, setDeleteVersions] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION]\n ) && retentionConfig?.mode === \"governance\";\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n const decodedSelectedObject = decodeURLString(selectedObject);\n const recursive = decodedSelectedObject.endsWith(\"/\");\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}${\n selectedVersion !== \"\"\n ? `&version_id=${selectedVersion}`\n : `&recursive=${recursive}&all_versions=${deleteVersions}`\n }${bypassGovernance ? \"&bypass=true\" : \"\"}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete:
\n {decodeURLString(selectedObject)}{\" \"}\n {selectedVersion !== \"\" ? (\n \n
\n
\n Version ID:\n
\n {selectedVersion}\n
\n ) : (\n \"\"\n )}\n ?
\n
\n {isVersionedMode(versioningInfo?.Status) &&\n selectedVersion === \"\" && (\n \n {\n setDeleteVersions(!deleteVersions);\n }}\n description=\"\"\n />\n \n )}\n {canBypass && (deleteVersions || selectedVersion !== \"\") && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n {deleteVersions && (\n \n \n This will remove the object as well as all of its versions,{\" \"}\n
\n This action is irreversible.\n \n
\n Are you sure you want to continue?\n
\n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport interface IValidation {\n fieldKey: string;\n required: boolean;\n pattern?: RegExp;\n customPatternMessage?: string;\n customValidation?: boolean; // The validation to trigger the error\n customValidationMessage?: string;\n value: string;\n}\n\nexport const commonFormValidation = (fieldsValidate: IValidation[]) => {\n let returnErrors: any = {};\n\n fieldsValidate.forEach((field) => {\n if (\n field.required &&\n typeof field.value !== \"undefined\" &&\n field.value.trim &&\n field.value.trim() === \"\"\n ) {\n returnErrors[field.fieldKey] = \"Field cannot be empty\";\n return;\n }\n // if it's not required and the value is empty, we are done here\n if (\n !field.required &&\n typeof field.value !== \"undefined\" &&\n field.value.trim &&\n field.value.trim() === \"\"\n ) {\n return;\n }\n\n if (field.customValidation && field.customValidationMessage) {\n returnErrors[field.fieldKey] = field.customValidationMessage;\n return;\n }\n\n if (field.pattern && field.customPatternMessage) {\n const rgx = new RegExp(field.pattern, \"g\");\n\n if (\n field.value &&\n field.value.trim() !== \"\" &&\n !field.value.match(rgx) &&\n typeof field.value !== \"undefined\"\n ) {\n returnErrors[field.fieldKey] = field.customPatternMessage;\n }\n return;\n }\n });\n\n return returnErrors;\n};\n\nexport const isVersionedMode = (status: string | undefined) => {\n return status === \"Enabled\" || status === \"Suspended\";\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport { Button } from \"mds\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\n\nimport { setModalErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface ISetRetentionProps {\n classes: any;\n open: boolean;\n closeModalAndRefresh: (reload: boolean) => void;\n objectName: string;\n bucketName: string;\n actualInfo: IFileInfo;\n}\n\nconst SetLegalHoldModal = ({\n classes,\n open,\n closeModalAndRefresh,\n objectName,\n bucketName,\n actualInfo,\n}: ISetRetentionProps) => {\n const dispatch = useAppDispatch();\n const [legalHoldEnabled, setLegalHoldEnabled] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const versionId = actualInfo.version_id;\n\n useEffect(() => {\n const status = get(actualInfo, \"legal_hold_status\", \"OFF\");\n setLegalHoldEnabled(status === \"ON\");\n }, [actualInfo]);\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n setIsSaving(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/legalhold?prefix=${encodeURLString(\n objectName\n )}&version_id=${versionId}`,\n { status: legalHoldEnabled ? \"enabled\" : \"disabled\" }\n )\n .then(() => {\n setIsSaving(false);\n closeModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSaving(false);\n });\n };\n\n const resetForm = () => {\n setLegalHoldEnabled(false);\n };\n\n return (\n {\n resetForm();\n closeModalAndRefresh(false);\n }}\n >\n \n Object: {bucketName}\n \n\n ) => {\n onSubmit(e);\n }}\n >\n \n ) => {\n setLegalHoldEnabled(!legalHoldEnabled);\n }}\n label={\"Legal Hold Status\"}\n indicatorLabels={[\"Enabled\", \"Disabled\"]}\n tooltip={\n \"To enable this feature you need to enable versioning on the bucket before creation\"\n }\n />\n \n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(SetLegalHoldModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { withStyles } from \"@mui/styles\";\nimport Grid from \"@mui/material/Grid\";\nimport { Box, Table, TableBody, TableCell, TableRow } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n detailsPanel,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\ninterface IObjectMetadata {\n metaData: any;\n classes?: any;\n linear?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n titleItem: {\n width: \"35%\",\n },\n ...spacingUtils,\n ...detailsPanel,\n });\n\nconst ObjectMetaData = ({\n metaData,\n classes,\n linear = false,\n}: IObjectMetadata) => {\n const metaKeys = Object.keys(metaData);\n\n if (linear) {\n return (\n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n {element}\n
\n {renderItem}\n \n );\n })}\n
\n );\n }\n\n return (\n \n \n \n Object Metadata\n \n \n\n \n \n \n {metaKeys.map((element: string, index: number) => {\n const renderItem = Array.isArray(metaData[element])\n ? metaData[element].map(decodeURIComponent).join(\", \")\n : decodeURIComponent(metaData[element]);\n\n return (\n \n \n {element}\n \n {renderItem}\n \n );\n })}\n \n
\n
\n \n );\n};\n\nexport default withStyles(styles)(ObjectMetaData);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport clsx from \"clsx\";\n\ntype ObjectActionButtonProps = {\n disabled?: boolean;\n onClick: () => void | any;\n icon: React.ReactNode;\n label: string;\n [x: string]: any;\n};\n\nconst styles = (theme: Theme) =>\n createStyles({\n root: {\n padding: \"0 15px\",\n height: 22,\n margin: 0,\n color: \"#5E5E5E\",\n fontWeight: \"normal\",\n fontSize: 14,\n whiteSpace: \"nowrap\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n \"&:hover\": {\n backgroundColor: \"transparent\",\n color: \"#000\",\n },\n \"& .min-icon\": {\n width: 11,\n },\n \"&:disabled\": {\n color: \"#EBEBEB\",\n borderColor: \"#EBEBEB\",\n },\n },\n });\n\n// TODO: Create an mds version of this.\nconst ObjectActionButton = ({\n disabled,\n onClick,\n icon,\n label,\n classes,\n ...restProps\n}: ObjectActionButtonProps) => {\n return (\n \n {label}\n \n );\n};\n\nexport default withStyles(styles)(ObjectActionButton);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ObjectActionButton from \"./ObjectActionButton\";\nimport { withStyles } from \"@mui/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { detailsPanel } from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = () =>\n createStyles({\n ...detailsPanel,\n });\n\nexport interface MultiSelectionItem {\n action: () => void;\n label: string;\n disabled: boolean;\n icon: React.ReactNode;\n tooltip: string;\n}\n\ninterface IActionsListSectionProps {\n items: MultiSelectionItem[];\n title: string | React.ReactNode;\n classes: any;\n}\n\nconst ActionsListSection = ({\n items,\n classes,\n title,\n}: IActionsListSectionProps) => {\n return (\n \n
{title}
\n
    \n
  • Actions:
  • \n {items.map((actionItem, index) => {\n return (\n
  • \n \n \n \n
  • \n );\n })}\n
\n
\n );\n};\n\nexport default withStyles(styles)(ActionsListSection);\n","import React from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\n\ninterface IIconWithLabel {\n classes: any;\n icon: JSX.Element;\n strings: string[];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n fileName: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 16,\n height: 16,\n marginRight: 4,\n minWidth: 16,\n minHeight: 16,\n },\n },\n fileNameText: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n },\n });\n\nconst IconWithLabel = ({ classes, icon, strings }: IIconWithLabel) => {\n return (\n
\n {icon}\n \n {strings[strings.length - 1]}\n \n
\n );\n};\n\nexport default withStyles(styles)(IconWithLabel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\nimport {\n FileBookIcon,\n FileCodeIcon,\n FileConfigIcon,\n FileDbIcon,\n FileFontIcon,\n FileImageIcon,\n FileLockIcon,\n FileMissingIcon,\n FileMusicIcon,\n FileNonType,\n FilePdfIcon,\n FilePptIcon,\n FileTxtIcon,\n FileVideoIcon,\n FileXlsIcon,\n FileZipIcon,\n FolderBrowserIcon,\n} from \"mds\";\nimport IconWithLabel from \"./IconWithLabel\";\n\ninterface IExtToIcon {\n icon: any;\n extensions: string[];\n}\n\nexport const extensionToIcon: IExtToIcon[] = [\n {\n icon: ,\n extensions: [\"mp4\", \"mov\", \"avi\", \"mpeg\", \"mpg\"],\n },\n {\n icon: ,\n extensions: [\"mp3\", \"m4a\", \"aac\"],\n },\n {\n icon: ,\n extensions: [\"pdf\"],\n },\n {\n icon: ,\n extensions: [\"ppt\", \"pptx\"],\n },\n {\n icon: ,\n extensions: [\"xls\", \"xlsx\"],\n },\n {\n icon: ,\n extensions: [\"cer\", \"crt\", \"pem\"],\n },\n {\n icon: ,\n extensions: [\"html\", \"xml\", \"css\", \"py\", \"go\", \"php\", \"cpp\", \"h\", \"java\"],\n },\n {\n icon: ,\n extensions: [\"cfg\", \"yaml\"],\n },\n {\n icon: ,\n extensions: [\"sql\"],\n },\n {\n icon: ,\n extensions: [\"ttf\", \"otf\"],\n },\n {\n icon: ,\n extensions: [\"doc\", \"docx\", \"txt\", \"rtf\"],\n },\n {\n icon: ,\n extensions: [\"zip\", \"rar\", \"tar\", \"gz\"],\n },\n {\n icon: ,\n extensions: [\"epub\", \"mobi\", \"azw\", \"azw3\"],\n },\n {\n icon: ,\n extensions: [\"jpeg\", \"jpg\", \"gif\", \"tiff\", \"png\", \"heic\", \"dng\"],\n },\n];\n\nexport const displayFileIconName = (\n element: string,\n returnOnlyIcon: boolean = false\n) => {\n let elementString = element;\n let icon = ;\n // Element is a folder\n if (element.endsWith(\"/\")) {\n icon = ;\n elementString = element.slice(0, -1);\n }\n\n const lowercaseElement = element.toLowerCase();\n for (const etc of extensionToIcon) {\n for (const ext of etc.extensions) {\n if (lowercaseElement.endsWith(`.${ext}`)) {\n icon = etc.icon;\n }\n }\n }\n\n if (!element.endsWith(\"/\") && element.indexOf(\".\") < 0) {\n icon = ;\n }\n\n const splitItem = elementString.split(\"/\");\n\n if (returnOnlyIcon) {\n return icon;\n }\n\n return ;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { Box, Grid } from \"@mui/material\";\nimport { AddNewTagIcon, Button, DisabledIcon, EditTagIcon } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../../../common/api\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../../../../common/SecureComponent\";\nimport Chip from \"@mui/material/Chip\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\ninterface ITagModal {\n modalOpen: boolean;\n bucketName: string;\n actualInfo: IFileInfo;\n onCloseAndUpdate: (refresh: boolean) => void;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n newTileHeader: {\n fontSize: 18,\n fontWeight: \"bold\",\n color: \"#000\",\n margin: \"35px 0\",\n paddingBottom: 15,\n display: \"flex\",\n alignItems: \"center\",\n \"& > svg\": {\n marginRight: 10,\n },\n },\n tagsForLabel: {\n fontSize: 16,\n margin: \"20px 0 30px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n width: \"100%\",\n },\n currentTagsContainer: {\n fontSize: 14,\n fontWeight: \"normal\",\n },\n noTagsForObject: {\n color: \"#858585\",\n },\n deleteTag: {\n color: \"#C83B51\",\n marginLeft: 5,\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddTagModal = ({\n modalOpen,\n onCloseAndUpdate,\n bucketName,\n actualInfo,\n classes,\n}: ITagModal) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\n const [deleteEnabled, setDeleteEnabled] = useState(false);\n const [deleteKey, setDeleteKey] = useState(\"\");\n const [deleteLabel, setDeleteLabel] = useState(\"\");\n\n const selectedObject = encodeURLString(actualInfo.name);\n const currentTags = actualInfo.tags;\n const currTagKeys = Object.keys(currentTags || {});\n\n const allPathData = actualInfo.name.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n const resetForm = () => {\n setNewLabel(\"\");\n setNewKey(\"\");\n };\n\n const addTagProcess = () => {\n setIsSending(true);\n const newTag: any = {};\n\n newTag[newKey] = newLabel;\n const newTagList = { ...currentTags, ...newTag };\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: newTagList }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const deleteTagProcess = () => {\n const cleanObject: any = { ...currentTags };\n delete cleanObject[deleteKey];\n\n const verID = distributedSetup ? actualInfo.version_id : \"null\";\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/tags?prefix=${selectedObject}&version_id=${verID}`,\n { tags: cleanObject }\n )\n .then((res: any) => {\n onCloseAndUpdate(true);\n setIsSending(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setIsSending(false);\n });\n };\n\n const onDeleteTag = (tagKey: string, tag: string) => {\n setDeleteKey(tagKey);\n setDeleteLabel(tag);\n setDeleteEnabled(true);\n };\n\n const cancelDelete = () => {\n setDeleteKey(\"\");\n setDeleteLabel(\"\");\n setDeleteEnabled(false);\n };\n\n const tagsFor = (plural: boolean) => (\n
\n Tag{plural ? \"s\" : \"\"} for: {currentItem}\n
\n );\n\n return (\n \n Delete Tag
\n ) : (\n `Edit Tags`\n )\n }\n onClose={() => {\n onCloseAndUpdate(true);\n }}\n titleIcon={\n deleteEnabled ? (\n \n ) : (\n \n )\n }\n >\n {deleteEnabled ? (\n \n \n {tagsFor(false)}\n Are you sure you want to delete the tag{\" \"}\n \n {deleteKey} : {deleteLabel}\n {\" \"}\n ?\n \n \n \n \n \n \n ) : (\n \n \n \n {tagsFor(true)}\n
\n Current Tags:\n
\n {currTagKeys.length === 0 ? (\n \n There are no tags for this object\n \n ) : (\n \n )}\n \n {currTagKeys.map((tagKey: string, index: number) => {\n const tag = get(currentTags, `${tagKey}`, \"\");\n if (tag !== \"\") {\n return (\n \n }\n onDelete={() => {\n onDeleteTag(tagKey, tag);\n }}\n />\n \n );\n }\n return null;\n })}\n \n
\n \n \n \n \n \n Add New Tag\n \n \n {\n setNewKey(e.target.value);\n }}\n />\n \n \n {\n setNewLabel(e.target.value);\n }}\n />\n \n \n \n \n \n \n \n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(AddTagModal);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Button, InspectMenuIcon, PasswordKeyIcon } from \"mds\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n decodeURLString,\n deleteCookie,\n encodeURLString,\n getCookieValue,\n performDownload,\n} from \"../../../../../../common/utils\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Box, DialogContentText } from \"@mui/material\";\nimport KeyRevealer from \"../../../../Tools/KeyRevealer\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\ninterface IInspectObjectProps {\n classes: any;\n closeInspectModalAndRefresh: (refresh: boolean) => void;\n inspectOpen: boolean;\n inspectPath: string;\n volumeName: string;\n}\n\nconst InspectObject = ({\n classes,\n closeInspectModalAndRefresh,\n inspectOpen,\n inspectPath,\n volumeName,\n}: IInspectObjectProps) => {\n const dispatch = useAppDispatch();\n const onClose = () => closeInspectModalAndRefresh(false);\n const [isEncrypt, setIsEncrypt] = useState(true);\n const [decryptionKey, setDecryptionKey] = useState(\"\");\n const [insFileName, setInsFileName] = useState(\"\");\n\n if (!inspectPath) {\n return null;\n }\n const makeRequest = async (url: string) => {\n return await fetch(url, { method: \"GET\" });\n };\n\n const performInspect = async () => {\n const file = encodeURLString(inspectPath + \"/xl.meta\");\n const volume = encodeURLString(volumeName);\n\n const urlOfInspectApi = `/api/v1/admin/inspect?volume=${volume}&file=${file}&encrypt=${isEncrypt}`;\n\n makeRequest(urlOfInspectApi)\n .then(async (res) => {\n if (!res.ok) {\n const resErr: any = await res.json();\n\n dispatch(\n setErrorSnackMessage({\n errorMessage: resErr.message,\n detailedError: resErr.code,\n })\n );\n }\n const blob: Blob = await res.blob();\n\n //@ts-ignore\n const filename = res.headers.get(\"content-disposition\").split('\"')[1];\n const decryptKey = getCookieValue(filename) || \"\";\n\n performDownload(blob, filename);\n setInsFileName(filename);\n if (decryptKey === \"\") {\n onClose();\n return;\n }\n setDecryptionKey(decryptKey);\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n };\n\n const onCloseDecKeyModal = () => {\n deleteCookie(insFileName);\n onClose();\n setDecryptionKey(\"\");\n };\n\n const onSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n };\n\n return (\n \n {!decryptionKey && (\n }\n title={`Inspect Object`}\n onClose={onClose}\n >\n ) => {\n onSubmit(e);\n }}\n >\n Would you like to encrypt {decodeURLString(inspectPath)}?{\" \"}\n
\n {\n setIsEncrypt(!isEncrypt);\n }}\n description=\"\"\n />\n \n \n \n \n \n )}\n {decryptionKey ? (\n }\n >\n \n \n This will be displayed only once. It cannot be recovered.\n
\n Use secure medium to share this key.\n
\n \n \n \n
\n \n ) : null}\n
\n );\n};\n\nexport default withStyles(styles)(InspectObject);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { Button, EditIcon } from \"mds\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport {\n containerForHeader,\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"../Buckets/ListBuckets/Objects/ObjectDetails/types\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { useAppDispatch } from \"../../../store\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FormSwitchWrapper from \"../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\n\ninterface IRenameLongFilename {\n open: boolean;\n bucketName: string;\n internalPaths: string;\n currentItem: string;\n actualInfo: IFileInfo;\n closeModal: () => void;\n}\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...modalStyleUtils,\n ...formFieldStyles,\n ...spacingUtils,\n ...containerForHeader,\n })\n);\n\nconst RenameLongFileName = ({\n open,\n closeModal,\n currentItem,\n internalPaths,\n actualInfo,\n bucketName,\n}: IRenameLongFilename) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n\n const [newFileName, setNewFileName] = useState(currentItem);\n const [acceptLongName, setAcceptLongName] = useState(false);\n\n const doDownload = (e: React.FormEvent) => {\n e.preventDefault();\n\n const identityDownload = encodeURLString(\n `${bucketName}-${\n actualInfo.name\n }-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n actualInfo.version_id,\n parseInt(actualInfo.size || \"0\"),\n newFileName,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: newFileName,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n closeModal();\n };\n\n return (\n }\n >\n
\n The file you are trying to download has a long name.\n
\n This can cause issues on Windows Systems by trimming the file name after\n download.\n
\n
We recommend to rename the file download\n
\n ) => {\n doDownload(e);\n }}\n >\n \n \n \n ) => {\n setNewFileName(event.target.value);\n }}\n label=\"\"\n type={\"text\"}\n value={newFileName}\n error={\n newFileName.length > 200 && !acceptLongName\n ? \"Filename should be less than 200 characters long.\"\n : \"\"\n }\n />\n \n \n ) => {\n setAcceptLongName(event.target.checked);\n if (event.target.checked) {\n setNewFileName(currentItem);\n }\n }}\n label={\"Use Original Name\"}\n />\n \n \n \n 200 && !acceptLongName}\n label={\"Download File\"}\n />\n \n \n \n \n );\n};\n\nexport default RenameLongFileName;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { IFileInfo } from \"../Buckets/ListBuckets/Objects/ObjectDetails/types\";\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLongFileOpen,\n setNewObject,\n updateProgress,\n} from \"./objectBrowserSlice\";\nimport { AppDispatch } from \"../../../store\";\n\nexport const downloadObject = (\n dispatch: AppDispatch,\n bucketName: string,\n internalPaths: string,\n object: IFileInfo\n) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n if (object.name.length > 200 && getClientOS().toLowerCase().includes(\"win\")) {\n dispatch(setLongFileOpen(true));\n return;\n }\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Box } from \"@mui/material\";\nimport { withStyles } from \"@mui/styles\";\nimport { CSSObject } from \"styled-components\";\nimport {\n Button,\n DeleteIcon,\n DownloadIcon,\n InspectMenuIcon,\n LegalHoldIcon,\n Loader,\n MetadataIcon,\n ObjectInfoIcon,\n PreviewIcon,\n RetentionIcon,\n ShareIcon,\n TagsIcon,\n VersionsIcon,\n} from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport get from \"lodash/get\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n detailsPanel,\n spacingUtils,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo, MetadataResponse } from \"../ObjectDetails/types\";\nimport { extensionPreview } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n niceBytes,\n niceBytesInt,\n niceDaysInt,\n} from \"../../../../../../common/utils\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport api from \"../../../../../../common/api\";\nimport ShareFile from \"../ObjectDetails/ShareFile\";\nimport SetRetention from \"../ObjectDetails/SetRetention\";\nimport DeleteObject from \"../ListObjects/DeleteObject\";\nimport SetLegalHoldModal from \"../ObjectDetails/SetLegalHoldModal\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport ObjectMetaData from \"../ObjectDetails/ObjectMetaData\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport { displayFileIconName } from \"./utils\";\nimport TagsModal from \"../ObjectDetails/TagsModal\";\nimport InspectObject from \"./InspectObject\";\nimport { selDistSet } from \"../../../../../../systemSlice\";\nimport {\n setLoadingObjectInfo,\n setLoadingVersions,\n setSelectedVersion,\n setVersionsModeEnabled,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { BucketVersioningInfo } from \"../../../types\";\n\nconst styles = () =>\n createStyles({\n ObjectDetailsTitle: {\n display: \"flex\",\n alignItems: \"center\",\n \"& .min-icon\": {\n width: 26,\n height: 26,\n minWidth: 26,\n minHeight: 26,\n },\n },\n objectNameContainer: {\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n alignItems: \"center\",\n marginLeft: 10,\n },\n headerForSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 15,\n borderBottom: \"#E2E2E2 2px solid\",\n fontWeight: \"bold\",\n fontSize: 18,\n color: \"#000\",\n margin: \"20px 22px\",\n },\n capitalizeFirst: {\n textTransform: \"capitalize\",\n },\n\n ...actionsTray,\n ...spacingUtils,\n ...textStyleUtils,\n ...detailsPanel,\n });\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\ninterface IObjectDetailPanelProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n versioningInfo: BucketVersioningInfo;\n locking: boolean;\n onClosePanel: (hardRefresh: boolean) => void;\n}\n\nconst ObjectDetailPanel = ({\n classes,\n internalPaths,\n bucketName,\n versioningInfo,\n locking,\n onClosePanel,\n}: IObjectDetailPanelProps) => {\n const dispatch = useAppDispatch();\n\n const distributedSetup = useSelector(selDistSet);\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n const loadingObjectInfo = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjectInfo\n );\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [retentionModalOpen, setRetentionModalOpen] = useState(false);\n const [tagModalOpen, setTagModalOpen] = useState(false);\n const [legalholdOpen, setLegalholdOpen] = useState(false);\n const [inspectModalOpen, setInspectModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [allInfoElements, setAllInfoElements] = useState([]);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [totalVersionsSize, setTotalVersionsSize] = useState(0);\n const [longFileOpen, setLongFileOpen] = useState(false);\n const [metaData, setMetaData] = useState(null);\n const [loadMetadata, setLoadingMetadata] = useState(false);\n\n const internalPathsDecoded = decodeURLString(internalPaths) || \"\";\n const allPathData = internalPathsDecoded.split(\"/\");\n const currentItem = allPathData.pop() || \"\";\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (distributedSetup && allInfoElements && allInfoElements.length >= 1) {\n let infoElement =\n allInfoElements.find((el: IFileInfo) => el.is_latest) || emptyFile;\n\n if (selectedVersion !== \"\") {\n infoElement =\n allInfoElements.find(\n (el: IFileInfo) => el.version_id === selectedVersion\n ) || emptyFile;\n }\n\n if (!infoElement.is_delete_marker) {\n setLoadingMetadata(true);\n }\n\n setActualInfo(infoElement);\n }\n }, [selectedVersion, distributedSetup, allInfoElements]);\n\n useEffect(() => {\n if (loadingObjectInfo && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: { objects: IFileInfo[] }) => {\n const result: IFileInfo[] = res.objects || [];\n if (distributedSetup) {\n setAllInfoElements(result);\n setVersions(result);\n\n const tVersionSize = result.reduce(\n (acc: number, currValue: IFileInfo): number => {\n if (currValue?.size) {\n return acc + parseInt(currValue.size);\n }\n return acc;\n },\n 0\n );\n\n setTotalVersionsSize(tVersionSize);\n } else {\n const resInfo = result[0];\n\n setActualInfo(resInfo);\n setVersions([]);\n\n if (!resInfo.is_delete_marker) {\n setLoadingMetadata(true);\n }\n }\n\n dispatch(setLoadingObjectInfo(false));\n })\n .catch((error: ErrorResponseHandler) => {\n console.error(\"Error loading object details\", error);\n dispatch(setLoadingObjectInfo(false));\n });\n }\n }, [\n loadingObjectInfo,\n bucketName,\n internalPaths,\n dispatch,\n distributedSetup,\n selectedVersion,\n ]);\n\n useEffect(() => {\n if (loadMetadata && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/metadata?prefix=${internalPaths}`\n )\n .then((res: MetadataResponse) => {\n let metadata = get(res, \"objectMetadata\", {});\n\n setMetaData(metadata);\n setLoadingMetadata(false);\n })\n .catch((err) => {\n console.error(\"Error Getting Metadata Status: \", err.detailedError);\n setLoadingMetadata(false);\n });\n }\n }, [bucketName, internalPaths, loadMetadata]);\n\n let tagKeys: string[] = [];\n\n if (actualInfo && actualInfo.tags) {\n tagKeys = Object.keys(actualInfo.tags);\n }\n\n const openRetentionModal = () => {\n setRetentionModalOpen(true);\n };\n\n const closeRetentionModal = (updateInfo: boolean) => {\n setRetentionModalOpen(false);\n if (updateInfo) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n };\n\n const closeFileOpen = () => {\n setLongFileOpen(false);\n };\n\n const closeDeleteModal = (closeAndReload: boolean) => {\n setDeleteOpen(false);\n\n if (closeAndReload && selectedVersion === \"\") {\n onClosePanel(true);\n } else {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeAddTagModal = (reloadObjectData: boolean) => {\n setTagModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeInspectModal = (reloadObjectData: boolean) => {\n setInspectModalOpen(false);\n if (reloadObjectData) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeLegalholdModal = (reload: boolean) => {\n setLegalholdOpen(false);\n if (reload) {\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const loaderForContainer = (\n
\n \n
\n );\n\n if (!actualInfo) {\n if (loadingObjectInfo) {\n return loaderForContainer;\n }\n\n return null;\n }\n\n const objectName =\n objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name;\n\n const objectResources = [\n bucketName,\n currentItem,\n [bucketName, actualInfo.name].join(\"/\"),\n ];\n const canSetLegalHold = hasPermission(bucketName, [\n IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canSetTags = hasPermission(objectResources, [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const canChangeRetention = hasPermission(\n objectResources,\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n true\n );\n const canInspect = hasPermission(objectResources, [\n IAM_SCOPES.ADMIN_INSPECT_DATA,\n ]);\n const canChangeVersioning = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n const canGetObject = hasPermission(objectResources, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(\n [bucketName, currentItem, [bucketName, actualInfo.name].join(\"/\")],\n [IAM_SCOPES.S3_DELETE_OBJECT]\n );\n\n const multiActionButtons = [\n {\n action: () => {\n downloadObject(dispatch, bucketName, internalPaths, actualInfo);\n },\n label: \"Download\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Download this Object\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download this object\"\n ),\n },\n {\n action: () => {\n shareObject();\n },\n label: \"Share\",\n disabled: !!actualInfo.is_delete_marker || !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Share this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"share this object\"\n ),\n },\n {\n action: () => {\n setPreviewOpen(true);\n },\n label: \"Preview\",\n disabled:\n !!actualInfo.is_delete_marker ||\n extensionPreview(currentItem) === \"none\" ||\n !canGetObject,\n icon: ,\n tooltip: canGetObject\n ? \"Preview this File\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"preview this object\"\n ),\n },\n {\n action: () => {\n setLegalholdOpen(true);\n },\n label: \"Legal Hold\",\n disabled:\n !locking ||\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canSetLegalHold ||\n selectedVersion !== \"\",\n icon: ,\n tooltip: canSetLegalHold\n ? locking\n ? \"Change Legal Hold rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Legal Hold\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT_LEGAL_HOLD, IAM_SCOPES.S3_PUT_ACTIONS],\n \"change legal hold settings for this object\"\n ),\n },\n {\n action: openRetentionModal,\n label: \"Retention\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n !canChangeRetention ||\n selectedVersion !== \"\" ||\n !locking,\n icon: ,\n tooltip: canChangeRetention\n ? locking\n ? \"Change Retention rules for this File\"\n : \"Object Locking must be enabled on this bucket in order to set Retention Rules\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_OBJECT_RETENTION,\n IAM_SCOPES.S3_PUT_OBJECT_RETENTION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"change Retention Rules for this object\"\n ),\n },\n {\n action: () => {\n setTagModalOpen(true);\n },\n label: \"Tags\",\n disabled:\n !!actualInfo.is_delete_marker || selectedVersion !== \"\" || !canSetTags,\n icon: ,\n tooltip: canSetTags\n ? \"Change Tags for this File\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_PUT_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_OBJECT_TAGGING,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"set Tags on this object\"\n ),\n },\n {\n action: () => {\n setInspectModalOpen(true);\n },\n label: \"Inspect\",\n disabled:\n !distributedSetup ||\n !!actualInfo.is_delete_marker ||\n selectedVersion !== \"\" ||\n !canInspect,\n icon: ,\n tooltip: canInspect\n ? \"Inspect this file\"\n : permissionTooltipHelper(\n [IAM_SCOPES.ADMIN_INSPECT_DATA],\n \"inspect this file\"\n ),\n },\n {\n action: () => {\n dispatch(\n setVersionsModeEnabled({\n status: !versionsMode,\n objectName: objectName,\n })\n );\n },\n label: versionsMode ? \"Hide Object Versions\" : \"Display Object Versions\",\n icon: ,\n disabled:\n !distributedSetup ||\n !(actualInfo.version_id && actualInfo.version_id !== \"null\") ||\n !canChangeVersioning,\n tooltip: canChangeVersioning\n ? actualInfo.version_id && actualInfo.version_id !== \"null\"\n ? \"Display Versions for this file\"\n : \"\"\n : permissionTooltipHelper(\n [\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_OBJECT_VERSION,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ],\n \"display all versions of this object\"\n ),\n },\n ];\n\n const calculateLastModifyTime = (lastModified: string) => {\n const currentTime = new Date();\n const modifiedTime = new Date(lastModified);\n\n const difTime = currentTime.getTime() - modifiedTime.getTime();\n\n const formatTime = niceDaysInt(difTime, \"ms\");\n\n return formatTime.trim() !== \"\" ? `${formatTime} ago` : \"Just now\";\n };\n\n let regularButtonOverride: CSSObject = {};\n\n if (colorVariants) {\n regularButtonOverride = {\n backgroundColor: \"transparent\",\n };\n }\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {retentionModalOpen && actualInfo && (\n \n )}\n {deleteOpen && (\n \n )}\n {legalholdOpen && actualInfo && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {tagModalOpen && actualInfo && (\n \n )}\n {inspectModalOpen && actualInfo && (\n \n )}\n {longFileOpen && actualInfo && (\n \n )}\n\n {loadingObjectInfo ? (\n {loaderForContainer}\n ) : (\n \n \n {displayFileIconName(objectName, true)}\n \n {objectName}\n \n \n }\n items={multiActionButtons}\n />\n \n \n \n }\n iconLocation={\"start\"}\n fullWidth\n variant={\"secondary\"}\n onClick={() => {\n setDeleteOpen(true);\n }}\n disabled={\n selectedVersion === \"\" && actualInfo.is_delete_marker\n }\n sx={{\n width: \"calc(100% - 44px)\",\n margin: \"8px 0\",\n ...regularButtonOverride,\n }}\n label={`Delete${selectedVersion !== \"\" ? \" version\" : \"\"}`}\n />\n \n \n \n \n Object Info\n \n \n \n Name:\n
\n
{objectName}
\n
\n {selectedVersion !== \"\" && (\n \n Version ID:\n
\n {selectedVersion}\n
\n )}\n \n Size:\n
\n {niceBytes(actualInfo.size || \"0\")}\n
\n {actualInfo.version_id &&\n actualInfo.version_id !== \"null\" &&\n selectedVersion === \"\" && (\n \n Versions:\n
\n {versions.length} version{versions.length !== 1 ? \"s\" : \"\"},{\" \"}\n {niceBytesInt(totalVersionsSize)}\n
\n )}\n {selectedVersion === \"\" && (\n \n Last Modified:\n
\n {calculateLastModifyTime(actualInfo.last_modified)}\n
\n )}\n \n ETAG:\n
\n {actualInfo.etag || \"N/A\"}\n
\n \n Tags:\n
\n {tagKeys.length === 0\n ? \"N/A\"\n : tagKeys.map((tagKey, index) => {\n return (\n \n {tagKey}:{get(actualInfo, `tags.${tagKey}`, \"\")}\n {index < tagKeys.length - 1 ? \", \" : \"\"}\n \n );\n })}\n
\n \n \n \n Legal Hold:\n
\n {actualInfo.legal_hold_status ? \"On\" : \"Off\"}\n
\n \n
\n \n \n \n Retention Policy:\n
\n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" ? (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n ) : (\n \n {actualInfo.retention_mode\n ? actualInfo.retention_mode.toLowerCase()\n : \"None\"}\n \n )}\n \n
\n \n
\n {!actualInfo.is_delete_marker && (\n \n \n Metadata\n \n \n \n {actualInfo && metaData ? (\n \n ) : null}\n \n \n )}\n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(ObjectDetailPanel);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { DialogContentText } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { modalBasic } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport api from \"../../../../../../common/api\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { RecoverIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\nimport { IFileInfo } from \"./types\";\nimport { restoreLocalObjectList } from \"../../../../ObjectBrowser/objectBrowserSlice\";\n\ninterface IRestoreFileVersion {\n classes: any;\n restoreOpen: boolean;\n bucketName: string;\n versionToRestore: IFileInfo;\n objectPath: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...modalBasic,\n });\n\nconst RestoreFileVersion = ({\n classes,\n versionToRestore,\n bucketName,\n objectPath,\n restoreOpen,\n onCloseAndUpdate,\n}: IRestoreFileVersion) => {\n const dispatch = useAppDispatch();\n const [restoreLoading, setRestoreLoading] = useState(false);\n\n const restoreVersion = () => {\n setRestoreLoading(true);\n\n api\n .invoke(\n \"PUT\",\n `/api/v1/buckets/${bucketName}/objects/restore?prefix=${encodeURLString(\n objectPath\n )}&version_id=${versionToRestore.version_id}`\n )\n .then((res: any) => {\n console.log(\"REStORE\", res);\n setRestoreLoading(false);\n onCloseAndUpdate(true);\n dispatch(\n restoreLocalObjectList({\n prefix: objectPath,\n objectInfo: versionToRestore,\n })\n );\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setRestoreLoading(false);\n });\n };\n\n return (\n }\n onConfirm={restoreVersion}\n confirmButtonProps={{\n variant: \"secondary\",\n disabled: restoreLoading,\n }}\n onClose={() => {\n onCloseAndUpdate(false);\n }}\n confirmationContent={\n \n Are you sure you want to restore
\n {objectPath}
with Version ID:\n
\n {versionToRestore.version_id}?\n
\n }\n />\n );\n};\n\nexport default withStyles(styles)(RestoreFileVersion);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\n\ninterface ISpecificVersionPillProps {\n type: \"null\" | \"current\" | \"deleted\";\n}\n\nconst SpecificVersionPill = ({ type }: ISpecificVersionPillProps) => {\n let bgColor = \"#000\";\n let message = \"\";\n\n switch (type) {\n case \"null\":\n bgColor = \"#07193E\";\n message = \"NULL VERSION\";\n break;\n case \"deleted\":\n bgColor = \"#868686\";\n message = \"DELETED\";\n break;\n default:\n bgColor = \"#174551\";\n message = \"CURRENT VERSION\";\n }\n\n return (\n \n {message}\n \n );\n};\n\nexport default SpecificVersionPill;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { DateTime } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport { withStyles } from \"@mui/styles\";\nimport { displayFileIconName } from \"../ListObjects/utils\";\nimport { IFileInfo } from \"./types\";\nimport { IconButton, Tooltip } from \"@mui/material\";\nimport { DownloadIcon, PreviewIcon, RecoverIcon, ShareIcon } from \"mds\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport SpecificVersionPill from \"./SpecificVersionPill\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\ninterface IFileVersionItem {\n fileName: string;\n versionInfo: IFileInfo;\n index: number;\n isSelected?: boolean;\n checkable: boolean;\n isChecked: boolean;\n onCheck: (versionID: string) => void;\n onShare: (versionInfo: IFileInfo) => void;\n onDownload: (versionInfo: IFileInfo) => void;\n onRestore: (versionInfo: IFileInfo) => void;\n onPreview: (versionInfo: IFileInfo) => void;\n globalClick: (versionInfo: IFileInfo) => void;\n classes: any;\n key: any;\n style: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainFileVersionItem: {\n borderBottom: \"#E2E2E2 1px solid\",\n padding: \"1rem 0\",\n margin: \"0 0.5rem 0 2.5rem\",\n cursor: \"pointer\",\n \"&.deleted\": {\n color: \"#868686\",\n },\n \"@media (max-width: 799px)\": {\n padding: \"5px 0px\",\n margin: 0,\n },\n },\n intermediateLayer: {\n margin: \"0 1.5rem 0 1.5rem\",\n \"&:hover, &.selected\": {\n backgroundColor: \"#F8F8F8\",\n \"& > div\": {\n borderBottomColor: \"#F8F8F8\",\n },\n },\n \"@media (max-width: 799px)\": {\n margin: 0,\n \"&:hover, &.selected\": {\n backgroundColor: \"transparent\",\n \"& > div\": {\n borderBottomColor: \"#E2E2E2\",\n },\n },\n },\n },\n versionContainer: {\n fontSize: 16,\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg.min-icon\": {\n width: 18,\n height: 18,\n minWidth: 18,\n minHeight: 18,\n marginRight: 10,\n },\n \"@media (max-width: 799px)\": {\n fontSize: 14,\n \"& svg.min-icon\": {\n display: \"none\",\n },\n },\n },\n buttonContainer: {\n textAlign: \"right\",\n \"& button\": {\n marginLeft: \"1.5rem\",\n },\n \"@media (max-width: 600px)\": {\n \"& button\": {\n marginLeft: \"5px\",\n },\n },\n },\n versionID: {\n fontSize: \"12px\",\n margin: \"2px 0\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n },\n versionData: {\n marginRight: \"10px\",\n fontSize: 12,\n color: \"#868686\",\n \"@media (max-width: 799px)\": {\n textOverflow: \"ellipsis\",\n maxWidth: \"95%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n },\n },\n ctrItem: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n height: \"calc(100% + 2px)\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n collapsableInfo: {\n \"@media (max-width: 799px)\": {\n display: \"flex\",\n flexDirection: \"column\",\n },\n },\n versionItem: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n });\n\nconst FileVersionItem = ({\n classes,\n fileName,\n versionInfo,\n isSelected,\n checkable,\n isChecked,\n onCheck,\n onShare,\n onDownload,\n onRestore,\n onPreview,\n globalClick,\n index,\n key,\n style,\n}: IFileVersionItem) => {\n const disableButtons = versionInfo.is_delete_marker;\n\n const versionItemButtons = [\n {\n icon: ,\n action: onPreview,\n tooltip: \"Preview\",\n },\n {\n icon: ,\n action: onDownload,\n tooltip: \"Download this version\",\n },\n {\n icon: ,\n action: onShare,\n tooltip: \"Share this version\",\n },\n {\n icon: ,\n action: onRestore,\n tooltip: \"Restore this version\",\n },\n ];\n\n let pill: \"deleted\" | \"current\" | \"null\" | null = null;\n\n if (versionInfo.is_delete_marker) {\n pill = \"deleted\";\n } else if (versionInfo.is_latest) {\n pill = \"current\";\n } else if (versionInfo.version_id === \"null\") {\n pill = \"null\";\n }\n\n let lastModified = DateTime.now();\n\n if (versionInfo.last_modified) {\n lastModified = DateTime.fromISO(versionInfo.last_modified);\n }\n\n return (\n {\n globalClick(versionInfo);\n }}\n key={key}\n style={style}\n >\n \n \n \n \n \n {checkable && (\n {\n e.stopPropagation();\n e.preventDefault();\n onCheck(versionInfo.version_id || \"\");\n }}\n value={versionInfo.version_id || \"\"}\n disabled={versionInfo.is_delete_marker}\n overrideCheckboxStyles={{\n paddingLeft: 0,\n height: 34,\n width: 25,\n }}\n noTopMargin\n />\n )}\n {displayFileIconName(fileName, true)} v{index.toString()}\n \n {pill && }\n \n \n \n {versionItemButtons.map((button, index) => {\n return (\n \n {\n e.stopPropagation();\n if (!disableButtons) {\n button.action(versionInfo);\n } else {\n e.preventDefault();\n }\n }}\n sx={{\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"100%\",\n width: \"28px\",\n height: \"28px\",\n padding: \"5px\",\n \"& .min-icon\": {\n width: \"14px\",\n height: \"14px\",\n },\n }}\n >\n {button.icon}\n \n \n );\n })}\n \n \n \n \n {versionInfo.version_id !== \"null\" ? versionInfo.version_id : \"-\"}\n \n \n \n Last modified:{\" \"}\n {lastModified.toFormat(\"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\")}\n \n \n Size: {niceBytes(versionInfo.size || \"0\")}\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(FileVersionItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport { decodeURLString } from \"../../../../../../common/utils\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport api from \"../../../../../../common/api\";\nimport InputBoxWrapper from \"../../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\n\ninterface IDeleteNonCurrentProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteNonCurrentVersions = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedObject,\n}: IDeleteNonCurrentProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [typeConfirm, setTypeConfirm] = useState(\"\");\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION]\n ) && retentionConfig?.mode === \"governance\";\n\n useEffect(() => {\n if (deleteLoading) {\n api\n .invoke(\n \"DELETE\",\n `/api/v1/buckets/${selectedBucket}/objects?path=${selectedObject}&non_current_versions=true${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`\n )\n .then(() => {\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n dispatch,\n selectedObject,\n selectedBucket,\n bypassGovernance,\n ]);\n\n if (!selectedObject) {\n return null;\n }\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={() => closeDeleteModalAndRefresh(false)}\n confirmButtonProps={{\n disabled: typeConfirm !== \"YES, PROCEED\" || deleteLoading,\n }}\n confirmationContent={\n \n Are you sure you want to delete all the non-current versions for:{\" \"}\n {decodeURLString(selectedObject)}?
\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n
\n To continue please type YES, PROCEED in the box.\n \n ) => {\n setTypeConfirm(event.target.value);\n }}\n label=\"\"\n value={typeConfirm}\n />\n \n
\n }\n />\n );\n};\n\nexport default DeleteNonCurrentVersions;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\n\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport ConfirmDialog from \"../../../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport api from \"../../../../../../common/api\";\nimport { setErrorSnackMessage } from \"../../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport FormSwitchWrapper from \"../../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { IAM_SCOPES } from \"../../../../../../common/SecureComponent/permissions\";\nimport { useSelector } from \"react-redux\";\n\ninterface IDeleteSelectedVersionsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedVersions: string[];\n selectedObject: string;\n selectedBucket: string;\n}\n\nconst DeleteObject = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedBucket,\n selectedVersions,\n selectedObject,\n}: IDeleteSelectedVersionsProps) => {\n const dispatch = useAppDispatch();\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [bypassGovernance, setBypassGovernance] = useState(false);\n\n const retentionConfig = useSelector(\n (state: AppState) => state.objectBrowser.retentionConfig\n );\n\n const canBypass =\n hasPermission(\n [selectedBucket],\n [IAM_SCOPES.S3_BYPASS_GOVERNANCE_RETENTION]\n ) && retentionConfig?.mode === \"governance\";\n\n const onClose = () => closeDeleteModalAndRefresh(false);\n const onConfirmDelete = () => {\n setDeleteLoading(true);\n };\n\n useEffect(() => {\n if (deleteLoading) {\n const selectedObjectsRequest = selectedVersions.map((versionID) => {\n return {\n path: selectedObject,\n versionID: versionID,\n recursive: false,\n };\n });\n\n if (selectedObjectsRequest.length > 0) {\n api\n .invoke(\n \"POST\",\n `/api/v1/buckets/${selectedBucket}/delete-objects?all_versions=false${\n bypassGovernance ? \"&bypass=true\" : \"\"\n }`,\n selectedObjectsRequest\n )\n .then(() => {\n setDeleteLoading(false);\n closeDeleteModalAndRefresh(true);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(error));\n setDeleteLoading(false);\n });\n }\n }\n }, [\n deleteLoading,\n closeDeleteModalAndRefresh,\n selectedBucket,\n selectedObject,\n selectedVersions,\n bypassGovernance,\n dispatch,\n ]);\n\n if (!selectedVersions) {\n return null;\n }\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedVersions.length}{\" \"}\n versions for {selectedObject}?\n {canBypass && (\n \n \n {\n setBypassGovernance(!bypassGovernance);\n }}\n description=\"\"\n />\n \n \n )}\n \n }\n />\n );\n};\n\nexport default DeleteObject;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport get from \"lodash/get\";\nimport { useSelector } from \"react-redux\";\nimport { withStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { LinearProgress, SelectChangeEvent } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport ShareFile from \"./ShareFile\";\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n spacingUtils,\n tableStyles,\n textStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { IFileInfo } from \"./types\";\nimport { download } from \"../utils\";\nimport api from \"../../../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\n\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\nimport RestoreFileVersion from \"./RestoreFileVersion\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport {\n Button,\n DeleteIcon,\n DeleteNonCurrentIcon,\n SelectMultipleIcon,\n VersionsIcon,\n} from \"mds\";\nimport FileVersionItem from \"./FileVersionItem\";\nimport SelectWrapper from \"../../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport PreviewFileModal from \"../Preview/PreviewFileModal\";\nimport DeleteNonCurrent from \"../ListObjects/DeleteNonCurrent\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport DeleteSelectedVersions from \"./DeleteSelectedVersions\";\nimport {\n selDistSet,\n setErrorSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport {\n makeid,\n storeCallForObjectWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setLoadingObjectInfo,\n setLoadingVersions,\n setNewObject,\n setSelectedVersion,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { List, ListRowProps } from \"react-virtualized\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n versionsContainer: {\n padding: 10,\n \"@media (max-width: 799px)\": {\n minHeight: 800,\n },\n },\n noBottomBorder: {\n borderBottom: 0,\n },\n versionsVirtualPanel: {\n flexGrow: 1,\n height: \"calc(100% - 120px)\",\n overflow: \"auto\",\n \"@media (max-width: 799px)\": {\n height: 600,\n },\n },\n screenTitleContainer: {\n position: \"relative\",\n \"&::before\": {\n content: \"' '\",\n display: \"block\",\n position: \"absolute\",\n width: \"2px\",\n backgroundColor: \"#F8F8F8\",\n left: \"24px\",\n height: \"40px\",\n bottom: 0,\n },\n \"@media (max-width: 799px)\": {\n \"&::before\": {\n display: \"none\",\n },\n },\n },\n sortByLabel: {\n color: \"#838383\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n marginRight: 12,\n fontSize: 14,\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n ...actionsTray,\n ...tableStyles,\n ...spacingUtils,\n ...textStyleUtils,\n ...objectBrowserCommon,\n ...objectBrowserExtras,\n ...containerForHeader,\n });\n\ninterface IVersionsNavigatorProps {\n classes: any;\n internalPaths: string;\n bucketName: string;\n}\n\nconst emptyFile: IFileInfo = {\n is_latest: true,\n last_modified: \"\",\n legal_hold_status: \"\",\n name: \"\",\n retention_mode: \"\",\n retention_until_date: \"\",\n size: \"0\",\n tags: {},\n version_id: null,\n};\n\nconst VersionsNavigator = ({\n classes,\n internalPaths,\n bucketName,\n}: IVersionsNavigatorProps) => {\n const dispatch = useAppDispatch();\n\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n const loadingVersions = useSelector(\n (state: AppState) => state.objectBrowser.loadingVersions\n );\n const selectedVersion = useSelector(\n (state: AppState) => state.objectBrowser.selectedVersion\n );\n\n const distributedSetup = useSelector(selDistSet);\n const [shareFileModalOpen, setShareFileModalOpen] = useState(false);\n const [actualInfo, setActualInfo] = useState(null);\n const [objectToShare, setObjectToShare] = useState(null);\n const [versions, setVersions] = useState([]);\n const [restoreVersionOpen, setRestoreVersionOpen] = useState(false);\n const [restoreVersion, setRestoreVersion] = useState(null);\n const [sortValue, setSortValue] = useState(\"date\");\n const [previewOpen, setPreviewOpen] = useState(false);\n const [deleteNonCurrentOpen, setDeleteNonCurrentOpen] =\n useState(false);\n const [selectEnabled, setSelectEnabled] = useState(false);\n const [selectedItems, setSelectedItems] = useState([]);\n const [delSelectedVOpen, setDelSelectedVOpen] = useState(false);\n\n // calculate object name to display\n let objectNameArray: string[] = [];\n if (actualInfo) {\n objectNameArray = actualInfo.name.split(\"/\");\n }\n\n useEffect(() => {\n if (!loadingVersions && !actualInfo) {\n dispatch(setLoadingVersions(true));\n }\n }, [loadingVersions, actualInfo, dispatch]);\n\n useEffect(() => {\n if (loadingVersions && internalPaths !== \"\") {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${internalPaths}${\n distributedSetup ? \"&with_versions=true\" : \"\"\n }`\n )\n .then((res: IFileInfo[]) => {\n const result = get(res, \"objects\", []);\n\n const decodedInternalPaths = decodeURLString(internalPaths);\n\n // Filter the results prefixes as API can return more files than expected.\n const filteredPrefixes = result.filter(\n (item: IFileInfo) => item.name === decodedInternalPaths\n );\n\n if (distributedSetup) {\n setActualInfo(\n filteredPrefixes.find((el: IFileInfo) => el.is_latest) ||\n emptyFile\n );\n setVersions(filteredPrefixes);\n } else {\n setActualInfo(filteredPrefixes[0]);\n setVersions([]);\n }\n\n dispatch(setLoadingVersions(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n dispatch(setLoadingVersions(false));\n });\n }\n }, [loadingVersions, bucketName, internalPaths, dispatch, distributedSetup]);\n\n const shareObject = () => {\n setShareFileModalOpen(true);\n };\n\n const closeShareModal = () => {\n setObjectToShare(null);\n setShareFileModalOpen(false);\n setPreviewOpen(false);\n };\n\n const downloadObject = (object: IFileInfo) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n internalPaths,\n object.version_id,\n parseInt(object.size || \"0\"),\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n const onShareItem = (item: IFileInfo) => {\n setObjectToShare(item);\n shareObject();\n };\n\n const onPreviewItem = (item: IFileInfo) => {\n setObjectToShare(item);\n setPreviewOpen(true);\n };\n\n const onRestoreItem = (item: IFileInfo) => {\n setRestoreVersion(item);\n setRestoreVersionOpen(true);\n };\n\n const onDownloadItem = (item: IFileInfo) => {\n downloadObject(item);\n };\n\n const onGlobalClick = (item: IFileInfo) => {\n dispatch(setSelectedVersion(item.version_id || \"\"));\n };\n\n const filteredRecords = versions.filter((version) => {\n if (version.version_id) {\n return version.version_id.includes(searchVersions);\n }\n return false;\n });\n\n const closeRestoreModal = (reloadObjectData: boolean) => {\n setRestoreVersionOpen(false);\n setRestoreVersion(null);\n\n if (reloadObjectData) {\n dispatch(setLoadingVersions(true));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeDeleteNonCurrent = (reloadAfterDelete: boolean) => {\n setDeleteNonCurrentOpen(false);\n\n if (reloadAfterDelete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n }\n };\n\n const closeSelectedVersions = (reloadOnComplete: boolean) => {\n setDelSelectedVOpen(false);\n\n if (reloadOnComplete) {\n dispatch(setLoadingVersions(true));\n dispatch(setSelectedVersion(\"\"));\n dispatch(setLoadingObjectInfo(true));\n setSelectedItems([]);\n }\n };\n\n const totalSpace = versions.reduce((acc: number, currValue: IFileInfo) => {\n if (currValue.size) {\n return acc + parseInt(currValue.size);\n }\n return acc;\n }, 0);\n\n filteredRecords.sort((a, b) => {\n switch (sortValue) {\n case \"size\":\n if (a.size && b.size) {\n if (a.size < b.size) {\n return -1;\n }\n if (a.size > b.size) {\n return 1;\n }\n return 0;\n }\n return 0;\n default:\n const dateA = new Date(a.last_modified).getTime();\n const dateB = new Date(b.last_modified).getTime();\n\n if (dateA < dateB) {\n return 1;\n }\n if (dateA > dateB) {\n return -1;\n }\n return 0;\n }\n });\n\n const onCheckVersion = (selectedVersion: string) => {\n if (selectedItems.includes(selectedVersion)) {\n const filteredItems = selectedItems.filter(\n (element) => element !== selectedVersion\n );\n\n setSelectedItems(filteredItems);\n\n return;\n }\n\n const cloneState = [...selectedItems];\n cloneState.push(selectedVersion);\n\n setSelectedItems(cloneState);\n };\n\n const rowRenderer = ({\n key, // Unique key within array of rows\n index, // Index of row within collection\n isScrolling, // The List is currently being scrolled\n isVisible, // This row is visible within the List (eg it is not an overscanned row)\n style, // Style object to be applied to row (to position it)\n }: ListRowProps) => {\n const versOrd = versions.length - index;\n return (\n \n );\n };\n\n return (\n \n {shareFileModalOpen && actualInfo && (\n \n )}\n {restoreVersionOpen && actualInfo && restoreVersion && (\n \n )}\n {previewOpen && actualInfo && (\n {\n setPreviewOpen(false);\n }}\n />\n )}\n {deleteNonCurrentOpen && (\n \n )}\n {delSelectedVOpen && (\n \n )}\n \n {!actualInfo && (\n \n \n \n )}\n\n {actualInfo && (\n \n \n \n \n \n \n \n \n }\n title={\n \n {objectNameArray.length > 0\n ? objectNameArray[objectNameArray.length - 1]\n : actualInfo.name}{\" \"}\n Versions\n \n }\n subTitle={\n \n \n \n \n {versions.length} Version\n {versions.length === 1 ? \"\" : \"s\"}   \n \n \n \n {niceBytesInt(totalSpace)}\n \n \n \n }\n actions={\n \n \n {\n setSelectEnabled(!selectEnabled);\n }}\n icon={}\n variant={selectEnabled ? \"callAction\" : \"regular\"}\n style={{ marginRight: 8 }}\n />\n \n {selectEnabled && (\n \n {\n setDelSelectedVOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 8 }}\n disabled={selectedItems.length === 0}\n />\n \n )}\n \n {\n setDeleteNonCurrentOpen(true);\n }}\n icon={}\n variant={\"secondary\"}\n style={{ marginRight: 15 }}\n disabled={versions.length <= 1}\n />\n \n Sort by\n ) => {\n setSortValue(e.target.value as string);\n }}\n name={\"sort-by\"}\n options={[\n { label: \"Date\", value: \"date\" },\n {\n label: \"Size\",\n value: \"size\",\n },\n ]}\n />\n \n }\n className={classes.noBottomBorder}\n />\n \n \n {actualInfo.version_id && actualInfo.version_id !== \"null\" && (\n // @ts-ignore\n \n )}\n \n \n )}\n \n \n );\n};\n\nexport default withStyles(styles)(VersionsNavigator);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { DateTime } from \"luxon\";\nimport { BucketObjectItem } from \"./types\";\nimport { niceBytes } from \"../../../../../../common/utils\";\nimport { displayFileIconName } from \"./utils\";\n\n// Functions\n\nexport const displayParsedDate = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\")) {\n return \"\";\n }\n\n const currTime = DateTime.now();\n const objectTime = DateTime.fromISO(object.last_modified);\n\n const isToday =\n currTime.hasSame(objectTime, \"day\") &&\n currTime.hasSame(objectTime, \"month\") &&\n currTime.hasSame(objectTime, \"year\");\n\n if (isToday) {\n return `Today, ${objectTime.toFormat(\"HH:mm\")}`;\n }\n\n return objectTime.toFormat(\"ccc, LLL dd yyyy HH:mm (ZZZZ)\");\n};\n\nexport const displayNiceBytes = (object: BucketObjectItem) => {\n if (object.name.endsWith(\"/\") || !object.size) {\n return \"-\";\n }\n return niceBytes(String(object.size));\n};\n\nexport const displayDeleteFlag = (state: boolean) => {\n return state ? \"Yes\" : \"No\";\n};\n\n// Table Props\n\nexport const listModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Last Modified\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n];\n\nexport const rewindModeColumns = [\n {\n label: \"Name\",\n elementKey: \"name\",\n renderFunction: displayFileIconName,\n enableSort: true,\n },\n {\n label: \"Object Date\",\n elementKey: \"last_modified\",\n renderFunction: displayParsedDate,\n renderFullObject: true,\n enableSort: true,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: displayNiceBytes,\n renderFullObject: true,\n width: 100,\n enableSort: true,\n },\n {\n label: \"Deleted\",\n elementKey: \"delete_flag\",\n renderFunction: displayDeleteFlag,\n width: 60,\n },\n];\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { listModeColumns, rewindModeColumns } from \"./ListObjectsHelpers\";\nimport TableWrapper, {\n ItemActions,\n} from \"../../../../Common/TableWrapper/TableWrapper\";\nimport React, { useState } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { useSelector } from \"react-redux\";\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport { selFeatures } from \"../../../../consoleSlice\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n setIsOpeningOD,\n setLoadingObjects,\n setLoadingVersions,\n setObjectDetailsView,\n setSelectedObjects,\n setSelectedObjectView,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport get from \"lodash/get\";\nimport { sortListObjects } from \"../utils\";\nimport { BucketObjectItem } from \"./types\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport { hasPermission } from \"../../../../../../common/SecureComponent\";\nimport { downloadObject } from \"../../../../ObjectBrowser/utils\";\nimport { IFileInfo } from \"../ObjectDetails/types\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n browsePaper: {\n border: 0,\n height: \"calc(100vh - 290px)\",\n \"&.isEmbedded\": {\n height: \"calc(100vh - 315px)\",\n },\n \"&.actionsPanelOpen\": {\n minHeight: \"100%\",\n },\n \"@media (max-width: 800px)\": {\n width: 800,\n },\n },\n parentWrapper: {\n position: \"relative\",\n height: \"calc(100% - 60px)\",\n \"@media (max-width: 800px)\": {\n overflowX: \"auto\",\n },\n },\n \"@global\": {\n \".rowLine:hover .iconFileElm\": {\n backgroundImage: \"url(/images/ob_file_filled.svg)\",\n },\n \".rowLine:hover .iconFolderElm\": {\n backgroundImage: \"url(/images/ob_folder_filled.svg)\",\n },\n },\n })\n);\n\ninterface IListObjectTable {\n internalPaths: string | null;\n}\n\nconst ListObjectsTable = ({ internalPaths }: IListObjectTable) => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n\n const [sortDirection, setSortDirection] = useState<\n \"ASC\" | \"DESC\" | undefined\n >(\"ASC\");\n const [currentSortField, setCurrentSortField] = useState(\"name\");\n\n const bucketName = params.bucketName || \"\";\n\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen\n );\n\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const records = useSelector((state: AppState) => state.objectBrowser.records);\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const displayListObjects = hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const filteredRecords = records.filter((b: BucketObjectItem) => {\n if (searchObjects === \"\") {\n return true;\n } else {\n const objectName = b.name.toLowerCase();\n if (objectName.indexOf(searchObjects.toLowerCase()) >= 0) {\n return true;\n } else {\n return false;\n }\n }\n });\n\n const plSelect = filteredRecords;\n const sortASC = plSelect.sort(sortListObjects(currentSortField));\n\n let payload: BucketObjectItem[] = [];\n\n if (sortDirection === \"ASC\") {\n payload = sortASC;\n } else {\n payload = sortASC.reverse();\n }\n\n const openPath = (object: IFileInfo) => {\n const idElement = object.name;\n const newPath = `/browser/${bucketName}${\n idElement ? `/${encodeURLString(idElement)}` : ``\n }`;\n\n // for anonymous start download\n if (anonymousMode && internalPaths !== null && !object.name.endsWith(\"/\")) {\n downloadObject(\n dispatch,\n bucketName,\n `${encodeURLString(idElement)}`,\n object\n );\n return;\n }\n dispatch(setSelectedObjects([]));\n\n navigate(newPath);\n\n if (!anonymousMode) {\n dispatch(setObjectDetailsView(true));\n dispatch(setLoadingVersions(true));\n dispatch(setIsOpeningOD(true));\n }\n dispatch(\n setSelectedObjectView(\n `${idElement ? `${encodeURLString(idElement)}` : ``}`\n )\n );\n };\n const tableActions: ItemActions[] = [\n {\n type: \"view\",\n label: \"View\",\n onClick: openPath,\n sendOnlyId: false,\n },\n ];\n\n const sortChange = (sortData: any) => {\n const newSortDirection = get(sortData, \"sortDirection\", \"DESC\");\n setCurrentSortField(sortData.sortBy);\n setSortDirection(newSortDirection);\n dispatch(setLoadingObjects(true));\n };\n\n const selectAllItems = () => {\n dispatch(setSelectedObjectView(null));\n\n if (selectedObjects.length === payload.length) {\n dispatch(setSelectedObjects([]));\n return;\n }\n\n const elements = payload.map((item) => item.name);\n dispatch(setSelectedObjects(elements));\n };\n\n const selectListObjects = (e: React.ChangeEvent) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedObjects]; // We clone the selectedBuckets array\n\n if (checked) {\n // If the user has checked this field we need to push this to selectedBucketsList\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n dispatch(setSelectedObjects(elements));\n dispatch(setSelectedObjectView(null));\n\n return elements;\n };\n\n return (\n {\n if (payload[index]?.delete_flag) {\n return \"deleted\";\n }\n\n return \"\";\n }}\n parentClassName={classes.parentWrapper}\n />\n );\n};\nexport default ListObjectsTable;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../../store\";\nimport { encodeURLString, getClientOS } from \"../../../common/utils\";\nimport { BucketObjectItem } from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { makeid, storeCallForObjectWithID } from \"./transferManager\";\nimport { download } from \"../Buckets/ListBuckets/Objects/utils\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setNewObject,\n setPreviewOpen,\n setSelectedPreview,\n setShareFileModalOpen,\n updateProgress,\n} from \"./objectBrowserSlice\";\n\nexport const downloadSelected = createAsyncThunk(\n \"objectBrowser/downloadSelected\",\n async (bucketName: string, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n const downloadObject = (object: BucketObjectItem) => {\n const identityDownload = encodeURLString(\n `${bucketName}-${object.name}-${new Date().getTime()}-${Math.random()}`\n );\n\n const ID = makeid(8);\n\n const downloadCall = download(\n bucketName,\n encodeURLString(object.name),\n object.version_id,\n object.size,\n null,\n ID,\n (progress) => {\n dispatch(\n updateProgress({\n instanceID: identityDownload,\n progress: progress,\n })\n );\n },\n () => {\n dispatch(completeObject(identityDownload));\n },\n (msg: string) => {\n dispatch(failObject({ instanceID: identityDownload, msg }));\n },\n () => {\n dispatch(cancelObjectInList(identityDownload));\n }\n );\n storeCallForObjectWithID(ID, downloadCall);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identityDownload,\n percentage: 0,\n prefix: object.name,\n type: \"download\",\n waitingForFile: true,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n };\n\n if (state.objectBrowser.selectedObjects.length !== 0) {\n let itemsToDownload: BucketObjectItem[] = [];\n\n const filterFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n itemsToDownload = state.objectBrowser.records.filter(filterFunction);\n\n // I case just one element is selected, then we trigger download modal validation.\n // We are going to enforce zip download when multiple files are selected\n if (itemsToDownload.length === 1) {\n if (\n itemsToDownload[0].name.length > 200 &&\n getClientOS().toLowerCase().includes(\"win\")\n ) {\n dispatch(setDownloadRenameModal(itemsToDownload[0]));\n return;\n }\n }\n\n itemsToDownload.forEach((filteredItem) => {\n downloadObject(filteredItem);\n });\n }\n }\n);\n\nexport const openPreview = createAsyncThunk(\n \"objectBrowser/openPreview\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setPreviewOpen(true));\n }\n }\n }\n);\n\nexport const openShare = createAsyncThunk(\n \"objectBrowser/openShare\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n\n if (state.objectBrowser.selectedObjects.length === 1) {\n let fileObject: BucketObjectItem | undefined;\n\n const findFunction = (currValue: BucketObjectItem) =>\n state.objectBrowser.selectedObjects.includes(currValue.name);\n\n fileObject = state.objectBrowser.records.find(findFunction);\n\n if (fileObject) {\n dispatch(setSelectedPreview(fileObject));\n dispatch(setShareFileModalOpen(true));\n }\n }\n }\n);\n\nexport const openAnonymousAccess = createAsyncThunk(\n \"objectBrowser/openAnonymousAccess\",\n async (_, { getState, dispatch }) => {\n const state = getState() as AppState;\n\n if (\n state.objectBrowser.selectedObjects.length === 1 &&\n state.objectBrowser.selectedObjects[0].endsWith(\"/\")\n ) {\n dispatch(setAnonymousAccessOpen(true));\n }\n }\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { setSearchObjects } from \"./objectBrowserSlice\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst FilterObjectsSB = () => {\n const dispatch = useAppDispatch();\n\n const searchObjects = useSelector(\n (state: AppState) => state.objectBrowser.searchObjects\n );\n return (\n {\n dispatch(setSearchObjects(value));\n }}\n value={searchObjects}\n />\n );\n};\nexport default FilterObjectsSB;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useLocation, useNavigate, useParams } from \"react-router-dom\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Theme } from \"@mui/material/styles\";\nimport { CSSObject } from \"styled-components\";\nimport {\n AccessRuleIcon,\n BucketsIcon,\n Button,\n DeleteIcon,\n DownloadIcon,\n HistoryIcon,\n PreviewIcon,\n RefreshIcon,\n ShareIcon,\n} from \"mds\";\nimport { DateTime } from \"luxon\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport get from \"lodash/get\";\nimport api from \"../../../../../../common/api\";\nimport {\n decodeURLString,\n encodeURLString,\n niceBytesInt,\n} from \"../../../../../../common/utils\";\n\nimport {\n actionsTray,\n containerForHeader,\n objectBrowserCommon,\n objectBrowserExtras,\n searchField,\n tableStyles,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\nimport { Badge } from \"@mui/material\";\nimport BrowserBreadcrumbs from \"../../../../ObjectBrowser/BrowserBreadcrumbs\";\nimport { extensionPreview } from \"../utils\";\nimport { BucketInfo, BucketQuota } from \"../../../types\";\nimport {\n ErrorResponseHandler,\n IRetentionConfig,\n} from \"../../../../../../common/types\";\n\nimport ScreenTitle from \"../../../../Common/ScreenTitle/ScreenTitle\";\n\nimport { AppState, useAppDispatch } from \"../../../../../../store\";\nimport PageLayout from \"../../../../Common/Layout/PageLayout\";\nimport {\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../../../../common/SecureComponent/permissions\";\nimport {\n hasPermission,\n SecureComponent,\n} from \"../../../../../../common/SecureComponent\";\nimport withSuspense from \"../../../../Common/Components/withSuspense\";\nimport UploadFilesButton from \"../../UploadFilesButton\";\nimport DetailsListPanel from \"./DetailsListPanel\";\nimport ObjectDetailPanel from \"./ObjectDetailPanel\";\nimport ActionsListSection from \"./ActionsListSection\";\nimport VersionsNavigator from \"../ObjectDetails/VersionsNavigator\";\nimport CheckboxWrapper from \"../../../../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\n\nimport {\n setErrorSnackMessage,\n setSnackBarMessage,\n} from \"../../../../../../systemSlice\";\n\nimport {\n makeid,\n removeTrace,\n storeCallForObjectWithID,\n storeFormDataWithID,\n} from \"../../../../ObjectBrowser/transferManager\";\nimport {\n cancelObjectInList,\n completeObject,\n failObject,\n openList,\n resetMessages,\n resetRewind,\n setAnonymousAccessOpen,\n setDownloadRenameModal,\n setLoadingObjects,\n setLoadingRecords,\n setLoadingVersions,\n setNewObject,\n setObjectDetailsView,\n setPreviewOpen,\n setRetentionConfig,\n setSearchObjects,\n setSelectedBucket,\n setSelectedObjects,\n setSelectedObjectView,\n setSelectedPreview,\n setShareFileModalOpen,\n setShowDeletedObjects,\n setVersionsModeEnabled,\n updateProgress,\n} from \"../../../../ObjectBrowser/objectBrowserSlice\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport {\n selBucketDetailsInfo,\n selBucketDetailsLoading,\n setBucketDetailsLoad,\n setBucketInfo,\n} from \"../../../BucketDetails/bucketDetailsSlice\";\nimport RenameLongFileName from \"../../../../ObjectBrowser/RenameLongFilename\";\nimport TooltipWrapper from \"../../../../Common/TooltipWrapper/TooltipWrapper\";\nimport ListObjectsTable from \"./ListObjectsTable\";\nimport {\n downloadSelected,\n openAnonymousAccess,\n openPreview,\n openShare,\n} from \"../../../../ObjectBrowser/objectBrowserThunks\";\n\nimport FilterObjectsSB from \"../../../../ObjectBrowser/FilterObjectsSB\";\nimport AddAccessRule from \"../../../BucketDetails/AddAccessRule\";\n\nconst DeleteMultipleObjects = withSuspense(\n React.lazy(() => import(\"./DeleteMultipleObjects\"))\n);\nconst ShareFile = withSuspense(\n React.lazy(() => import(\"../ObjectDetails/ShareFile\"))\n);\nconst RewindEnable = withSuspense(React.lazy(() => import(\"./RewindEnable\")));\nconst PreviewFileModal = withSuspense(\n React.lazy(() => import(\"../Preview/PreviewFileModal\"))\n);\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n badgeOverlap: {\n \"& .MuiBadge-badge\": {\n top: 10,\n right: 1,\n width: 5,\n height: 5,\n minWidth: 5,\n },\n },\n ...tableStyles,\n ...actionsTray,\n ...searchField,\n\n searchField: {\n ...searchField.searchField,\n maxWidth: 380,\n },\n screenTitleContainer: {\n border: \"#EAEDEE 1px solid\",\n },\n labelStyle: {\n color: \"#969FA8\",\n fontSize: \"12px\",\n },\n breadcrumbsContainer: {\n padding: \"12px 14px 5px\",\n },\n fullContainer: {\n position: \"relative\",\n \"@media (max-width: 799px)\": {\n width: 0,\n },\n },\n hideListOnSmall: {\n \"@media (max-width: 799px)\": {\n display: \"none\",\n },\n },\n actionsSection: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n },\n ...objectBrowserExtras,\n ...objectBrowserCommon,\n ...containerForHeader,\n })\n);\n\nconst baseDnDStyle = {\n borderWidth: 2,\n borderRadius: 2,\n borderColor: \"#eeeeee\",\n outline: \"none\",\n};\n\nconst activeDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#2196f3\",\n};\n\nconst acceptDnDStyle = {\n borderStyle: \"dashed\",\n backgroundColor: \"#fafafa\",\n borderColor: \"#00e676\",\n};\n\nconst ListObjects = () => {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const params = useParams();\n const navigate = useNavigate();\n const location = useLocation();\n\n const rewindEnabled = useSelector(\n (state: AppState) => state.objectBrowser.rewind.rewindEnabled\n );\n const bucketToRewind = useSelector(\n (state: AppState) => state.objectBrowser.rewind.bucketToRewind\n );\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n\n const showDeleted = useSelector(\n (state: AppState) => state.objectBrowser.showDeleted\n );\n const detailsOpen = useSelector(\n (state: AppState) => state.objectBrowser.objectDetailsOpen\n );\n const selectedInternalPaths = useSelector(\n (state: AppState) => state.objectBrowser.selectedInternalPaths\n );\n const loadingObjects = useSelector(\n (state: AppState) => state.objectBrowser.loadingObjects\n );\n const simplePath = useSelector(\n (state: AppState) => state.objectBrowser.simplePath\n );\n\n const isVersioned = useSelector(\n (state: AppState) => state.objectBrowser.versionInfo\n );\n const lockingEnabled = useSelector(\n (state: AppState) => state.objectBrowser.lockingEnabled\n );\n const downloadRenameModal = useSelector(\n (state: AppState) => state.objectBrowser.downloadRenameModal\n );\n const selectedPreview = useSelector(\n (state: AppState) => state.objectBrowser.selectedPreview\n );\n const shareFileModalOpen = useSelector(\n (state: AppState) => state.objectBrowser.shareFileModalOpen\n );\n const previewOpen = useSelector(\n (state: AppState) => state.objectBrowser.previewOpen\n );\n const selectedBucket = useSelector(\n (state: AppState) => state.objectBrowser.selectedBucket\n );\n const anonymousMode = useSelector(\n (state: AppState) => state.system.anonymousMode\n );\n const colorVariants = useSelector(\n (state: AppState) => state.system.overrideStyles\n );\n const anonymousAccessOpen = useSelector(\n (state: AppState) => state.objectBrowser.anonymousAccessOpen\n );\n\n const loadingBucket = useSelector(selBucketDetailsLoading);\n const bucketInfo = useSelector(selBucketDetailsInfo);\n\n const [deleteMultipleOpen, setDeleteMultipleOpen] = useState(false);\n const [rewindSelect, setRewindSelect] = useState(false);\n const [iniLoad, setIniLoad] = useState(false);\n const [canShareFile, setCanShareFile] = useState(false);\n const [canPreviewFile, setCanPreviewFile] = useState(false);\n const [quota, setQuota] = useState(null);\n\n const bucketName = params.bucketName || \"\";\n\n const pathSegment = location.pathname.split(`/browser/${bucketName}/`);\n const internalPaths = pathSegment.length === 2 ? pathSegment[1] : \"\";\n\n const pageTitle = decodeURLString(internalPaths);\n const currentPath = pageTitle.split(\"/\").filter((i: string) => i !== \"\");\n\n let uploadPath = [bucketName];\n if (currentPath.length > 0) {\n uploadPath = uploadPath.concat(currentPath);\n }\n\n const fileUpload = useRef(null);\n const folderUpload = useRef(null);\n\n const canDownload = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ]);\n const canDelete = hasPermission(bucketName, [IAM_SCOPES.S3_DELETE_OBJECT]);\n const canUpload =\n hasPermission(\n uploadPath,\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n true,\n true\n ) || anonymousMode;\n\n const displayDeleteObject = hasPermission(bucketName, [\n IAM_SCOPES.S3_DELETE_OBJECT,\n ]);\n const canSetAnonymousAccess = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const selectedObjects = useSelector(\n (state: AppState) => state.objectBrowser.selectedObjects\n );\n\n useEffect(() => {\n dispatch(setSearchObjects(\"\"));\n dispatch(setLoadingObjects(true));\n dispatch(setSelectedObjects([]));\n }, [simplePath, dispatch]);\n\n useEffect(() => {\n if (rewindEnabled) {\n if (bucketToRewind !== bucketName) {\n dispatch(resetRewind());\n return;\n }\n }\n }, [rewindEnabled, bucketToRewind, bucketName, dispatch]);\n\n // END OF WS HANDLERS\n\n useEffect(() => {\n if (folderUpload.current !== null) {\n folderUpload.current.setAttribute(\"directory\", \"\");\n folderUpload.current.setAttribute(\"webkitdirectory\", \"\");\n }\n }, [folderUpload]);\n\n useEffect(() => {\n if (selectedObjects.length === 1) {\n const objectName = selectedObjects[0];\n\n if (extensionPreview(objectName) !== \"none\") {\n setCanPreviewFile(true);\n } else {\n setCanPreviewFile(false);\n }\n\n if (objectName.endsWith(\"/\")) {\n setCanShareFile(false);\n } else {\n setCanShareFile(true);\n }\n } else {\n setCanShareFile(false);\n setCanPreviewFile(false);\n }\n }, [selectedObjects]);\n\n useEffect(() => {\n if (!quota && !anonymousMode) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}/quota`)\n .then((res: BucketQuota) => {\n let quotaVals = null;\n\n if (res.quota) {\n quotaVals = res;\n }\n\n setQuota(quotaVals);\n })\n .catch((err) => {\n console.error(\"Error Getting Quota Status: \", err.detailedError);\n setQuota(null);\n });\n }\n }, [quota, bucketName, anonymousMode]);\n\n useEffect(() => {\n if (selectedObjects.length > 0) {\n dispatch(setObjectDetailsView(true));\n return;\n }\n\n if (\n selectedObjects.length === 0 &&\n selectedInternalPaths === null &&\n !loadingObjects\n ) {\n dispatch(setObjectDetailsView(false));\n }\n }, [selectedObjects, selectedInternalPaths, dispatch, loadingObjects]);\n\n useEffect(() => {\n if (!iniLoad) {\n dispatch(setBucketDetailsLoad(true));\n setIniLoad(true);\n }\n }, [iniLoad, dispatch, setIniLoad]);\n\n // bucket info\n useEffect(() => {\n if ((loadingObjects || loadingBucket) && !anonymousMode) {\n api\n .invoke(\"GET\", `/api/v1/buckets/${bucketName}`)\n .then((res: BucketInfo) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setBucketInfo(res));\n dispatch(setSelectedBucket(bucketName));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setBucketDetailsLoad(false));\n dispatch(setErrorSnackMessage(err));\n });\n }\n }, [bucketName, loadingBucket, dispatch, anonymousMode, loadingObjects]);\n\n // Load retention Config\n\n useEffect(() => {\n if (selectedBucket !== \"\") {\n api\n .invoke(\"GET\", `/api/v1/buckets/${selectedBucket}/retention`)\n .then((res: IRetentionConfig) => {\n dispatch(setRetentionConfig(res));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setRetentionConfig(null));\n });\n }\n }, [selectedBucket, dispatch]);\n\n const closeDeleteMultipleModalAndRefresh = (refresh: boolean) => {\n setDeleteMultipleOpen(false);\n\n if (refresh) {\n dispatch(setSnackBarMessage(`Objects deleted successfully.`));\n dispatch(setSelectedObjects([]));\n dispatch(setLoadingObjects(true));\n }\n };\n\n const handleUploadButton = (e: any) => {\n if (\n e === null ||\n e === undefined ||\n e.target.files === null ||\n e.target.files === undefined\n ) {\n return;\n }\n e.preventDefault();\n var newFiles: File[] = [];\n\n for (var i = 0; i < e.target.files.length; i++) {\n newFiles.push(e.target.files[i]);\n }\n uploadObject(newFiles, \"\");\n\n e.target.value = \"\";\n };\n\n const uploadObject = useCallback(\n (files: File[], folderPath: string): void => {\n let pathPrefix = \"\";\n if (simplePath) {\n pathPrefix = simplePath.endsWith(\"/\") ? simplePath : simplePath + \"/\";\n }\n\n const upload = (\n files: File[],\n bucketName: string,\n path: string,\n folderPath: string\n ) => {\n let uploadPromise = (file: File) => {\n return new Promise((resolve, reject) => {\n let uploadUrl = `api/v1/buckets/${bucketName}/objects/upload`;\n const fileName = file.name;\n\n const blobFile = new Blob([file], { type: file.type });\n\n let encodedPath = \"\";\n\n const filePath = get(file, \"path\", \"\");\n const fileWebkitRelativePath = get(file, \"webkitRelativePath\", \"\");\n\n let relativeFolderPath = folderPath;\n const ID = makeid(8);\n\n // File was uploaded via drag & drop\n if (filePath !== \"\") {\n relativeFolderPath = filePath;\n } else if (fileWebkitRelativePath !== \"\") {\n // File was uploaded using upload button\n relativeFolderPath = fileWebkitRelativePath;\n }\n\n if (path !== \"\" || relativeFolderPath !== \"\") {\n const finalFolderPath = relativeFolderPath\n .split(\"/\")\n .slice(0, -1)\n .join(\"/\");\n\n const pathClean = path.endsWith(\"/\") ? path.slice(0, -1) : path;\n\n encodedPath = encodeURLString(\n `${pathClean}${\n !pathClean.endsWith(\"/\") &&\n finalFolderPath !== \"\" &&\n !finalFolderPath.startsWith(\"/\")\n ? \"/\"\n : \"\"\n }${finalFolderPath}${\n !finalFolderPath.endsWith(\"/\") ||\n (finalFolderPath.trim() === \"\" && !path.endsWith(\"/\"))\n ? \"/\"\n : \"\"\n }`\n );\n }\n\n if (encodedPath !== \"\") {\n uploadUrl = `${uploadUrl}?prefix=${encodedPath}`;\n }\n\n const identity = encodeURLString(\n `${bucketName}-${encodedPath}-${new Date().getTime()}-${Math.random()}`\n );\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", uploadUrl, true);\n if (anonymousMode) {\n xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n // xhr.setRequestHeader(\"X-Anonymous\", \"1\");\n\n const areMultipleFiles = files.length > 1;\n let errorMessage = `An error occurred while uploading the file${\n areMultipleFiles ? \"s\" : \"\"\n }.`;\n\n const errorMessages: any = {\n 413: \"Error - File size too large\",\n };\n\n xhr.withCredentials = false;\n xhr.onload = function (event) {\n // resolve promise only when HTTP code is ok\n if (xhr.status >= 200 && xhr.status < 300) {\n dispatch(completeObject(identity));\n resolve({ status: xhr.status });\n\n removeTrace(ID);\n } else {\n // reject promise if there was a server error\n if (errorMessages[xhr.status]) {\n errorMessage = errorMessages[xhr.status];\n } else if (xhr.response) {\n try {\n const err = JSON.parse(xhr.response);\n errorMessage = err.detailedMessage;\n } catch (e) {\n errorMessage = \"something went wrong\";\n }\n }\n\n dispatch(\n failObject({\n instanceID: identity,\n msg: errorMessage,\n })\n );\n reject({ status: xhr.status, message: errorMessage });\n\n removeTrace(ID);\n }\n };\n\n xhr.upload.addEventListener(\"error\", (event) => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n });\n\n xhr.upload.addEventListener(\"progress\", (event) => {\n const progress = Math.floor((event.loaded * 100) / event.total);\n\n dispatch(\n updateProgress({\n instanceID: identity,\n progress: progress,\n })\n );\n });\n\n xhr.onerror = () => {\n reject(errorMessage);\n dispatch(\n failObject({\n instanceID: identity,\n msg: \"A network error occurred.\",\n })\n );\n return;\n };\n xhr.onloadend = () => {\n if (files.length === 0) {\n dispatch(setLoadingObjects(true));\n }\n };\n xhr.onabort = () => {\n dispatch(cancelObjectInList(identity));\n };\n\n const formData = new FormData();\n if (file.size !== undefined) {\n formData.append(file.size.toString(), blobFile, fileName);\n storeCallForObjectWithID(ID, xhr);\n dispatch(\n setNewObject({\n ID,\n bucketName,\n done: false,\n instanceID: identity,\n percentage: 0,\n prefix: `${decodeURLString(encodedPath)}${fileName}`,\n type: \"upload\",\n waitingForFile: false,\n failed: false,\n cancelled: false,\n errorMessage: \"\",\n })\n );\n\n storeFormDataWithID(ID, formData);\n storeCallForObjectWithID(ID, xhr);\n }\n });\n };\n\n const uploadFilePromises: any = [];\n // open object manager\n dispatch(openList());\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n uploadFilePromises.push(uploadPromise(file));\n }\n Promise.allSettled(uploadFilePromises).then((results: Array) => {\n const errors = results.filter(\n (result) => result.status === \"rejected\"\n );\n if (errors.length > 0) {\n const totalFiles = uploadFilePromises.length;\n const successUploadedFiles =\n uploadFilePromises.length - errors.length;\n const err: ErrorResponseHandler = {\n errorMessage: \"There were some errors during file upload\",\n detailedError: `Uploaded files ${successUploadedFiles}/${totalFiles}`,\n };\n dispatch(setErrorSnackMessage(err));\n }\n // We force objects list reload after all promises were handled\n dispatch(setLoadingObjects(true));\n dispatch(setSelectedObjects([]));\n });\n };\n\n upload(files, bucketName, pathPrefix, folderPath);\n },\n [bucketName, dispatch, simplePath, anonymousMode]\n );\n\n const onDrop = useCallback(\n (acceptedFiles: any[]) => {\n if (acceptedFiles && acceptedFiles.length > 0 && canUpload) {\n let newFolderPath: string = acceptedFiles[0].path;\n uploadObject(acceptedFiles, newFolderPath);\n }\n if (!canUpload) {\n dispatch(\n setErrorSnackMessage({\n errorMessage: \"Upload not allowed\",\n detailedError: permissionTooltipHelper(\n [IAM_SCOPES.S3_PUT_OBJECT, IAM_SCOPES.S3_PUT_ACTIONS],\n \"upload objects to this location\"\n ),\n })\n );\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [uploadObject]\n );\n\n const { getRootProps, getInputProps, isDragActive, isDragAccept } =\n useDropzone({\n noClick: true,\n onDrop,\n });\n\n const dndStyles = useMemo(\n () => ({\n ...baseDnDStyle,\n ...(isDragActive ? activeDnDStyle : {}),\n ...(isDragAccept ? acceptDnDStyle : {}),\n }),\n [isDragActive, isDragAccept]\n );\n\n const closeShareModal = () => {\n dispatch(setShareFileModalOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const rewindCloseModal = () => {\n setRewindSelect(false);\n };\n\n const closePreviewWindow = () => {\n dispatch(setPreviewOpen(false));\n dispatch(setSelectedPreview(null));\n };\n\n const onClosePanel = (forceRefresh: boolean) => {\n dispatch(setSelectedObjectView(null));\n dispatch(setVersionsModeEnabled({ status: false }));\n if (detailsOpen && selectedInternalPaths !== null) {\n // We change URL to be the contained folder\n\n const decodedPath = decodeURLString(internalPaths);\n const splitURLS = decodedPath.split(\"/\");\n\n // We remove the last section of the URL as it should be a file\n splitURLS.pop();\n\n let URLItem = \"\";\n\n if (splitURLS && splitURLS.length > 0) {\n URLItem = `${splitURLS.join(\"/\")}/`;\n }\n\n navigate(`/browser/${bucketName}/${encodeURLString(URLItem)}`);\n }\n\n dispatch(setObjectDetailsView(false));\n dispatch(setSelectedObjects([]));\n\n if (forceRefresh) {\n dispatch(setLoadingObjects(true));\n }\n };\n\n const setDeletedAction = () => {\n dispatch(resetMessages());\n dispatch(setShowDeletedObjects(!showDeleted));\n onClosePanel(true);\n };\n\n const closeRenameModal = () => {\n dispatch(setDownloadRenameModal(null));\n };\n\n const closeAddAccessRule = () => {\n dispatch(setAnonymousAccessOpen(false));\n };\n\n let createdTime = DateTime.now();\n\n if (bucketInfo?.creation_date) {\n createdTime = DateTime.fromISO(bucketInfo.creation_date);\n }\n\n let regularButtonOverride: CSSObject = {};\n let callActionButtonOverride: CSSObject = {};\n\n if (colorVariants) {\n regularButtonOverride = {\n backgroundColor: \"transparent\",\n };\n\n callActionButtonOverride = {\n color: get(colorVariants, \"buttonStyles.textColor\", \"#fff\"),\n backgroundColor: get(\n colorVariants,\n \"buttonStyles.backgroundColor\",\n \"#07193E\"\n ),\n \"&:hover\": {\n color: get(colorVariants, \"buttonStyles.hoverText\", \"#fff\"),\n backgroundColor: get(\n colorVariants,\n \"buttonStyles.hoverColor\",\n \"#0D2453\"\n ),\n },\n \"&:active\": {\n color: get(colorVariants, \"buttonStyles.activeText\", \"#fff\"),\n backgroundColor: get(\n colorVariants,\n \"buttonStyles.activeColor\",\n \"#05132F\"\n ),\n },\n };\n }\n\n const multiActionButtons = [\n {\n action: () => {\n dispatch(downloadSelected(bucketName));\n },\n label: \"Download\",\n disabled: !canDownload || selectedObjects?.length === 0,\n icon: ,\n tooltip: canDownload\n ? \"Download Selected\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_GET_OBJECT, IAM_SCOPES.S3_GET_ACTIONS],\n \"download objects from this bucket\"\n ),\n },\n {\n action: () => {\n dispatch(openShare());\n },\n label: \"Share\",\n disabled: selectedObjects.length !== 1 || !canShareFile,\n icon: ,\n tooltip: canShareFile ? \"Share Selected File\" : \"Sharing unavailable\",\n },\n {\n action: () => {\n dispatch(openPreview());\n },\n label: \"Preview\",\n disabled: selectedObjects.length !== 1 || !canPreviewFile,\n icon: ,\n tooltip: canPreviewFile ? \"Preview Selected File\" : \"Preview unavailable\",\n },\n {\n action: () => {\n dispatch(openAnonymousAccess());\n },\n label: \"Anonymous Access\",\n disabled:\n selectedObjects.length !== 1 ||\n !selectedObjects[0].endsWith(\"/\") ||\n !canSetAnonymousAccess,\n icon: ,\n tooltip:\n selectedObjects.length === 1 && selectedObjects[0].endsWith(\"/\")\n ? \"Set Anonymous Access to this Folder\"\n : \"Anonymous Access unavailable\",\n },\n {\n action: () => {\n setDeleteMultipleOpen(true);\n },\n label: \"Delete\",\n icon: ,\n disabled:\n !canDelete || selectedObjects.length === 0 || !displayDeleteObject,\n tooltip: canDelete\n ? \"Delete Selected Files\"\n : permissionTooltipHelper(\n [IAM_SCOPES.S3_DELETE_OBJECT],\n \"delete objects in this bucket\"\n ),\n },\n ];\n\n return (\n \n {shareFileModalOpen && selectedPreview && (\n \n )}\n {deleteMultipleOpen && (\n \n )}\n {rewindSelect && (\n \n )}\n {previewOpen && (\n \n )}\n {!!downloadRenameModal && (\n \n )}\n {anonymousAccessOpen && (\n \n )}\n\n \n {anonymousMode && (\n
\n \n
\n )}\n \n \n \n \n }\n title={{bucketName}}\n subTitle={\n !anonymousMode ? (\n \n \n \n Created on:  \n \n {bucketInfo?.creation_date\n ? createdTime.toFormat(\n \"ccc, LLL dd yyyy HH:mm:ss (ZZZZ)\"\n )\n : \"\"}\n \n \n \n Access:   \n {bucketInfo?.access || \"\"}\n \n {bucketInfo && (\n \n \n {bucketInfo.size && (\n {niceBytesInt(bucketInfo.size)}\n )}\n {bucketInfo.size && quota && (\n / {niceBytesInt(quota.quota)}\n )}\n {bucketInfo.size && bucketInfo.objects ? \" - \" : \"\"}\n {bucketInfo.objects && (\n \n {bucketInfo.objects} Object\n {bucketInfo.objects && bucketInfo.objects !== 1\n ? \"s\"\n : \"\"}\n \n )}\n \n \n )}\n \n \n ) : null\n }\n actions={\n
\n {!anonymousMode && (\n \n \n \n \n }\n variant={\"regular\"}\n onClick={() => {\n setRewindSelect(true);\n }}\n disabled={\n !isVersioned ||\n !hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_OBJECT,\n IAM_SCOPES.S3_GET_ACTIONS,\n ])\n }\n sx={regularButtonOverride}\n />\n \n )}\n \n }\n variant={\"regular\"}\n onClick={() => {\n if (versionsMode) {\n dispatch(setLoadingVersions(true));\n } else {\n dispatch(resetMessages());\n dispatch(setLoadingRecords(true));\n dispatch(setLoadingObjects(true));\n }\n }}\n disabled={\n anonymousMode\n ? false\n : !hasPermission(bucketName, [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]) || rewindEnabled\n }\n sx={regularButtonOverride}\n />\n \n \n \n {\n if (fileUpload && fileUpload.current) {\n fileUpload.current.click();\n }\n closeMenu();\n }}\n uploadFolderFunction={(closeMenu) => {\n if (folderUpload && folderUpload.current) {\n folderUpload.current.click();\n }\n closeMenu();\n }}\n overrideStyles={callActionButtonOverride}\n />\n
\n }\n />\n
\n \n \n \n {versionsMode ? (\n \n {selectedInternalPaths !== null && (\n \n )}\n \n ) : (\n \n \n {!anonymousMode && (\n \n \n \n \n )\n }\n hidePathButton={false}\n />\n \n )}\n \n \n \n )}\n {!anonymousMode && (\n \n {\n onClosePanel(false);\n }}\n className={`${versionsMode ? classes.hideListOnSmall : \"\"}`}\n >\n {selectedObjects.length > 0 && (\n \n )}\n {selectedInternalPaths !== null && (\n \n )}\n \n \n )}\n \n \n
\n
\n );\n};\n\nexport default ListObjects;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport {\n IAM_PAGES,\n IAM_PERMISSIONS,\n IAM_ROLES,\n IAM_SCOPES,\n} from \"../../../common/SecureComponent/permissions\";\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport { BackLink, Button, SettingsIcon, Grid } from \"mds\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { useNavigate } from \"react-router-dom\";\nimport SearchBox from \"../Common/SearchBox\";\nimport { setSearchVersions } from \"./objectBrowserSlice\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport FilterObjectsSB from \"./FilterObjectsSB\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport ObjectManagerButton from \"../Common/ObjectManager/ObjectManagerButton\";\n\ninterface IOBHeader {\n bucketName: string;\n}\n\nconst OBHeader = ({ bucketName }: IOBHeader) => {\n const dispatch = useAppDispatch();\n const features = useSelector(selFeatures);\n\n const versionsMode = useSelector(\n (state: AppState) => state.objectBrowser.versionsMode\n );\n const versionedFile = useSelector(\n (state: AppState) => state.objectBrowser.versionedFile\n );\n const searchVersions = useSelector(\n (state: AppState) => state.objectBrowser.searchVersions\n );\n\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n const navigate = useNavigate();\n\n const configureBucketAllowed = hasPermission(bucketName, [\n IAM_SCOPES.S3_GET_BUCKET_POLICY,\n IAM_SCOPES.S3_PUT_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_BUCKET_VERSIONING,\n IAM_SCOPES.S3_PUT_BUCKET_VERSIONING,\n IAM_SCOPES.S3_GET_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_BUCKET_ENCRYPTION_CONFIGURATION,\n IAM_SCOPES.S3_DELETE_BUCKET,\n IAM_SCOPES.S3_GET_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_PUT_BUCKET_NOTIFICATIONS,\n IAM_SCOPES.S3_GET_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_PUT_REPLICATION_CONFIGURATION,\n IAM_SCOPES.S3_GET_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.S3_PUT_LIFECYCLE_CONFIGURATION,\n IAM_SCOPES.ADMIN_GET_BUCKET_QUOTA,\n IAM_SCOPES.ADMIN_SET_BUCKET_QUOTA,\n IAM_SCOPES.S3_PUT_BUCKET_TAGGING,\n IAM_SCOPES.S3_GET_BUCKET_TAGGING,\n IAM_SCOPES.S3_LIST_BUCKET_VERSIONS,\n IAM_SCOPES.S3_GET_BUCKET_POLICY_STATUS,\n IAM_SCOPES.S3_DELETE_BUCKET_POLICY,\n IAM_SCOPES.S3_GET_ACTIONS,\n IAM_SCOPES.S3_PUT_ACTIONS,\n ]);\n\n const searchBar = (\n \n {!versionsMode ? (\n \n \n \n ) : (\n \n {\n dispatch(setSearchVersions(value));\n }}\n value={searchVersions}\n />\n \n )}\n \n );\n\n return (\n \n {!obOnly ? (\n {\n navigate(IAM_PAGES.OBJECT_BROWSER_VIEW);\n }}\n />\n }\n actions={\n \n \n navigate(`/buckets/${bucketName}/admin`)}\n icon={\n \n }\n style={{\n padding: \"0 10px\",\n }}\n />\n \n \n }\n middleComponent={searchBar}\n />\n ) : (\n \n \n \n \n \n {searchBar}\n \n \n \n )}\n \n );\n};\n\nexport default OBHeader;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport InputLabel from \"@mui/material/InputLabel\";\nimport { DateTime } from \"luxon\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport InputBoxWrapper from \"../InputBoxWrapper/InputBoxWrapper\";\nimport { LinkIcon } from \"mds\";\n\ninterface IDaysSelector {\n classes: any;\n id: string;\n initialDate: Date;\n maxDays?: number;\n label: string;\n entity: string;\n onChange: (newDate: string, isValid: boolean) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n labelContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginBottom: 15,\n },\n fieldContainer: {\n ...fieldBasic.fieldContainer,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n paddingBottom: 10,\n marginTop: 11,\n marginBottom: 6,\n },\n dateInputContainer: {\n margin: \"0 10px\",\n },\n durationInputs: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n\n validityIndicator: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n marginTop: 25,\n marginLeft: 10,\n },\n invalidDurationText: {\n marginTop: 15,\n display: \"flex\",\n color: \"red\",\n fontSize: 11,\n },\n reverseInput: {\n flexFlow: \"row-reverse\",\n \"& > label\": {\n fontWeight: 400,\n marginLeft: 15,\n marginRight: 25,\n },\n },\n validityText: {\n fontSize: 14,\n marginTop: 15,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n \"& > .min-icon\": {\n color: \"#5E5E5E\",\n width: 15,\n height: 15,\n marginRight: 10,\n },\n },\n validTill: {\n fontWeight: \"bold\",\n marginLeft: 15,\n },\n });\n\nconst calculateNewTime = (\n initialDate: Date,\n days: number,\n hours: number,\n minutes: number\n) => {\n return DateTime.fromJSDate(initialDate).plus({ days, hours, minutes });\n};\n\nconst DaysSelector = ({\n classes,\n id,\n initialDate,\n label,\n maxDays,\n entity,\n onChange,\n}: IDaysSelector) => {\n const [selectedDays, setSelectedDays] = useState(7);\n const [selectedHours, setSelectedHours] = useState(0);\n const [selectedMinutes, setSelectedMinutes] = useState(0);\n const [validDate, setValidDate] = useState(true);\n const [dateSelected, setDateSelected] = useState(DateTime.now());\n\n useEffect(() => {\n if (\n !isNaN(selectedHours) &&\n !isNaN(selectedDays) &&\n !isNaN(selectedMinutes)\n ) {\n setDateSelected(\n calculateNewTime(\n initialDate,\n selectedDays,\n selectedHours,\n selectedMinutes\n )\n );\n }\n }, [initialDate, selectedDays, selectedHours, selectedMinutes]);\n\n useEffect(() => {\n if (validDate) {\n const formattedDate = dateSelected.toFormat(\"yyyy-MM-dd HH:mm:ss\");\n onChange(formattedDate.split(\" \").join(\"T\"), true);\n } else {\n onChange(\"0000-00-00\", false);\n }\n }, [dateSelected, onChange, validDate]);\n\n // Basic validation for inputs\n useEffect(() => {\n let valid = true;\n if (\n selectedDays < 0 ||\n (maxDays && selectedDays > maxDays) ||\n isNaN(selectedDays)\n ) {\n valid = false;\n }\n\n if (selectedHours < 0 || selectedHours > 23 || isNaN(selectedHours)) {\n valid = false;\n }\n\n if (selectedMinutes < 0 || selectedMinutes > 59 || isNaN(selectedMinutes)) {\n valid = false;\n }\n\n if (\n maxDays &&\n selectedDays === maxDays &&\n (selectedHours !== 0 || selectedMinutes !== 0)\n ) {\n valid = false;\n }\n\n setValidDate(valid);\n }, [\n dateSelected,\n maxDays,\n onChange,\n selectedDays,\n selectedHours,\n selectedMinutes,\n ]);\n\n const extraInputProps = {\n style: {\n textAlign: \"center\" as const,\n paddingRight: 10,\n paddingLeft: 10,\n width: 25,\n },\n className: \"removeArrows\" as const,\n };\n\n return (\n \n \n \n \n {label}\n \n \n \n \n {\n setSelectedDays(parseInt(e.target.value));\n }}\n value={selectedDays.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedHours(parseInt(e.target.value));\n }}\n value={selectedHours.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n {\n setSelectedMinutes(parseInt(e.target.value));\n }}\n value={selectedMinutes.toString()}\n extraInputProps={extraInputProps}\n noLabelMinWidth\n />\n \n \n \n {validDate ? (\n
\n \n
\n {entity} will be available until:\n
{\" \"}\n
\n {dateSelected.toFormat(\"MM/dd/yyyy HH:mm:ss\")}\n
\n
\n ) : (\n
\n Please select a valid duration.\n
\n )}\n
\n \n
\n );\n};\n\nexport default withStyles(styles)(DaysSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Button, CopyIcon, ShareIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport Grid from \"@mui/material/Grid\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IFileInfo } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../../../common/types\";\nimport api from \"../../../../../../common/api\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PredefinedList from \"../../../../Common/FormComponents/PredefinedList/PredefinedList\";\nimport DaysSelector from \"../../../../Common/FormComponents/DaysSelector/DaysSelector\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport {\n selDistSet,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n} from \"../../../../../../systemSlice\";\nimport { useAppDispatch } from \"../../../../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n shareLinkInfo: {\n fontSize: 14,\n fontWeight: 400,\n },\n copyShareLink: {\n display: \"flex\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n },\n },\n copyShareLinkInput: {\n \"& div:first-child\": {\n marginTop: 0,\n },\n \"@media (max-width: 900px)\": {\n minWidth: 250,\n },\n },\n ...modalStyleUtils,\n ...formFieldStyles,\n });\n\ninterface IShareFileProps {\n classes: any;\n open: boolean;\n bucketName: string;\n dataObject: IFileInfo;\n closeModalAndRefresh: () => void;\n}\n\nconst ShareFile = ({\n classes,\n open,\n closeModalAndRefresh,\n bucketName,\n dataObject,\n}: IShareFileProps) => {\n const dispatch = useAppDispatch();\n const distributedSetup = useSelector(selDistSet);\n const [shareURL, setShareURL] = useState(\"\");\n const [isLoadingVersion, setIsLoadingVersion] = useState(true);\n const [isLoadingFile, setIsLoadingFile] = useState(false);\n const [selectedDate, setSelectedDate] = useState(\"\");\n const [dateValid, setDateValid] = useState(true);\n const [versionID, setVersionID] = useState(\"null\");\n\n const initialDate = new Date();\n\n const dateChanged = (newDate: string, isValid: boolean) => {\n setDateValid(isValid);\n if (isValid) {\n setSelectedDate(newDate);\n return;\n }\n setSelectedDate(\"\");\n setShareURL(\"\");\n };\n\n useEffect(() => {\n // In case version is undefined, we get the latest version of the object\n if (dataObject.version_id === undefined) {\n // In case it is not distributed setup, then we default to \"null\";\n if (distributedSetup) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects?prefix=${encodeURLString(\n dataObject.name\n )}${distributedSetup ? \"&with_versions=true\" : \"\"}`\n )\n .then((res: { objects: IFileInfo[] }) => {\n const result: IFileInfo[] = res.objects || [];\n\n const latestVersion: IFileInfo | undefined = result.find(\n (elem: IFileInfo) => elem.is_latest\n );\n\n if (latestVersion) {\n setVersionID(`${latestVersion.version_id}`);\n return;\n }\n\n // Version couldn't ve retrieved, we default\n setVersionID(\"null\");\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n });\n\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(\"null\");\n setIsLoadingVersion(false);\n return;\n }\n setVersionID(dataObject.version_id || \"null\");\n setIsLoadingVersion(false);\n }, [bucketName, dataObject, distributedSetup, dispatch]);\n\n useEffect(() => {\n if (dateValid && !isLoadingVersion) {\n setIsLoadingFile(true);\n setShareURL(\"\");\n\n const slDate = new Date(`${selectedDate}`);\n const currDate = new Date();\n\n const diffDate = Math.ceil(\n (slDate.getTime() - currDate.getTime()) / 1000\n );\n\n if (diffDate > 0) {\n api\n .invoke(\n \"GET\",\n `/api/v1/buckets/${bucketName}/objects/share?prefix=${encodeURLString(\n dataObject.name\n )}&version_id=${versionID}${\n selectedDate !== \"\" ? `&expires=${diffDate}s` : \"\"\n }`\n )\n .then((res: string) => {\n setShareURL(res);\n setIsLoadingFile(false);\n })\n .catch((error: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(error));\n setShareURL(\"\");\n setIsLoadingFile(false);\n });\n }\n }\n }, [\n dataObject,\n selectedDate,\n bucketName,\n dateValid,\n setShareURL,\n dispatch,\n distributedSetup,\n isLoadingVersion,\n versionID,\n ]);\n\n return (\n \n }\n modalOpen={open}\n onClose={() => {\n closeModalAndRefresh();\n }}\n >\n {isLoadingVersion && (\n \n \n \n )}\n {!isLoadingVersion && (\n \n \n This is a temporary URL with integrated access credentials for\n sharing objects valid for up to 7 days.\n
\n
\n The temporary URL expires after the configured time limit.\n
\n
\n \n \n \n \n \n \n {\n dispatch(\n setModalSnackMessage(\n \"Share URL Copied to clipboard\"\n )\n );\n }}\n disabled={shareURL === \"\" || isLoadingFile}\n style={{\n marginRight: \"5px\",\n width: \"28px\",\n height: \"28px\",\n padding: \"0px\",\n }}\n icon={}\n />\n \n }\n />\n \n \n
\n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(ShareFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, LinearProgress } from \"@mui/material\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { extensionPreview } from \"../utils\";\nimport { encodeURLString } from \"../../../../../../common/utils\";\nimport clsx from \"clsx\";\n\nconst styles = () =>\n createStyles({\n iframeContainer: {\n border: \"0px\",\n flex: \"1 1 auto\",\n width: \"100%\",\n height: 250,\n backgroundColor: \"transparent\",\n borderRadius: 5,\n\n \"&.image\": {\n height: 500,\n },\n \"&.text\": {\n height: 700,\n },\n \"&.audio\": {\n height: 150,\n },\n \"&.video\": {\n height: 350,\n },\n \"&.fullHeight\": {\n height: \"calc(100vh - 185px)\",\n },\n },\n iframeBase: {\n backgroundColor: \"#fff\",\n },\n iframeHidden: {\n display: \"none\",\n },\n });\n\ninterface IPreviewFileProps {\n bucketName: string;\n object: BucketObjectItem | null;\n isFullscreen?: boolean;\n classes: any;\n}\n\nconst PreviewFile = ({\n bucketName,\n object,\n isFullscreen = false,\n classes,\n}: IPreviewFileProps) => {\n const [loading, setLoading] = useState(true);\n\n let path = \"\";\n\n if (object) {\n const encodedPath = encodeURLString(object.name);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n path = `${window.location.origin}${basename}api/v1/buckets/${bucketName}/objects/download?preview=true&prefix=${encodedPath}`;\n if (object.version_id) {\n path = path.concat(`&version_id=${object.version_id}`);\n }\n }\n\n const objectType = extensionPreview(object?.name || \"\");\n\n const iframeLoaded = () => {\n setLoading(false);\n };\n\n return (\n \n {loading && (\n \n \n \n )}\n
\n {objectType === \"video\" && (\n \n \n \n )}\n {objectType === \"audio\" && (\n \n \n \n )}\n {objectType === \"image\" && (\n \n )}\n {objectType !== \"video\" &&\n objectType !== \"audio\" &&\n objectType !== \"image\" && (\n \n \n File couldn't be loaded. Please try Download instead\n \n
\n )}\n \n
\n );\n};\nexport default withStyles(styles)(PreviewFile);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport ModalWrapper from \"../../../../Common/ModalWrapper/ModalWrapper\";\nimport PreviewFileContent from \"./PreviewFileContent\";\nimport { BucketObjectItem } from \"../ListObjects/types\";\nimport { ObjectPreviewIcon } from \"mds\";\n\ninterface IPreviewFileProps {\n open: boolean;\n bucketName: string;\n object: BucketObjectItem | null;\n onClosePreview: () => void;\n}\n\nconst PreviewFileModal = ({\n open,\n bucketName,\n object,\n onClosePreview,\n}: IPreviewFileProps) => {\n return (\n \n }\n >\n \n \n \n );\n};\n\nexport default PreviewFileModal;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { BucketObjectItem } from \"./ListObjects/types\";\nimport { IAllowResources } from \"../../../types\";\nimport { encodeURLString } from \"../../../../../common/utils\";\nimport { removeTrace } from \"../../../ObjectBrowser/transferManager\";\nimport store from \"../../../../../store\";\n\nexport const download = (\n bucketName: string,\n objectPath: string,\n versionID: any,\n fileSize: number,\n overrideFileName: string | null = null,\n id: string,\n progressCallback: (progress: number) => void,\n completeCallback: () => void,\n errorCallback: (msg: string) => void,\n abortCallback: () => void\n) => {\n const anchor = document.createElement(\"a\");\n document.body.appendChild(anchor);\n let basename = document.baseURI.replace(window.location.origin, \"\");\n const state = store.getState();\n const anonymousMode = state.system.anonymousMode;\n\n let path = `${\n window.location.origin\n }${basename}api/v1/buckets/${bucketName}/objects/download?prefix=${objectPath}${\n overrideFileName !== null && overrideFileName.trim() !== \"\"\n ? `&override_file_name=${encodeURLString(overrideFileName || \"\")}`\n : \"\"\n }`;\n if (versionID) {\n path = path.concat(`&version_id=${versionID}`);\n }\n\n var req = new XMLHttpRequest();\n req.open(\"GET\", path, true);\n if (anonymousMode) {\n req.setRequestHeader(\"X-Anonymous\", \"1\");\n }\n req.addEventListener(\n \"progress\",\n function (evt) {\n let percentComplete = Math.round((evt.loaded / fileSize) * 100);\n\n if (progressCallback) {\n progressCallback(percentComplete);\n }\n },\n false\n );\n\n req.responseType = \"blob\";\n req.onreadystatechange = () => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n const rspHeader = req.getResponseHeader(\"Content-Disposition\");\n\n let filename = \"download\";\n if (rspHeader) {\n let rspHeaderDecoded = decodeURIComponent(rspHeader);\n filename = rspHeaderDecoded.split('\"')[1];\n }\n\n if (completeCallback) {\n completeCallback();\n }\n\n removeTrace(id);\n\n var link = document.createElement(\"a\");\n link.href = window.URL.createObjectURL(req.response);\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n } else {\n if (req.getResponseHeader(\"Content-Type\") === \"application/json\") {\n const rspBody: { detailedMessage?: string } = JSON.parse(\n req.response\n );\n if (rspBody.detailedMessage) {\n errorCallback(rspBody.detailedMessage);\n return;\n }\n }\n errorCallback(`Unexpected response status code (${req.status}).`);\n }\n }\n };\n req.onerror = () => {\n if (errorCallback) {\n errorCallback(\"A network error occurred.\");\n }\n };\n req.onabort = () => {\n if (abortCallback) {\n abortCallback();\n }\n };\n\n return req;\n};\n\n// Review file extension by name & returns the type of preview browser that can be used\nexport const extensionPreview = (\n fileName: string\n): \"image\" | \"text\" | \"audio\" | \"video\" | \"none\" => {\n const imageExtensions = [\n \"jif\",\n \"jfif\",\n \"apng\",\n \"avif\",\n \"svg\",\n \"webp\",\n \"bmp\",\n \"ico\",\n \"jpg\",\n \"jpe\",\n \"jpeg\",\n \"gif\",\n \"png\",\n \"heic\",\n ];\n const textExtensions = [\"pdf\"];\n const audioExtensions = [\"wav\", \"mp3\", \"alac\", \"aiff\", \"dsd\", \"pcm\"];\n const videoExtensions = [\n \"mp4\",\n \"avi\",\n \"mpg\",\n \"webm\",\n \"mov\",\n \"flv\",\n \"mkv\",\n \"wmv\",\n \"avchd\",\n \"mpeg-4\",\n ];\n\n let fileExtension = fileName.split(\".\").pop();\n\n if (!fileExtension) {\n return \"none\";\n }\n\n fileExtension = fileExtension.toLowerCase();\n\n if (imageExtensions.includes(fileExtension)) {\n return \"image\";\n }\n\n if (textExtensions.includes(fileExtension)) {\n return \"text\";\n }\n\n if (audioExtensions.includes(fileExtension)) {\n return \"audio\";\n }\n\n if (videoExtensions.includes(fileExtension)) {\n return \"video\";\n }\n\n return \"none\";\n};\n\nexport const sortListObjects = (fieldSort: string) => {\n switch (fieldSort) {\n case \"name\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n a.name.localeCompare(b.name);\n case \"last_modified\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n new Date(a.last_modified).getTime() -\n new Date(b.last_modified).getTime();\n case \"size\":\n return (a: BucketObjectItem, b: BucketObjectItem) =>\n (a.size || -1) - (b.size || -1);\n }\n};\n\nexport const permissionItems = (\n bucketName: string,\n currentPath: string,\n permissionsArray: IAllowResources[]\n): BucketObjectItem[] | null => {\n if (permissionsArray.length === 0) {\n return null;\n }\n\n // We get permissions applied to the current bucket\n const filteredPermissionsForBucket = permissionsArray.filter(\n (permissionItem) =>\n permissionItem.resource.endsWith(`:${bucketName}`) ||\n permissionItem.resource.includes(`:${bucketName}/`)\n );\n\n // No permissions for this bucket. we can throw the error message at this point\n if (filteredPermissionsForBucket.length === 0) {\n return null;\n }\n\n const returnElements: BucketObjectItem[] = [];\n\n // We split current path\n const splitCurrentPath = currentPath.split(\"/\");\n\n filteredPermissionsForBucket.forEach((permissionElement) => {\n // We review paths in resource address\n\n // We split ARN & get the last item to check the URL\n const splitARN = permissionElement.resource.split(\":\");\n const urlARN = splitARN.pop() || \"\";\n\n // We split the paths of the URL & compare against current location to see if there are more items to include. In case current level is a wildcard or is the last one, we omit this validation\n\n const splitURLARN = urlARN.split(\"/\");\n\n // splitURL has more items than bucket name, we can continue validating\n if (splitURLARN.length > 1) {\n splitURLARN.every((currentElementInPath, index) => {\n // It is a wildcard element. We can store the verification as value should be included (?)\n if (currentElementInPath === \"*\") {\n return false;\n }\n\n // Element is not included in the path. The user is trying to browse something else.\n if (\n splitCurrentPath[index] &&\n splitCurrentPath[index] !== currentElementInPath\n ) {\n return false;\n }\n\n // This element is not included by index in the current paths list. We add it so user can browse into it\n if (!splitCurrentPath[index]) {\n returnElements.push({\n name: `${currentElementInPath}/`,\n size: 0,\n last_modified: \"\",\n version_id: \"\",\n });\n }\n\n return true;\n });\n }\n\n // We review prefixes in allow resources for StringEquals variant only.\n if (\n permissionElement.conditionOperator === \"StringEquals\" ||\n permissionElement.conditionOperator === \"StringLike\"\n ) {\n permissionElement.prefixes.forEach((prefixItem) => {\n // Prefix Item is not empty?\n if (prefixItem !== \"\") {\n const splitItems = prefixItem.split(\"/\");\n\n let pathToRouteElements: string[] = [];\n\n splitItems.every((splitElement, index) => {\n if (!splitElement.includes(\"*\") && splitElement !== \"\") {\n if (splitElement !== splitCurrentPath[index]) {\n returnElements.push({\n name: `${pathToRouteElements.join(\"/\")}${\n pathToRouteElements.length > 0 ? \"/\" : \"\"\n }${splitElement}/`,\n size: 0,\n last_modified: \"\",\n version_id: \"\",\n });\n return false;\n }\n if (splitElement !== \"\") {\n pathToRouteElements.push(splitElement);\n }\n\n return true;\n }\n return false;\n });\n }\n });\n }\n });\n\n return returnElements;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { InputLabel, Switch, Tooltip, Typography } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport { actionsTray, fieldBasic } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input/Input\";\n\ninterface IFormSwitch {\n label?: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n description?: string;\n index?: number;\n checked: boolean;\n switchOnly?: boolean;\n indicatorLabels?: string[];\n extraInputProps?: StandardInputProps[\"inputProps\"];\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n indicatorLabelOn: {\n fontWeight: \"bold\",\n color: \"#081C42 !important\",\n },\n indicatorLabel: {\n fontSize: 12,\n color: \"#E2E2E2\",\n margin: \"0 8px 0 10px\",\n },\n fieldDescription: {\n marginTop: 4,\n color: \"#999999\",\n },\n tooltip: {\n fontSize: 16,\n },\n ...actionsTray,\n ...fieldBasic,\n });\n\nconst StyledSwitch = withStyles((theme) => ({\n root: {\n width: 50,\n height: 24,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 1,\n \"&$checked\": {\n transform: \"translateX(24px)\",\n color: theme.palette.common.white,\n \"& + $track\": {\n backgroundColor: \"#4CCB92\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n border: \"none\",\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#4CCB92\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 22,\n height: 22,\n backgroundColor: \"#FAFAFA\",\n border: \"2px solid #FFFFFF\",\n marginLeft: 1,\n },\n track: {\n borderRadius: 24 / 2,\n backgroundColor: \"#E2E2E2\",\n boxShadow: \"inset 0px 1px 4px rgba(0,0,0,0.1)\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n switchContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n}))(Switch);\n\nconst FormSwitchWrapper = ({\n label = \"\",\n onChange,\n value,\n id,\n name,\n checked = false,\n disabled = false,\n switchOnly = false,\n tooltip = \"\",\n description = \"\",\n classes,\n indicatorLabels,\n extraInputProps = {},\n}: IFormSwitch) => {\n const switchComponent = (\n \n {!switchOnly && (\n \n {indicatorLabels && indicatorLabels.length > 1\n ? indicatorLabels[1]\n : \"OFF\"}\n \n )}\n \n {!switchOnly && (\n \n {indicatorLabels ? indicatorLabels[0] : \"ON\"}\n \n )}\n \n );\n\n if (switchOnly) {\n return switchComponent;\n }\n\n return (\n

\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n
\n \n {switchComponent}\n
\n {description !== \"\" && (\n \n \n {description}\n \n \n )}\n \n
\n );\n};\n\nexport default withStyles(styles)(FormSwitchWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React, { ClipboardEvent, useState } from \"react\";\nimport {\n Grid,\n IconButton,\n InputLabel,\n TextField,\n TextFieldProps,\n Tooltip,\n} from \"@mui/material\";\nimport { OutlinedInputProps } from \"@mui/material/OutlinedInput\";\nimport { InputProps as StandardInputProps } from \"@mui/material/Input\";\nimport VisibilityOffIcon from \"@mui/icons-material/VisibilityOff\";\nimport RemoveRedEyeIcon from \"@mui/icons-material/RemoveRedEye\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n inputFieldStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: React.ChangeEvent) => void;\n onKeyPress?: (e: any) => void;\n onFocus?: () => void;\n onPaste?: (e: ClipboardEvent) => void;\n value: string | boolean;\n id: string;\n name: string;\n disabled?: boolean;\n multiline?: boolean;\n type?: string;\n tooltip?: string;\n autoComplete?: string;\n index?: number;\n error?: string;\n required?: boolean;\n placeholder?: string;\n min?: string;\n max?: string;\n overlayId?: string;\n overlayIcon?: any;\n overlayAction?: () => void;\n overlayObject?: any;\n extraInputProps?: StandardInputProps[\"inputProps\"];\n noLabelMinWidth?: boolean;\n pattern?: string;\n autoFocus?: boolean;\n className?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n textBoxContainer: {\n flexGrow: 1,\n position: \"relative\",\n },\n overlayAction: {\n position: \"absolute\",\n right: 5,\n top: 6,\n \"& svg\": {\n maxWidth: 15,\n maxHeight: 15,\n },\n \"&.withLabel\": {\n top: 5,\n },\n },\n });\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n ...inputFieldStyles,\n })\n);\n\nfunction InputField(props: TextFieldProps) {\n const classes = inputStyles();\n\n return (\n }\n {...props}\n />\n );\n}\n\nconst InputBoxWrapper = ({\n label,\n onChange,\n value,\n id,\n name,\n type = \"text\",\n autoComplete = \"off\",\n disabled = false,\n multiline = false,\n tooltip = \"\",\n index = 0,\n error = \"\",\n required = false,\n placeholder = \"\",\n min,\n max,\n overlayId,\n overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n onFocus,\n onPaste,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\n const [toggleTextInput, setToggleTextInput] = useState(false);\n\n if (type === \"number\" && min) {\n inputProps[\"min\"] = min;\n }\n\n if (type === \"number\" && max) {\n inputProps[\"max\"] = max;\n }\n\n if (pattern !== \"\") {\n inputProps[\"pattern\"] = pattern;\n }\n\n let inputBoxWrapperIcon = overlayIcon;\n let inputBoxWrapperType = type;\n\n if (type === \"password\" && overlayIcon === null) {\n inputBoxWrapperIcon = toggleTextInput ? (\n \n ) : (\n \n );\n inputBoxWrapperType = toggleTextInput ? \"text\" : \"password\";\n }\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n
\n \n {inputBoxWrapperIcon && (\n \n {\n overlayAction();\n }\n : () => setToggleTextInput(!toggleTextInput)\n }\n id={overlayId}\n size={\"small\"}\n disableFocusRipple={false}\n disableRipple={false}\n disableTouchRipple={false}\n >\n {inputBoxWrapperIcon}\n \n
\n )}\n {overlayObject && (\n \n {overlayObject}\n \n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import React, { Fragment } from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { predefinedList } from \"../common/styleLibrary\";\n\ninterface IPredefinedList {\n classes: any;\n label?: string;\n content: any;\n multiLine?: boolean;\n actionButton?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...predefinedList,\n });\n\nconst PredefinedList = ({\n classes,\n label = \"\",\n content,\n multiLine = false,\n actionButton,\n}: IPredefinedList) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n \n )}\n \n \n {content}\n \n {actionButton && (\n
{actionButton}
\n )}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PredefinedList);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport clsx from \"clsx\";\nimport Grid from \"@mui/material/Grid\";\nimport RadioGroup from \"@mui/material/RadioGroup\";\nimport FormControlLabel from \"@mui/material/FormControlLabel\";\nimport Radio, { RadioProps } from \"@mui/material/Radio\";\nimport { InputLabel, Tooltip } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { fieldBasic, radioIcons, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface SelectorTypes {\n label: any;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: any;\n id: string;\n name: string;\n tooltip?: string;\n disableOptions?: boolean;\n onChange: (e: React.ChangeEvent) => void;\n classes: any;\n displayInColumn?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n optionLabel: {\n \"&.Mui-disabled\": {\n \"& .MuiFormControlLabel-label\": {\n color: \"#9c9c9c\",\n },\n },\n \"&:last-child\": {\n marginRight: 0,\n },\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n },\n },\n checkedOption: {\n \"& .MuiFormControlLabel-label\": {\n fontSize: 12,\n color: \"#07193E\",\n fontWeight: 700,\n },\n },\n });\n\nconst radioStyles = makeStyles({\n root: {\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n ...radioIcons,\n});\n\nconst RadioButton = (props: RadioProps) => {\n const classes = radioStyles();\n\n return (\n }\n icon={}\n {...props}\n />\n );\n};\n\nexport const RadioGroupSelector = ({\n selectorOptions = [],\n currentSelection,\n label,\n id,\n name,\n onChange,\n tooltip = \"\",\n disableOptions = false,\n classes,\n displayInColumn = false,\n}: RadioGroupProps) => {\n return (\n \n \n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n
\n \n \n {selectorOptions.map((selectorOption) => {\n return (\n }\n label={selectorOption.label}\n disabled={disableOptions}\n className={clsx(classes.optionLabel, {\n [classes.checkedOption]:\n selectorOption.value === currentSelection,\n })}\n />\n );\n })}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(RadioGroupSelector);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n FormControl,\n InputBase,\n InputLabel,\n MenuItem,\n Select,\n SelectChangeEvent,\n Tooltip,\n} from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\nimport { HelpIcon } from \"mds\";\n\nexport interface selectorTypes {\n label: string;\n value: string;\n}\n\ninterface SelectProps {\n options: selectorTypes[];\n value: string;\n label: string;\n id: string;\n name: string;\n tooltip?: string;\n onChange: (e: SelectChangeEvent) => void;\n disabled?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n fieldContainer: {\n display: \"flex\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n });\n\nconst SelectStyled = withStyles((theme: Theme) =>\n createStyles({\n root: {\n height: 38,\n lineHeight: 1,\n \"label + &\": {\n marginTop: theme.spacing(3),\n },\n },\n input: {\n height: 38,\n position: \"relative\",\n color: \"#07193E\",\n fontSize: 13,\n fontWeight: 600,\n padding: \"8px 20px 10px 10px\",\n border: \"#e5e5e5 1px solid\",\n borderRadius: 4,\n display: \"flex\",\n alignItems: \"center\",\n \"&:hover\": {\n borderColor: \"#393939\",\n },\n \"&:focus\": {\n backgroundColor: \"#fff\",\n },\n },\n })\n)(InputBase);\n\nconst SelectWrapper = ({\n classes,\n id,\n name,\n onChange,\n options,\n label,\n tooltip = \"\",\n value,\n disabled = false,\n}: SelectProps) => {\n return (\n \n \n {label !== \"\" && (\n \n {label}\n {tooltip !== \"\" && (\n
\n \n
\n \n
\n
\n
\n )}\n
\n )}\n \n }\n disabled={disabled}\n >\n {options.map((option) => (\n \n {option.label}\n \n ))}\n \n \n
\n
\n );\n};\n\nexport default withStyles(styles)(SelectWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\n\ninterface IScreenTitle {\n icon?: any;\n title?: any;\n subTitle?: any;\n actions?: any;\n className?: any;\n}\n\nconst useStyles = makeStyles((theme: Theme) => ({\n headerBarIcon: {\n marginRight: \".7rem\",\n color: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 44,\n height: 44,\n },\n \"@media (max-width: 600px)\": {\n display: \"none\",\n },\n },\n headerBarSubheader: {\n color: \"grey\",\n \"@media (max-width: 900px)\": {\n maxWidth: 200,\n },\n },\n stContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: 8,\n\n borderBottom: \"1px solid #EAEAEA\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n },\n },\n titleColumn: {\n height: \"auto\",\n justifyContent: \"center\",\n display: \"flex\",\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n \"& h1\": {\n fontSize: 19,\n },\n },\n leftItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"@media (max-width: 600px)\": {\n flexFlow: \"column\",\n width: \"100%\",\n },\n },\n rightItems: {\n display: \"flex\",\n alignItems: \"center\",\n \"& button\": {\n marginLeft: 8,\n },\n \"@media (max-width: 600px)\": {\n width: \"100%\",\n },\n },\n}));\n\nconst ScreenTitle = ({\n icon,\n title,\n subTitle,\n actions,\n className,\n}: IScreenTitle) => {\n const classes = useStyles();\n return (\n \n \n
\n {icon ?
{icon}
: null}\n
\n

{title}

\n {subTitle}\n
\n
\n\n
{actions}
\n
\n \n );\n};\n\nexport default ScreenTitle;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Button, CopyIcon } from \"mds\";\nimport InputBoxWrapper from \"../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\n\nconst KeyRevealer = ({ value }: { value: string }) => {\n const [shown, setShown] = useState(false);\n\n return (\n \n {}}\n value={value}\n overlayIcon={}\n extraInputProps={{\n readOnly: true,\n }}\n overlayAction={() => navigator.clipboard.writeText(value)}\n />\n\n setShown(!shown)}\n label={\"Show/Hide\"}\n />\n \n );\n};\n\nexport default KeyRevealer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\n// Close codes for websockets defined in RFC 6455\nexport const WSCloseNormalClosure = 1000;\nexport const WSCloseCloseGoingAway = 1001;\nexport const WSCloseAbnormalClosure = 1006;\nexport const WSClosePolicyViolation = 1008;\nexport const WSCloseInternalServerErr = 1011;\n\nexport const wsProtocol = (protocol: string): string => {\n let wsProtocol = \"ws\";\n if (protocol === \"https:\") {\n wsProtocol = \"wss\";\n }\n return wsProtocol;\n};\n"],"names":["withStyles","theme","createStyles","_objectSpread","formFieldStyles","modalStyleUtils","_ref","modalOpen","onClose","classes","bucket","prefilledRoute","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","prefix","setPrefix","_useState3","_useState4","selectedAccess","setSelectedAccess","useEffect","_jsx","ModalWrapper","title","titleIcon","AddAccessRuleIcon","children","_jsxs","Grid","container","item","xs","className","formFieldRow","InputBoxWrapper","value","label","id","name","placeholder","onChange","e","target","tooltip","SelectWrapper","options","disabled","modalButtonBar","Button","type","variant","onClick","trim","api","concat","access","then","res","setSnackBarMessage","catch","err","setErrorSnackMessage","objectsWS","CreatePathModal","withSuspense","React","useStyles","makeStyles","objectBrowserCommon","slashSpacingStyle","margin","bucketName","internalPaths","hidePathButton","additionalOptions","navigate","useNavigate","rewindEnabled","useSelector","state","objectBrowser","rewind","versionsMode","versionedFile","anonymousMode","system","colorVariants","overrideStyles","createFolderOpen","setCreateFolderOpen","canCreatePath","hasPermission","IAM_SCOPES","paths","splitPaths","split","filter","path","lastBreadcrumbsIndex","length","breadcrumbsMap","map","objectItem","index","subSplit","slice","join","route","encodeURLString","Fragment","style","cursor","Link","to","setVersionsModeEnabled","status","objectName","toString","versionsItem","listBreadcrumbs","_toConsumableArray","regularButtonOverride","backgroundColor","breadcrumbsMain","folderName","breadcrumbs","IconButton","sx","border","borderLeft","borderRadius","width","height","marginRight","BackCaretIcon","breadcrumbsList","dir","CopyToClipboard","text","icon","CopyIcon","fill","marginTop","color","Tooltip","permissionTooltipHelper","NewPathIcon","whiteSpace","breadcrumbsSecond","listUploadIcons","uploadPath","_ref$forceDisable","forceDisable","uploadFileFunction","uploadFolderFunction","_ref$overrideStyles","anchorEl","setAnchorEl","openUploadMenu","Boolean","handleCloseUpload","uploadObjectAllowed","uploadFolderAllowed","uploadEnabled","TooltipWrapper","undefined","event","currentTarget","UploadIcon","Menu","open","anchorOrigin","vertical","horizontal","transformOrigin","MenuItem","ListItemIcon","ListItemText","UploadFolderIcon","detailsList","borderColor","borderWidth","borderStyle","borderBottomLeftRadius","borderBottomRightRadius","transitionDuration","overflowX","overflowY","position","opacity","marginLeft","minWidth","borderLeftWidth","closePanel","right","top","_ref$className","ClosePanelIcon","months","days","Array","from","_","num","currentYear","Date","getFullYear","years","numYear","SelectStyled","root","input","borderBottom","fontSize","InputBase","DateSelector","forwardRef","ref","_ref$disableOptions","disableOptions","_ref$addSwitch","addSwitch","_ref$tooltip","_ref$borderBottom","onDateChange","_ref$value","useImperativeHandle","resetDate","dateEnabled","setDateEnabled","month","setMonth","_useState5","_useState6","day","setDay","_useState7","_useState8","year","setYear","valueSplit","parseInt","_validDate","currentDate","parse","isNaN","parsedMonth","parsedDay","monthForString","dayForString","parsedDate","toISOString","dateString","validDate","_validDate2","isValid","isDateDisabled","clsx","fieldContainer","_defineProperty","fieldContainerBorder","labelContainer","InputLabel","htmlFor","inputLabel","tooltipContainer","placement","HelpIcon","FormSwitchWrapper","indicatorLabels","checked","switchOnly","FormControl","dateInput","Select","displayEmpty","option","dayNumber","fieldBasic","tooltipHelper","flex","display","alignItems","justifyContent","paddingBottom","marginBottom","spacingUtils","dateSelector","paddingLeft","closeModalAndRefresh","objectInfo","statusEnabled","setStatusEnabled","setType","date","setDate","isDateValid","setIsDateValid","_useState9","_useState10","isSaving","setIsSaving","_useState11","_useState12","alreadyConfigured","setAlreadyConfigured","retention_mode","toLowerCase","retention_until_date","valueDate","getMonth","getDate","dateElement","useRef","resetForm","current","showSwitcher","spacerBottom","noValidate","autoComplete","onSubmit","preventDefault","RadioGroupSelector","currentSelection","selectorOptions","selectedObject","versionId","version_id","expireDate","expires","mode","error","setModalErrorSnackMessage","addRetention","disableRetention","closeDeleteModalAndRefresh","deleteOpen","selectedBucket","versioningInfo","_ref$selectedVersion","selectedVersion","_useApi","useApi","detailedError","_useApi2","deleteLoading","invokeDeleteApi","deleteVersions","setDeleteVersions","bypassGovernance","setBypassGovernance","retentionConfig","canBypass","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","recursive","decodeURLString","endsWith","confirmationContent","DialogContentText","Status","description","padding","actualInfo","legalHoldEnabled","setLegalHoldEnabled","get","titleItem","detailsPanel","metaData","_ref$linear","linear","metaKeys","Object","keys","element","renderItem","isArray","decodeURIComponent","Box","metadataLinear","Table","table","TableBody","TableRow","TableCell","component","scope","align","fontWeight","restProps","_objectWithoutProperties","_excluded","startIcon","items","titleLabel","objectActions","actionItem","ObjectActionButton","action","fileName","minHeight","fileNameText","overflow","textOverflow","strings","extensionToIcon","FileVideoIcon","extensions","FileMusicIcon","FilePdfIcon","FilePptIcon","FileXlsIcon","FileLockIcon","FileCodeIcon","FileConfigIcon","FileDbIcon","FileFontIcon","FileTxtIcon","FileZipIcon","FileBookIcon","FileImageIcon","displayFileIconName","returnOnlyIcon","arguments","elementString","FileNonType","FolderBrowserIcon","lowercaseElement","_i","_extensionToIcon","_step","etc","_iterator","_createForOfIteratorHelper","s","n","done","ext","f","indexOf","FileMissingIcon","splitItem","IconWithLabel","newTileHeader","tagsForLabel","currentTagsContainer","noTagsForObject","deleteTag","onCloseAndUpdate","distributedSetup","selDistSet","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","deleteEnabled","setDeleteEnabled","deleteKey","setDeleteKey","deleteLabel","setDeleteLabel","currentTags","tags","currTagKeys","currentItem","pop","tagsFor","plural","DisabledIcon","EditTagIcon","cleanObject","verID","SecureComponent","scopes","resource","flexFlow","tagKey","tag","errorProps","deleteIcon","onDelete","Chip","textTransform","size","CloseIcon","onDeleteTag","AddNewTagIcon","newTag","newTagList","closeInspectModalAndRefresh","inspectOpen","inspectPath","volumeName","isEncrypt","setIsEncrypt","decryptionKey","setDecryptionKey","insFileName","setInsFileName","makeRequest","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","wrap","_context","prev","next","fetch","method","abrupt","sent","stop","_x","apply","performInspect","_ref3","_callee3","file","volume","urlOfInspectApi","_context3","_ref4","_callee2","resErr","blob","filename","decryptKey","_context2","ok","json","errorMessage","message","code","headers","getCookieValue","performDownload","_x2","InspectMenuIcon","deleteCookie","PasswordKeyIcon","KeyRevealer","containerForHeader","closeModal","newFileName","setNewFileName","acceptLongName","setAcceptLongName","EditIcon","identityDownload","getTime","Math","random","ID","makeid","downloadCall","download","progress","updateProgress","instanceID","completeObject","msg","failObject","cancelObjectInList","storeCallForObjectWithID","setNewObject","percentage","waitingForFile","failed","cancelled","doDownload","modalFormScrollable","downloadObject","object","getClientOS","includes","setLongFileOpen","emptyFile","is_latest","last_modified","legal_hold_status","ObjectDetailsTitle","objectNameContainer","headerForSection","capitalizeFirst","actionsTray","textStyleUtils","locking","onClosePanel","loadingObjectInfo","shareFileModalOpen","setShareFileModalOpen","retentionModalOpen","setRetentionModalOpen","tagModalOpen","setTagModalOpen","legalholdOpen","setLegalholdOpen","inspectModalOpen","setInspectModalOpen","setActualInfo","_useState13","_useState14","allInfoElements","setAllInfoElements","_useState15","_useState16","objectToShare","setObjectToShare","_useState17","_useState18","versions","setVersions","_useState19","_useState20","setDeleteOpen","_useState21","_useState22","previewOpen","setPreviewOpen","_useState23","_useState24","totalVersionsSize","setTotalVersionsSize","_useState25","_useState26","longFileOpen","_useState27","_useState28","setMetaData","_useState29","_useState30","loadMetadata","setLoadingMetadata","objectNameArray","infoElement","find","el","is_delete_marker","result","objects","tVersionSize","reduce","acc","currValue","resInfo","setLoadingObjectInfo","console","metadata","tagKeys","loaderForContainer","textAlign","Loader","objectResources","canSetLegalHold","canSetTags","canChangeRetention","canInspect","canChangeVersioning","canGetObject","canDelete","multiActionButtons","DownloadIcon","ShareIcon","extensionPreview","PreviewIcon","LegalHoldIcon","RetentionIcon","TagsIcon","VersionsIcon","ShareFile","dataObject","SetRetention","updateInfo","DeleteObject","closeAndReload","setLoadingVersions","setSelectedVersion","SetLegalHoldModal","reload","PreviewFileModal","content_type","onClosePreview","TagsModal","reloadObjectData","InspectObject","RenameLongFileName","ActionsListSection","DeleteIcon","iconLocation","fullWidth","ObjectInfoIcon","detailContainer","overflowWrap","niceBytes","niceBytesInt","lastModified","currentTime","modifiedTime","difTime","formatTime","niceDaysInt","calculateLastModifyTime","etag","MetadataIcon","ObjectMetaData","modalBasic","versionToRestore","objectPath","restoreOpen","restoreLoading","setRestoreLoading","RecoverIcon","log","restoreLocalObjectList","confirmButtonProps","wrapText","bgColor","mainFileVersionItem","intermediateLayer","borderBottomColor","versionContainer","buttonContainer","versionID","maxWidth","versionData","ctrItem","content","left","collapsableInfo","flexDirection","versionItem","versionInfo","isSelected","checkable","isChecked","onCheck","onShare","onDownload","onRestore","onPreview","globalClick","key","disableButtons","versionItemButtons","pill","DateTime","md","CheckboxWrapper","stopPropagation","overrideCheckboxStyles","noTopMargin","SpecificVersionPill","button","spacing","buttonDisabled","toFormat","setDeleteLoading","typeConfirm","setTypeConfirm","selectedVersions","selectedObjectsRequest","versionsContainer","noBottomBorder","versionsVirtualPanel","flexGrow","screenTitleContainer","bottom","sortByLabel","tableStyles","objectBrowserExtras","searchVersions","loadingVersions","restoreVersionOpen","setRestoreVersionOpen","restoreVersion","setRestoreVersion","sortValue","setSortValue","deleteNonCurrentOpen","setDeleteNonCurrentOpen","selectEnabled","setSelectEnabled","selectedItems","setSelectedItems","delSelectedVOpen","setDelSelectedVOpen","decodedInternalPaths","filteredPrefixes","onShareItem","onPreviewItem","onRestoreItem","onDownloadItem","onGlobalClick","filteredRecords","version","totalSpace","sort","a","b","dateA","dateB","onCheckVersion","filteredItems","cloneState","push","RestoreFileVersion","DeleteNonCurrent","reloadAfterDelete","DeleteSelectedVersions","reloadOnComplete","LinearProgress","BrowserBreadcrumbs","ScreenTitle","listIcon","titleSpacer","subTitle","bucketDetails","detailsSpacer","actions","SelectMultipleIcon","DeleteNonCurrentIcon","List","containerStyle","rowCount","rowHeight","rowRenderer","isScrolling","isVisible","versOrd","FileVersionItem","displayParsedDate","currTime","objectTime","hasSame","displayNiceBytes","String","listModeColumns","elementKey","renderFunction","enableSort","renderFullObject","rewindModeColumns","browsePaper","parentWrapper","backgroundImage","params","useParams","sortDirection","setSortDirection","currentSortField","setCurrentSortField","detailsOpen","objectDetailsOpen","loadingObjects","features","selFeatures","obOnly","records","searchObjects","selectedObjects","displayListObjects","sortASC","sortListObjects","payload","reverse","tableActions","idElement","newPath","setSelectedObjects","setObjectDetailsView","setIsOpeningOD","setSelectedObjectView","sendOnlyId","TableWrapper","itemActions","columns","entityName","idField","customPaperHeight","onSelect","targetD","elements","customEmptyMessage","sortConfig","currentSort","currentDirection","triggerSort","sortData","newSortDirection","sortBy","setLoadingObjects","onSelectAll","rowStyle","_payload$index","delete_flag","parentClassName","downloadSelected","createAsyncThunk","getState","itemsToDownload","filterFunction","rejectWithValue","setDownloadRenameModal","forEach","filteredItem","openPreview","fileObject","findFunction","setSelectedPreview","_x3","_x4","openShare","_ref6","_ref5","_x5","_x6","openAnonymousAccess","_ref8","_callee4","_ref7","_context4","setAnonymousAccessOpen","_x7","_x8","SearchBox","setSearchObjects","DeleteMultipleObjects","RewindEnable","badgeOverlap","searchField","labelStyle","breadcrumbsContainer","fullContainer","hideListOnSmall","actionsSection","baseDnDStyle","outline","activeDnDStyle","acceptDnDStyle","_downloadRenameModal$","location","useLocation","bucketToRewind","showDeleted","selectedInternalPaths","simplePath","isVersioned","lockingEnabled","downloadRenameModal","selectedPreview","anonymousAccessOpen","loadingBucket","selBucketDetailsLoading","bucketInfo","selBucketDetailsInfo","deleteMultipleOpen","setDeleteMultipleOpen","rewindSelect","setRewindSelect","iniLoad","setIniLoad","canShareFile","setCanShareFile","canPreviewFile","setCanPreviewFile","quota","setQuota","pathSegment","pathname","pageTitle","currentPath","i","fileUpload","folderUpload","canDownload","canUpload","displayDeleteObject","canSetAnonymousAccess","resetRewind","setAttribute","quotaVals","setBucketDetailsLoad","setBucketInfo","setSelectedBucket","setRetentionConfig","handleUploadButton","files","newFiles","uploadObject","useCallback","folderPath","pathPrefix","uploadPromise","Promise","resolve","reject","uploadUrl","blobFile","Blob","encodedPath","filePath","fileWebkitRelativePath","relativeFolderPath","finalFolderPath","pathClean","startsWith","identity","xhr","XMLHttpRequest","setRequestHeader","areMultipleFiles","errorMessages","withCredentials","onload","removeTrace","response","JSON","detailedMessage","upload","addEventListener","floor","loaded","total","onerror","onloadend","onabort","formData","FormData","append","storeFormDataWithID","uploadFilePromises","openList","allSettled","results","errors","totalFiles","successUploadedFiles","onDrop","acceptedFiles","newFolderPath","_useDropzone","useDropzone","noClick","getRootProps","getInputProps","isDragActive","isDragAccept","dndStyles","useMemo","forceRefresh","splitURLS","URLItem","createdTime","creation_date","callActionButtonOverride","AccessRuleIcon","refresh","versioning","AddAccessRule","PageLayout","FilterObjectsSB","BucketsIcon","Badge","badgeContent","invisible","HistoryIcon","RefreshIcon","resetMessages","setLoadingRecords","multiple","UploadFilesButton","closeMenu","click","tableBlock","borderTop","VersionsNavigator","setShowDeletedObjects","overrideLabelClasses","overrideShowDeleted","ListObjectsTable","DetailsListPanel","ObjectDetailPanel","configureBucketAllowed","searchBar","setSearchVersions","AutoColorIcon","gap","ObjectManagerButton","PageHeaderWrapper","BackLink","IAM_PAGES","IAM_PERMISSIONS","IAM_ROLES","SettingsIcon","middleComponent","currentRequestID","errorCounter","wsInFlight","initWSConnection","openCallback","onMessageCallback","URL","window","port","baseUrl","document","baseURI","wsProt","wsProtocol","protocol","WebSocket","hostname","onopen","onmessage","reconnectFn","onclose","warn","setTimeout","loadingVersioning","rewindDate","dateToRewind","allowResources","session","loadingLocking","loadRecords","isOpeningOD","isOpeningObjectDetail","onMessageCallBack","data","request_id","internalPathsPrefix","decodedPath","permitItems","permissionItems","setRecords","request_end","newMessage","initWSRequest","readyState","newRequestID","request","bucket_name","send","stringify","decodedIPaths","setLoadingVersioning","setSimplePathHandler","parentPath","requestDate","setIsVersioned","setLockingEnabled","object_locking_enabled","setLoadingLocking","OBHeader","ListObjects","dateInputContainer","durationInputs","validityIndicator","invalidDurationText","reverseInput","validityText","validTill","initialDate","maxDays","entity","selectedDays","setSelectedDays","selectedHours","setSelectedHours","selectedMinutes","setSelectedMinutes","setValidDate","dateSelected","setDateSelected","hours","minutes","plus","calculateNewTime","formattedDate","valid","extraInputProps","paddingRight","min","max","noLabelMinWidth","LinkIcon","validityLabel","shareLinkInfo","copyShareLink","copyShareLinkInput","shareURL","setShareURL","isLoadingVersion","setIsLoadingVersion","isLoadingFile","setIsLoadingFile","selectedDate","setSelectedDate","dateValid","setDateValid","setVersionID","latestVersion","elem","slDate","currDate","diffDate","ceil","dateContainer","DaysSelector","newDate","PredefinedList","actionButton","setModalSnackMessage","iframeContainer","iframeBase","iframeHidden","_ref$isFullscreen","isFullscreen","loading","setLoading","basename","replace","origin","objectType","iframeLoaded","maxHeight","autoPlay","controls","muted","playsInline","onPlay","src","alt","onLoad","allowTransparency","wideLimit","ObjectPreviewIcon","PreviewFileContent","fileSize","overrideFileName","progressCallback","completeCallback","errorCallback","abortCallback","anchor","createElement","body","appendChild","store","req","evt","percentComplete","round","responseType","onreadystatechange","rspHeader","getResponseHeader","link","href","createObjectURL","removeChild","rspBody","fileExtension","fieldSort","localeCompare","permissionsArray","filteredPermissionsForBucket","permissionItem","returnElements","splitCurrentPath","permissionElement","splitURLARN","every","currentElementInPath","conditionOperator","prefixes","prefixItem","splitItems","pathToRouteElements","splitElement","WrappedComponent","fallback","props","Suspense","StyledSwitch","switchBase","transform","palette","common","white","boxShadow","thumb","track","transition","transitions","create","focusVisible","switchContainer","Switch","indicatorLabelOn","indicatorLabel","fieldDescription","_ref$label","_ref$checked","_ref$disabled","_ref$switchOnly","_ref$description","_ref$extraInputProps","switchComponent","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","Typography","inputStyles","inputFieldStyles","InputField","TextField","InputProps","textBoxContainer","overlayAction","_ref$type","_ref$autoComplete","_ref$multiline","multiline","_ref$index","_ref$error","_ref$required","required","_ref$placeholder","overlayId","_ref$overlayIcon","overlayIcon","_ref$overlayObject","overlayObject","_ref$noLabelMinWidth","_ref$pattern","pattern","_ref$autoFocus","autoFocus","onKeyPress","onFocus","onPaste","toggleTextInput","setToggleTextInput","inputBoxWrapperIcon","inputBoxWrapperType","VisibilityOffIcon","RemoveRedEyeIcon","errorInField","inputBoxContainer","noMinWidthLabel","helperText","inputRebase","predefinedList","_ref$multiLine","multiLine","prefinedContainer","predefinedTitle","includesActionButton","innerContentMultiline","innerContent","overlayShareOption","radioStyles","radioIcons","RadioButton","Radio","checkedIcon","radioSelectedIcon","radioUnselectedIcon","optionLabel","checkedOption","_ref$selectorOptions","_ref$displayInColumn","displayInColumn","RadioGroup","row","selectorOption","FormControlLabel","control","lineHeight","headerBarIcon","primary","main","headerBarSubheader","stContainer","titleColumn","leftItems","rightItems","shown","setShown","readOnly","navigator","clipboard","writeText","WSCloseAbnormalClosure","WSClosePolicyViolation","WSCloseInternalServerErr"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6037.7ed8da7f.chunk.js b/portal-ui/build/static/js/6037.7ed8da7f.chunk.js new file mode 100644 index 000000000..4708597be --- /dev/null +++ b/portal-ui/build/static/js/6037.7ed8da7f.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6037],{14048:function(e,t,n){var o=n(29439),i=n(1413),r=n(72791),a=n(75952),l=n(11135),c=n(25787),s=n(61889),u=n(23814),d=n(81207),p=n(56028),f=n(92217),m=n(45248),h=n(87995),v=n(81551),b=n(80184);(0,l.Z)((0,i.Z)((0,i.Z)({},u.ID),u.bK));t.Z=(0,c.Z)((function(e){return(0,l.Z)((0,i.Z)((0,i.Z)((0,i.Z)({codeMirrorContainer:{marginBottom:20,"& label":{marginBottom:".5rem"},"& label + div":{display:"none"}}},u.DF),u.ID),u.bK))}))((function(e){var t=e.classes,n=e.open,i=e.selectedAccessKey,l=e.closeModalAndRefresh,c=(0,v.TL)(),u=(0,r.useState)(!0),y=(0,o.Z)(u,2),g=y[0],x=y[1],k=(0,r.useState)(""),S=(0,o.Z)(k,2),_=S[0],C=S[1];(0,r.useEffect)((function(){g&&d.Z.invoke("GET","/api/v1/service-accounts/".concat((0,m.LL)(i),"/policy")).then((function(e){x(!1),C(e)})).catch((function(e){x(!1),c((0,h.zb)(e))}))}),[g,x,c,i]);return(0,b.jsx)(p.Z,{title:"Access Key Policy",modalOpen:n,onClose:function(){l()},titleIcon:(0,b.jsx)(a.QXQ,{}),children:(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){var t;t=_,e.preventDefault(),d.Z.invoke("PUT","/api/v1/service-accounts/".concat((0,m.LL)(i),"/policy"),{policy:t}).then((function(e){l()})).catch((function(e){c((0,h.zb)(e))}))},children:(0,b.jsxs)(s.ZP,{container:!0,children:[(0,b.jsx)(s.ZP,{item:!0,xs:12,className:t.codeMirrorContainer,children:(0,b.jsx)(f.Z,{label:"Access Key Policy",value:_,onBeforeChange:function(e,t,n){C(n)},editorHeight:"350px"})}),(0,b.jsxs)(s.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,b.jsx)(a.zxk,{id:"cancel-sa-policy",type:"button",variant:"regular",onClick:function(){l()},disabled:g,label:"Cancel"}),(0,b.jsx)(a.zxk,{id:"save-sa-policy",type:"submit",variant:"callAction",color:"primary",disabled:g,label:"Set"})]})]})})})}))},75578:function(e,t,n){var o=n(1413),i=n(72791),r=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,r.jsx)(i.Suspense,{fallback:t,children:(0,r.jsx)(e,(0,o.Z)({},n))})}}},58493:function(e,t,n){n.d(t,{DD:function(){return y},DP:function(){return b},F_:function(){return x},_0:function(){return g},bx:function(){return v}});var o=n(4942),i=n(1413),r=n(93433),a=(n(72791),n(87569)),l=n(61809),c=n(31292),s=n(98095),u=n(67055),d=n(21141),p=n(36909),f=n(13901),m=n(75952),h=n(80184),v=[{icon:(0,h.jsx)(a.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,h.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,h.jsx)(c.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,h.jsx)(s.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,h.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,h.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,h.jsx)(f.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,h.jsx)(p.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"},{icon:(0,h.jsx)(m.I$E,{className:"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTab-iconWrapper css-i4bv87-MuiSvgIcon-root"}),configuration_id:"audit_kafka",configuration_label:"Audit Kafka"}],b={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt",".log" or ".csv", you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*","application/json" or "application/xml", you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation. eg. 2s",type:"duration",placeholder:"Enter Max Sleep duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation. eg. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379", you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_kafka:[{name:"enable",required:!1,label:"Enable",tooltip:"Enable audit_kafka target",type:"on|off",customValueProcess:function(e){return""===e||"on"===e?"on":"off"}},{name:"brokers",required:!0,label:"Brokers",type:"csv",placeholder:"Enter Kafka broker"},{name:"topic",required:!1,label:"Topic",type:"string",placeholder:"Enter Kafka Topic",tooltip:"Kafka topic used for bucket notifications"},{name:"sasl",required:!1,label:"Use SASL",tooltip:"Enable SASL authentication",type:"on|off"},{name:"sasl_username",required:!1,label:"SASL Username",type:"string",placeholder:"Enter SASL Username",tooltip:"Username for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_password",required:!1,label:"SASL Password",type:"password",placeholder:"Enter SASL Password",tooltip:"Password for SASL/PLAIN or SASL/SCRAM authentication"},{name:"sasl_mechanism",required:!1,label:"SASL Mechanism",type:"string",placeholder:"Enter SASL Mechanism",tooltip:"SASL authentication mechanism"},{name:"tls",required:!1,label:"Use TLS",tooltip:"Enable TLS",type:"on|off"},{name:"tls_skip_verify",required:!1,label:"Skip TLS Verification",tooltip:"Trust server TLS without verification",type:"on|off"},{name:"client_tls_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_tls_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"tls_client_auth",required:!1,label:"TLS Client Auth",tooltip:"ClientAuth determines the Kafka server's policy for TLS client auth",type:"string"},{name:"version",required:!1,label:"Version",tooltip:"Specify the version of the Kafka cluster",type:"string"}]},y=function(e){return e.filter((function(e){return""!==e.value}))},g=function(e,t,n){var o=e.target,i=o.value,a=o.checked,l=(0,r.Z)(n);return a?l.push(i):l=l.filter((function(e){return e!==i})),t(l),l},x=function(e){var t={};return e.forEach((function(e){if(e.env_override){var n={value:e.env_override.value,overrideEnv:e.env_override.name};t=(0,i.Z)((0,i.Z)({},t),{},(0,o.Z)({},e.key,n))}})),t}},18303:function(e,t,n){var o=n(29439),i=(n(72791),n(51691)),r=n(9505),a=n(23508),l=n(75952),c=n(87995),s=n(81551),u=n(80184);t.Z=function(e){var t=e.closeDeleteModalAndRefresh,n=e.deleteOpen,d=e.selectedSAs,p=(0,s.TL)(),f=(0,r.Z)((function(){return t(!0)}),(function(e){return p((0,c.Ih)(e))})),m=(0,o.Z)(f,2),h=m[0],v=m[1];if(!d)return null;return(0,u.jsx)(a.Z,{title:"Delete Access Keys",confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(l.NvT,{}),isLoading:h,onConfirm:function(){v("DELETE","/api/v1/service-accounts/delete-multi",d)},onClose:function(){return t(!1)},confirmationContent:(0,u.jsxs)(i.Z,{children:["Are you sure you want to delete the selected ",d.length," ","Access Keys?"," "]})})}},13901:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"}),"CallToAction");t.Z=a},31292:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"}),"Code");t.Z=a},61809:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z"}),"Compress");t.Z=a},67055:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z"}),"FindReplace");t.Z=a},98095:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z"}),"LocalHospital");t.Z=a},36909:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"}),"PendingActions");t.Z=a},87569:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}),"Public");t.Z=a},21141:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"}),"VpnKey");t.Z=a}}]); +//# sourceMappingURL=6037.7ed8da7f.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6037.7ed8da7f.chunk.js.map b/portal-ui/build/static/js/6037.7ed8da7f.chunk.js.map new file mode 100644 index 000000000..48f48bbc2 --- /dev/null +++ b/portal-ui/build/static/js/6037.7ed8da7f.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/6037.7ed8da7f.chunk.js","mappings":"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","sources":["screens/Console/Account/ServiceAccountPolicy.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Configurations/utils.tsx","screens/Console/Users/DeleteMultipleServiceAccounts.tsx","../node_modules/@mui/icons-material/CallToAction.js","../node_modules/@mui/icons-material/Code.js","../node_modules/@mui/icons-material/Compress.js","../node_modules/@mui/icons-material/FindReplace.js","../node_modules/@mui/icons-material/LocalHospital.js","../node_modules/@mui/icons-material/PendingActions.js","../node_modules/@mui/icons-material/Public.js","../node_modules/@mui/icons-material/VpnKey.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { Button, ChangeAccessPolicyIcon } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport api from \"../../../common/api\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n codeMirrorContainer: {\n marginBottom: 20,\n \"& label\": {\n marginBottom: \".5rem\",\n },\n \"& label + div\": {\n display: \"none\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\ncreateStyles({\n ...modalStyleUtils,\n ...spacingUtils,\n});\n\ninterface IServiceAccountPolicyProps {\n classes: any;\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n}\n\nconst ServiceAccountPolicy = ({\n classes,\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n}: IServiceAccountPolicyProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/service-accounts/${encodeURLString(\n selectedAccessKey\n )}/policy`\n )\n .then((res) => {\n setLoading(false);\n setPolicyDefinition(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n }, [loading, setLoading, dispatch, selectedAccessKey]);\n\n const setPolicy = (event: React.FormEvent, newPolicy: string) => {\n event.preventDefault();\n api\n .invoke(\n \"PUT\",\n `/api/v1/service-accounts/${encodeURLString(selectedAccessKey)}/policy`,\n {\n policy: newPolicy,\n }\n )\n .then((res) => {\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n setPolicy(e, policyDefinition);\n }}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n {\n closeModalAndRefresh();\n }}\n disabled={loading}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(ServiceAccountPolicy);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\nimport { LogsIcon } from \"mds\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n {\n icon: (\n \n ),\n configuration_id: \"audit_kafka\",\n configuration_label: \"Audit Kafka\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\",\".log\" or \".csv\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\",\"application/json\" or \"application/xml\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation. eg. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation. eg. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_kafka: [\n {\n name: \"enable\",\n required: false,\n label: \"Enable\",\n tooltip: \"Enable audit_kafka target\",\n type: \"on|off\",\n customValueProcess: (origValue: string) => {\n return origValue === \"\" || origValue === \"on\" ? \"on\" : \"off\";\n },\n },\n {\n name: \"brokers\",\n required: true,\n label: \"Brokers\",\n type: \"csv\",\n placeholder: \"Enter Kafka broker\",\n },\n {\n name: \"topic\",\n required: false,\n label: \"Topic\",\n type: \"string\",\n placeholder: \"Enter Kafka Topic\",\n tooltip: \"Kafka topic used for bucket notifications\",\n },\n {\n name: \"sasl\",\n required: false,\n label: \"Use SASL\",\n tooltip: \"Enable SASL authentication\",\n type: \"on|off\",\n },\n {\n name: \"sasl_username\",\n required: false,\n label: \"SASL Username\",\n type: \"string\",\n placeholder: \"Enter SASL Username\",\n tooltip: \"Username for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_password\",\n required: false,\n label: \"SASL Password\",\n type: \"password\",\n placeholder: \"Enter SASL Password\",\n tooltip: \"Password for SASL/PLAIN or SASL/SCRAM authentication\",\n },\n {\n name: \"sasl_mechanism\",\n required: false,\n label: \"SASL Mechanism\",\n type: \"string\",\n placeholder: \"Enter SASL Mechanism\",\n tooltip: \"SASL authentication mechanism\",\n },\n {\n name: \"tls\",\n required: false,\n label: \"Use TLS\",\n tooltip: \"Enable TLS\",\n type: \"on|off\",\n },\n {\n name: \"tls_skip_verify\",\n required: false,\n label: \"Skip TLS Verification\",\n tooltip: \"Trust server TLS without verification\",\n type: \"on|off\",\n },\n {\n name: \"client_tls_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_tls_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"tls_client_auth\",\n required: false,\n label: \"TLS Client Auth\",\n tooltip:\n \"ClientAuth determines the Kafka server's policy for TLS client auth\",\n type: \"string\",\n },\n {\n name: \"version\",\n required: false,\n label: \"Version\",\n tooltip: \"Specify the version of the Kafka cluster\",\n type: \"string\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[]\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../../../screens/Console/Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/delete-multi`,\n selectedSAs\n );\n };\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z\"\n}), 'CallToAction');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"\n}), 'Code');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z\"\n}), 'Compress');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z\"\n}), 'FindReplace');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z\"\n}), 'LocalHospital');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"\n}), 'PendingActions');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\n}), 'Public');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"\n}), 'VpnKey');\nexports.default = _default;"],"names":["createStyles","_objectSpread","modalStyleUtils","spacingUtils","withStyles","theme","codeMirrorContainer","marginBottom","display","formFieldStyles","_ref","classes","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","policyDefinition","setPolicyDefinition","useEffect","api","concat","encodeURLString","then","res","catch","err","setModalErrorSnackMessage","_jsx","ModalWrapper","title","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","children","noValidate","autoComplete","onSubmit","e","newPolicy","preventDefault","policy","_jsxs","Grid","container","item","xs","className","CodeMirrorWrapper","label","value","onBeforeChange","editor","data","editorHeight","modalButtonBar","Button","id","type","variant","onClick","disabled","color","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","configurationElements","icon","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","CallToActionIcon","PendingActionsIcon","LogsIcon","fieldsConfigurations","region","name","required","tooltip","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","audit_kafka","customValueProcess","origValue","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","target","checked","elements","_toConsumableArray","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","_defineProperty","key","closeDeleteModalAndRefresh","deleteOpen","_useApi","useApi","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","confirmationContent","DialogContentText","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/6037.aa396ac9.chunk.js b/portal-ui/build/static/js/6037.aa396ac9.chunk.js deleted file mode 100644 index 9fe67464e..000000000 --- a/portal-ui/build/static/js/6037.aa396ac9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[6037],{14048:function(e,t,n){var o=n(29439),i=n(1413),r=n(72791),a=n(75952),l=n(11135),c=n(25787),s=n(61889),u=n(23814),d=n(81207),p=n(56028),h=n(92217),m=n(45248),f=n(87995),v=n(81551),b=n(80184);(0,l.Z)((0,i.Z)((0,i.Z)({},u.ID),u.bK));t.Z=(0,c.Z)((function(e){return(0,l.Z)((0,i.Z)((0,i.Z)((0,i.Z)({codeMirrorContainer:{marginBottom:20,"& label":{marginBottom:".5rem"},"& label + div":{display:"none"}}},u.DF),u.ID),u.bK))}))((function(e){var t=e.classes,n=e.open,i=e.selectedAccessKey,l=e.closeModalAndRefresh,c=(0,v.TL)(),u=(0,r.useState)(!0),y=(0,o.Z)(u,2),x=y[0],g=y[1],Z=(0,r.useState)(""),_=(0,o.Z)(Z,2),k=_[0],C=_[1];(0,r.useEffect)((function(){x&&d.Z.invoke("GET","/api/v1/service-accounts/".concat((0,m.LL)(i),"/policy")).then((function(e){g(!1),C(e)})).catch((function(e){g(!1),c((0,f.zb)(e))}))}),[x,g,c,i]);return(0,b.jsx)(p.Z,{title:"Access Key Policy",modalOpen:n,onClose:function(){l()},titleIcon:(0,b.jsx)(a.QXQ,{}),children:(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){var t;t=k,e.preventDefault(),d.Z.invoke("PUT","/api/v1/service-accounts/".concat((0,m.LL)(i),"/policy"),{policy:t}).then((function(e){l()})).catch((function(e){c((0,f.zb)(e))}))},children:(0,b.jsxs)(s.ZP,{container:!0,children:[(0,b.jsx)(s.ZP,{item:!0,xs:12,className:t.codeMirrorContainer,children:(0,b.jsx)(h.Z,{label:"Access Key Policy",value:k,onBeforeChange:function(e,t,n){C(n)},editorHeight:"350px"})}),(0,b.jsxs)(s.ZP,{item:!0,xs:12,className:t.modalButtonBar,children:[(0,b.jsx)(a.zxk,{id:"cancel-sa-policy",type:"button",variant:"regular",onClick:function(){l()},disabled:x,label:"Cancel"}),(0,b.jsx)(a.zxk,{id:"save-sa-policy",type:"submit",variant:"callAction",color:"primary",disabled:x,label:"Set"})]})]})})})}))},75578:function(e,t,n){var o=n(1413),i=n(72791),r=n(80184);t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return function(n){return(0,r.jsx)(i.Suspense,{fallback:t,children:(0,r.jsx)(e,(0,o.Z)({},n))})}}},58493:function(e,t,n){n.d(t,{DD:function(){return b},DP:function(){return v},F_:function(){return x},_0:function(){return y},bx:function(){return f}});var o=n(4942),i=n(1413),r=n(93433),a=(n(72791),n(87569)),l=n(61809),c=n(31292),s=n(98095),u=n(67055),d=n(21141),p=n(36909),h=n(13901),m=n(80184),f=[{icon:(0,m.jsx)(a.Z,{}),configuration_id:"region",configuration_label:"Region"},{icon:(0,m.jsx)(l.Z,{}),configuration_id:"compression",configuration_label:"Compression"},{icon:(0,m.jsx)(c.Z,{}),configuration_id:"api",configuration_label:"API"},{icon:(0,m.jsx)(s.Z,{}),configuration_id:"heal",configuration_label:"Heal"},{icon:(0,m.jsx)(u.Z,{}),configuration_id:"scanner",configuration_label:"Scanner"},{icon:(0,m.jsx)(d.Z,{}),configuration_id:"etcd",configuration_label:"Etcd"},{icon:(0,m.jsx)(h.Z,{}),configuration_id:"logger_webhook",configuration_label:"Logger Webhook"},{icon:(0,m.jsx)(p.Z,{}),configuration_id:"audit_webhook",configuration_label:"Audit Webhook"}],v={region:[{name:"name",required:!0,label:"Server Location",tooltip:'Name of the location of the server e.g. "us-west-rack2"',type:"string",placeholder:"e.g. us-west-rack-2"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",placeholder:"Enter custom notes if any"}],compression:[{name:"extensions",required:!1,label:"Extensions",tooltip:'Extensions to compress e.g. ".txt",".log" or ".csv", you can write one per field',type:"csv",placeholder:"Enter an Extension",withBorder:!0},{name:"mime_types",required:!1,label:"Mime Types",tooltip:'Mime types e.g. "text/*","application/json" or "application/xml", you can write one per field',type:"csv",placeholder:"Enter a Mime Type",withBorder:!0}],api:[{name:"requests_max",required:!1,label:"Requests Max",tooltip:"Maximum number of concurrent requests, e.g. '1600'",type:"number",placeholder:"Enter Requests Max"},{name:"cors_allow_origin",required:!1,label:"Cors Allow Origin",tooltip:"List of origins allowed for CORS requests",type:"csv",placeholder:"Enter allowed origin e.g. https://example.com"},{name:"replication_workers",required:!1,label:"Replication Workers",tooltip:"Number of replication workers, defaults to 100",type:"number",placeholder:"Enter Replication Workers"},{name:"replication_failed_workers",required:!1,label:"Replication Failed Workers",tooltip:"Number of replication workers for recently failed replicas, defaults to 4",type:"number",placeholder:"Enter Replication Failed Workers"}],heal:[{name:"bitrotscan",required:!1,label:"Bitrot Scan",tooltip:"Perform bitrot scan on disks when checking objects during scanner",type:"on|off"},{name:"max_sleep",required:!1,label:"Max Sleep",tooltip:"Maximum sleep duration between objects to slow down heal operation. eg. 2s",type:"duration",placeholder:"Enter Max Sleep duration"},{name:"max_io",required:!1,label:"Max IO",tooltip:"Maximum IO requests allowed between objects to slow down heal operation. eg. 3",type:"number",placeholder:"Enter Max IO"}],scanner:[{name:"delay",required:!1,label:"Delay multiplier",tooltip:"Scanner delay multiplier, defaults to '10.0'",type:"number",placeholder:"Enter Delay"},{name:"max_wait",required:!1,label:"Max Wait",tooltip:"Maximum wait time between operations, defaults to '15s'",type:"duration",placeholder:"Enter Max Wait"},{name:"cycle",required:!1,label:"Cycle",tooltip:"Time duration between scanner cycles, defaults to '1m'",type:"duration",placeholder:"Enter Cycle"}],etcd:[{name:"endpoints",required:!0,label:"Endpoints",tooltip:'List of etcd endpoints e.g. "http://localhost:2379", you can write one per field',type:"csv",placeholder:"Enter Endpoint"},{name:"path_prefix",required:!1,label:"Path Prefix",tooltip:'Namespace prefix to isolate tenants e.g. "customer1/"',type:"string",placeholder:"Enter Path Prefix"},{name:"coredns_path",required:!1,label:"Coredns Path",tooltip:'Shared bucket DNS records, default is "/skydns"',type:"string",placeholder:"Enter Coredns Path"},{name:"client_cert",required:!1,label:"Client Cert",tooltip:"Client cert for mTLS authentication",type:"string",placeholder:"Enter Client Cert"},{name:"client_cert_key",required:!1,label:"Client Cert Key",tooltip:"Client cert key for mTLS authentication",type:"string",placeholder:"Enter Client Cert Key"},{name:"comment",required:!1,label:"Comment",tooltip:"You can add a comment to this setting",type:"comment",multiline:!0,placeholder:"Enter custom notes if any"}],logger_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}],audit_webhook:[{name:"endpoint",required:!0,label:"Endpoint",type:"string",placeholder:"Enter Endpoint"},{name:"auth_token",required:!0,label:"Auth Token",type:"string",placeholder:"Enter Auth Token"}]},b=function(e){return e.filter((function(e){return""!==e.value}))},y=function(e,t,n){var o=e.target,i=o.value,a=o.checked,l=(0,r.Z)(n);return a?l.push(i):l=l.filter((function(e){return e!==i})),t(l),l},x=function(e){var t={};return e.forEach((function(e){if(e.env_override){var n={value:e.env_override.value,overrideEnv:e.env_override.name};t=(0,i.Z)((0,i.Z)({},t),{},(0,o.Z)({},e.key,n))}})),t}},18303:function(e,t,n){var o=n(29439),i=(n(72791),n(51691)),r=n(9505),a=n(23508),l=n(75952),c=n(87995),s=n(81551),u=n(80184);t.Z=function(e){var t=e.closeDeleteModalAndRefresh,n=e.deleteOpen,d=e.selectedSAs,p=(0,s.TL)(),h=(0,r.Z)((function(){return t(!0)}),(function(e){return p((0,c.Ih)(e))})),m=(0,o.Z)(h,2),f=m[0],v=m[1];if(!d)return null;return(0,u.jsx)(a.Z,{title:"Delete Access Keys",confirmText:"Delete",isOpen:n,titleIcon:(0,u.jsx)(l.NvT,{}),isLoading:f,onConfirm:function(){v("DELETE","/api/v1/service-accounts/delete-multi",d)},onClose:function(){return t(!1)},confirmationContent:(0,u.jsxs)(i.Z,{children:["Are you sure you want to delete the selected ",d.length," ","Access Keys?"," "]})})}},13901:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z"}),"CallToAction");t.Z=a},31292:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"}),"Code");t.Z=a},61809:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z"}),"Compress");t.Z=a},67055:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z"}),"FindReplace");t.Z=a},98095:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z"}),"LocalHospital");t.Z=a},36909:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"}),"PendingActions");t.Z=a},87569:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z"}),"Public");t.Z=a},21141:function(e,t,n){var o=n(64836);t.Z=void 0;var i=o(n(45649)),r=n(80184),a=(0,i.default)((0,r.jsx)("path",{d:"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"}),"VpnKey");t.Z=a}}]); -//# sourceMappingURL=6037.aa396ac9.chunk.js.map \ No newline at end of file diff --git a/portal-ui/build/static/js/6037.aa396ac9.chunk.js.map b/portal-ui/build/static/js/6037.aa396ac9.chunk.js.map deleted file mode 100644 index 861feba25..000000000 --- a/portal-ui/build/static/js/6037.aa396ac9.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/6037.aa396ac9.chunk.js","mappings":"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","sources":["screens/Console/Account/ServiceAccountPolicy.tsx","screens/Console/Common/Components/withSuspense.tsx","screens/Console/Configurations/utils.tsx","screens/Console/Users/DeleteMultipleServiceAccounts.tsx","../node_modules/@mui/icons-material/CallToAction.js","../node_modules/@mui/icons-material/Code.js","../node_modules/@mui/icons-material/Compress.js","../node_modules/@mui/icons-material/FindReplace.js","../node_modules/@mui/icons-material/LocalHospital.js","../node_modules/@mui/icons-material/PendingActions.js","../node_modules/@mui/icons-material/Public.js","../node_modules/@mui/icons-material/VpnKey.js"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { Button, ChangeAccessPolicyIcon } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport api from \"../../../common/api\";\nimport ModalWrapper from \"../Common/ModalWrapper/ModalWrapper\";\nimport CodeMirrorWrapper from \"../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper\";\nimport { encodeURLString } from \"../../../common/utils\";\nimport { setModalErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n codeMirrorContainer: {\n marginBottom: 20,\n \"& label\": {\n marginBottom: \".5rem\",\n },\n \"& label + div\": {\n display: \"none\",\n },\n },\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\ncreateStyles({\n ...modalStyleUtils,\n ...spacingUtils,\n});\n\ninterface IServiceAccountPolicyProps {\n classes: any;\n open: boolean;\n selectedAccessKey: string | null;\n closeModalAndRefresh: () => void;\n}\n\nconst ServiceAccountPolicy = ({\n classes,\n open,\n selectedAccessKey,\n closeModalAndRefresh,\n}: IServiceAccountPolicyProps) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n const [policyDefinition, setPolicyDefinition] = useState(\"\");\n useEffect(() => {\n if (loading) {\n api\n .invoke(\n \"GET\",\n `/api/v1/service-accounts/${encodeURLString(\n selectedAccessKey\n )}/policy`\n )\n .then((res) => {\n setLoading(false);\n setPolicyDefinition(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n dispatch(setModalErrorSnackMessage(err));\n });\n }\n }, [loading, setLoading, dispatch, selectedAccessKey]);\n\n const setPolicy = (event: React.FormEvent, newPolicy: string) => {\n event.preventDefault();\n api\n .invoke(\n \"PUT\",\n `/api/v1/service-accounts/${encodeURLString(selectedAccessKey)}/policy`,\n {\n policy: newPolicy,\n }\n )\n .then((res) => {\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setModalErrorSnackMessage(err));\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n titleIcon={}\n >\n ) => {\n setPolicy(e, policyDefinition);\n }}\n >\n \n \n {\n setPolicyDefinition(value);\n }}\n editorHeight={\"350px\"}\n />\n \n \n {\n closeModalAndRefresh();\n }}\n disabled={loading}\n label={\"Cancel\"}\n />\n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(ServiceAccountPolicy);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { ComponentType, Suspense, SuspenseProps } from \"react\";\n\nfunction withSuspense

(\n WrappedComponent: ComponentType

,\n fallback: SuspenseProps[\"fallback\"] = null\n) {\n function ComponentWithSuspense(props: P) {\n return (\n \n \n \n );\n }\n\n return ComponentWithSuspense;\n}\n\nexport default withSuspense;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport PublicIcon from \"@mui/icons-material/Public\";\nimport CompressIcon from \"@mui/icons-material/Compress\";\nimport CodeIcon from \"@mui/icons-material/Code\";\nimport LocalHospitalIcon from \"@mui/icons-material/LocalHospital\";\nimport FindReplaceIcon from \"@mui/icons-material/FindReplace\";\nimport VpnKeyIcon from \"@mui/icons-material/VpnKey\";\nimport PendingActionsIcon from \"@mui/icons-material/PendingActions\";\nimport CallToActionIcon from \"@mui/icons-material/CallToAction\";\nimport { IElement, IElementValue, IOverrideEnv, OverrideValue } from \"./types\";\n\nexport const configurationElements: IElement[] = [\n {\n icon: ,\n configuration_id: \"region\",\n configuration_label: \"Region\",\n },\n {\n icon: ,\n configuration_id: \"compression\",\n configuration_label: \"Compression\",\n },\n {\n icon: ,\n configuration_id: \"api\",\n configuration_label: \"API\",\n },\n {\n icon: ,\n configuration_id: \"heal\",\n configuration_label: \"Heal\",\n },\n {\n icon: ,\n configuration_id: \"scanner\",\n configuration_label: \"Scanner\",\n },\n {\n icon: ,\n configuration_id: \"etcd\",\n configuration_label: \"Etcd\",\n },\n {\n icon: ,\n configuration_id: \"logger_webhook\",\n configuration_label: \"Logger Webhook\",\n },\n {\n icon: ,\n configuration_id: \"audit_webhook\",\n configuration_label: \"Audit Webhook\",\n },\n];\n\nexport const fieldsConfigurations: any = {\n region: [\n {\n name: \"name\",\n required: true,\n label: \"Server Location\",\n tooltip: 'Name of the location of the server e.g. \"us-west-rack2\"',\n type: \"string\",\n placeholder: \"e.g. us-west-rack-2\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n placeholder: \"Enter custom notes if any\",\n },\n ],\n compression: [\n {\n name: \"extensions\",\n required: false,\n label: \"Extensions\",\n tooltip:\n 'Extensions to compress e.g. \".txt\",\".log\" or \".csv\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter an Extension\",\n withBorder: true,\n },\n {\n name: \"mime_types\",\n required: false,\n label: \"Mime Types\",\n tooltip:\n 'Mime types e.g. \"text/*\",\"application/json\" or \"application/xml\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter a Mime Type\",\n withBorder: true,\n },\n ],\n api: [\n {\n name: \"requests_max\",\n required: false,\n label: \"Requests Max\",\n tooltip: \"Maximum number of concurrent requests, e.g. '1600'\",\n type: \"number\",\n placeholder: \"Enter Requests Max\",\n },\n {\n name: \"cors_allow_origin\",\n required: false,\n label: \"Cors Allow Origin\",\n tooltip: \"List of origins allowed for CORS requests\",\n type: \"csv\",\n placeholder: \"Enter allowed origin e.g. https://example.com\",\n },\n {\n name: \"replication_workers\",\n required: false,\n label: \"Replication Workers\",\n tooltip: \"Number of replication workers, defaults to 100\",\n type: \"number\",\n placeholder: \"Enter Replication Workers\",\n },\n {\n name: \"replication_failed_workers\",\n required: false,\n label: \"Replication Failed Workers\",\n tooltip:\n \"Number of replication workers for recently failed replicas, defaults to 4\",\n type: \"number\",\n placeholder: \"Enter Replication Failed Workers\",\n },\n ],\n heal: [\n {\n name: \"bitrotscan\",\n required: false,\n label: \"Bitrot Scan\",\n tooltip:\n \"Perform bitrot scan on disks when checking objects during scanner\",\n type: \"on|off\",\n },\n {\n name: \"max_sleep\",\n required: false,\n label: \"Max Sleep\",\n tooltip:\n \"Maximum sleep duration between objects to slow down heal operation. eg. 2s\",\n type: \"duration\",\n placeholder: \"Enter Max Sleep duration\",\n },\n {\n name: \"max_io\",\n required: false,\n label: \"Max IO\",\n tooltip:\n \"Maximum IO requests allowed between objects to slow down heal operation. eg. 3\",\n type: \"number\",\n placeholder: \"Enter Max IO\",\n },\n ],\n scanner: [\n {\n name: \"delay\",\n required: false,\n label: \"Delay multiplier\",\n tooltip: \"Scanner delay multiplier, defaults to '10.0'\",\n type: \"number\",\n placeholder: \"Enter Delay\",\n },\n {\n name: \"max_wait\",\n required: false,\n label: \"Max Wait\",\n tooltip: \"Maximum wait time between operations, defaults to '15s'\",\n type: \"duration\",\n placeholder: \"Enter Max Wait\",\n },\n {\n name: \"cycle\",\n required: false,\n label: \"Cycle\",\n tooltip: \"Time duration between scanner cycles, defaults to '1m'\",\n type: \"duration\",\n placeholder: \"Enter Cycle\",\n },\n ],\n etcd: [\n {\n name: \"endpoints\",\n required: true,\n label: \"Endpoints\",\n tooltip:\n 'List of etcd endpoints e.g. \"http://localhost:2379\", you can write one per field',\n type: \"csv\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"path_prefix\",\n required: false,\n label: \"Path Prefix\",\n tooltip: 'Namespace prefix to isolate tenants e.g. \"customer1/\"',\n type: \"string\",\n placeholder: \"Enter Path Prefix\",\n },\n {\n name: \"coredns_path\",\n required: false,\n label: \"Coredns Path\",\n tooltip: 'Shared bucket DNS records, default is \"/skydns\"',\n type: \"string\",\n placeholder: \"Enter Coredns Path\",\n },\n {\n name: \"client_cert\",\n required: false,\n label: \"Client Cert\",\n tooltip: \"Client cert for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert\",\n },\n {\n name: \"client_cert_key\",\n required: false,\n label: \"Client Cert Key\",\n tooltip: \"Client cert key for mTLS authentication\",\n type: \"string\",\n placeholder: \"Enter Client Cert Key\",\n },\n {\n name: \"comment\",\n required: false,\n label: \"Comment\",\n tooltip: \"You can add a comment to this setting\",\n type: \"comment\",\n multiline: true,\n placeholder: \"Enter custom notes if any\",\n },\n ],\n logger_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n audit_webhook: [\n {\n name: \"endpoint\",\n required: true,\n label: \"Endpoint\",\n type: \"string\",\n placeholder: \"Enter Endpoint\",\n },\n {\n name: \"auth_token\",\n required: true,\n label: \"Auth Token\",\n type: \"string\",\n placeholder: \"Enter Auth Token\",\n },\n ],\n};\n\nexport const removeEmptyFields = (formFields: IElementValue[]) => {\n const nonEmptyFields = formFields.filter((field) => field.value !== \"\");\n\n return nonEmptyFields;\n};\n\nexport const selectSAs = (\n e: React.ChangeEvent,\n setSelectedSAs: Function,\n selectedSAs: string[]\n) => {\n const targetD = e.target;\n const value = targetD.value;\n const checked = targetD.checked;\n\n let elements: string[] = [...selectedSAs]; // We clone the selectedSAs array\n if (checked) {\n // If the user has checked this field we need to push this to selectedSAs\n elements.push(value);\n } else {\n // User has unchecked this field, we need to remove it from the list\n elements = elements.filter((element) => element !== value);\n }\n setSelectedSAs(elements);\n return elements;\n};\n\nexport const overrideFields = (formFields: IElementValue[]): IOverrideEnv => {\n let overrideReturn: IOverrideEnv = {};\n\n formFields.forEach((envItem) => {\n // it has override values, we construct the value\n if (envItem.env_override) {\n const value: OverrideValue = {\n value: envItem.env_override.value,\n overrideEnv: envItem.env_override.name,\n };\n\n overrideReturn = { ...overrideReturn, [envItem.key]: value };\n }\n });\n\n return overrideReturn;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\n\nimport { DialogContentText } from \"@mui/material\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport useApi from \"../../../screens/Console/Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../../screens/Console/Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\n\ninterface IDeleteMultiSAsProps {\n closeDeleteModalAndRefresh: (refresh: boolean) => void;\n deleteOpen: boolean;\n selectedSAs: string[];\n}\n\nconst DeleteMultipleSAs = ({\n closeDeleteModalAndRefresh,\n deleteOpen,\n selectedSAs,\n}: IDeleteMultiSAsProps) => {\n const dispatch = useAppDispatch();\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n const onClose = () => closeDeleteModalAndRefresh(false);\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n if (!selectedSAs) {\n return null;\n }\n const onConfirmDelete = () => {\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/service-accounts/delete-multi`,\n selectedSAs\n );\n };\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmationContent={\n \n Are you sure you want to delete the selected {selectedSAs.length}{\" \"}\n Access Keys?{\" \"}\n \n }\n />\n );\n};\n\nexport default DeleteMultipleSAs;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M21 3H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H3v-3h18v3z\"\n}), 'CallToAction');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M9.4 16.6 4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0 4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"\n}), 'Code');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M8 19h3v3h2v-3h3l-4-4-4 4zm8-15h-3V1h-2v3H8l4 4 4-4zM4 9v2h16V9H4zm0 3h16v2H4z\"\n}), 'Compress');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M11 6c1.38 0 2.63.56 3.54 1.46L12 10h6V4l-2.05 2.05C14.68 4.78 12.93 4 11 4c-3.53 0-6.43 2.61-6.92 6H6.1c.46-2.28 2.48-4 4.9-4zm5.64 9.14c.66-.9 1.12-1.97 1.28-3.14H15.9c-.46 2.28-2.48 4-4.9 4-1.38 0-2.63-.56-3.54-1.46L10 12H4v6l2.05-2.05C7.32 17.22 9.07 18 11 18c1.55 0 2.98-.51 4.14-1.36L20 21.49 21.49 20l-4.85-4.86z\"\n}), 'FindReplace');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.1 0-1.99.9-1.99 2L3 19c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-1 11h-4v4h-4v-4H6v-4h4V6h4v4h4v4z\"\n}), 'LocalHospital');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M17 12c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm1.65 7.35L16.5 17.2V14h1v2.79l1.85 1.85-.7.71zM18 3h-3.18C14.4 1.84 13.3 1 12 1s-2.4.84-2.82 2H6c-1.1 0-2 .9-2 2v15c0 1.1.9 2 2 2h6.11c-.59-.57-1.07-1.25-1.42-2H6V5h2v3h8V5h2v5.08c.71.1 1.38.31 2 .6V5c0-1.1-.9-2-2-2zm-6 2c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z\"\n}), 'PendingActions');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z\"\n}), 'Public');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12.65 10C11.83 7.67 9.61 6 7 6c-3.31 0-6 2.69-6 6s2.69 6 6 6c2.61 0 4.83-1.67 5.65-4H17v4h4v-4h2v-4H12.65zM7 14c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z\"\n}), 'VpnKey');\nexports.default = _default;"],"names":["createStyles","_objectSpread","modalStyleUtils","spacingUtils","withStyles","theme","codeMirrorContainer","marginBottom","display","formFieldStyles","_ref","classes","open","selectedAccessKey","closeModalAndRefresh","dispatch","useAppDispatch","_useState","useState","_useState2","_slicedToArray","loading","setLoading","_useState3","_useState4","policyDefinition","setPolicyDefinition","useEffect","api","concat","encodeURLString","then","res","catch","err","setModalErrorSnackMessage","_jsx","ModalWrapper","title","modalOpen","onClose","titleIcon","ChangeAccessPolicyIcon","children","noValidate","autoComplete","onSubmit","e","newPolicy","preventDefault","policy","_jsxs","Grid","container","item","xs","className","CodeMirrorWrapper","label","value","onBeforeChange","editor","data","editorHeight","modalButtonBar","Button","id","type","variant","onClick","disabled","color","WrappedComponent","fallback","arguments","length","undefined","props","Suspense","configurationElements","icon","PublicIcon","configuration_id","configuration_label","CompressIcon","CodeIcon","LocalHospitalIcon","FindReplaceIcon","VpnKeyIcon","CallToActionIcon","PendingActionsIcon","fieldsConfigurations","region","name","required","tooltip","placeholder","compression","withBorder","heal","scanner","etcd","multiline","logger_webhook","audit_webhook","removeEmptyFields","formFields","filter","field","selectSAs","setSelectedSAs","selectedSAs","targetD","target","checked","elements","_toConsumableArray","push","element","overrideFields","overrideReturn","forEach","envItem","env_override","overrideEnv","_defineProperty","key","closeDeleteModalAndRefresh","deleteOpen","_useApi","useApi","setErrorSnackMessage","_useApi2","deleteLoading","invokeDeleteApi","ConfirmDialog","confirmText","isOpen","ConfirmDeleteIcon","isLoading","onConfirm","confirmationContent","DialogContentText","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""} \ No newline at end of file diff --git a/portal-ui/build/static/js/8388.a2d655e1.chunk.js.map b/portal-ui/build/static/js/8388.a2d655e1.chunk.js.map deleted file mode 100644 index 5a2d63d65..000000000 --- a/portal-ui/build/static/js/8388.a2d655e1.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/8388.a2d655e1.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/DateRangeSelector/DateRangeSelector.tsx","screens/Console/Common/FormComponents/DateTimePickerWrapper/DateTimePickerWrapper.tsx","screens/Console/Common/TabSelector/TabSelector.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx","screens/Console/Dashboard/BasicDashboard/Utils.tsx","screens/Console/Dashboard/Prometheus/types.ts","screens/Console/Dashboard/Prometheus/utils.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/BarChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/ExpandGraphLink.tsx","screens/Console/Dashboard/DownloadWidgetDataButton.tsx","screens/Console/Dashboard/Prometheus/Widgets/BarChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/LineChartTooltip.tsx","screens/Console/Dashboard/Prometheus/Widgets/LinearGraphWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/PieChartWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SimpleWidget.tsx","screens/Console/Dashboard/DashboardItemBox.tsx","screens/Console/Dashboard/Prometheus/Widgets/NumericStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/BucketsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/ObjectsCountItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleRepWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleValueWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/CapacityItem.tsx","screens/Console/Dashboard/TimeStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/HealActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/ScanActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/UptimeActivityRenderer.tsx","screens/Console/Dashboard/Prometheus/widgetUtils.tsx","screens/Console/Dashboard/Prometheus/ZoomWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/LayoutUtil.tsx","screens/Console/Dashboard/CommonCard.tsx","screens/Console/Dashboard/Prometheus/MergedWidgets.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateStatItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/DualStatCard.tsx","screens/Console/Dashboard/Prometheus/Widgets/EntityStateItemRenderer.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkGetItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkPutItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/NetworkItem.tsx","screens/Console/Dashboard/Prometheus/Widgets/MergedWidgetsRenderer.tsx","screens/Console/Dashboard/BasicDashboard/ServerInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/DriveInfoItem.tsx","screens/Console/Dashboard/BasicDashboard/ServersList.tsx","screens/Console/Dashboard/BasicDashboard/CounterCard.tsx","screens/Console/Dashboard/BasicDashboard/ReportedUsage.tsx","screens/Console/Dashboard/BasicDashboard/BasicDashboard.tsx","screens/Console/Dashboard/Prometheus/PrDashboard.tsx","screens/Console/Dashboard/Dashboard.tsx","screens/shared/tabs.tsx"],"sourcesContent":["// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Button, OpenListIcon, SyncIcon } from \"mds\";\nimport { DateTime } from \"luxon\";\nimport { Box, Grid } from \"@mui/material\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport WatchLaterIcon from \"@mui/icons-material/WatchLater\";\nimport DateTimePickerWrapper from \"../DateTimePickerWrapper/DateTimePickerWrapper\";\n\ninterface IDateRangeSelector {\n timeStart: DateTime | null;\n setTimeStart: (value: DateTime | null) => void;\n timeEnd: DateTime | null;\n setTimeEnd: (value: DateTime | null) => void;\n triggerSync?: () => void;\n label?: string;\n startLabel?: string;\n endLabel?: string;\n}\n\nconst DateFilterAdornIcon = () => {\n return (\n \n \n \n );\n};\n\nconst DateRangeSelector = ({\n timeStart,\n setTimeStart,\n timeEnd,\n setTimeEnd,\n triggerSync,\n label = \"Filter:\",\n startLabel = \"Start Time:\",\n endLabel = \"End Time:\",\n}: IDateRangeSelector) => {\n return (\n \n \n \n {label}\n \n \n \n \n \n \n \n {startLabel}\n \n \n \n \n \n\n \n \n \n \n \n {endLabel}\n \n \n \n \n \n \n\n {triggerSync && (\n \n }\n label={\"Sync\"}\n />\n \n )}\n \n \n );\n};\n\nexport default DateRangeSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { DateTime } from \"luxon\";\nimport { HelpIcon, OpenListIcon } from \"mds\";\nimport { Grid, InputLabel, TextField, Tooltip } from \"@mui/material\";\nimport { DateTimePicker, LocalizationProvider } from \"@mui/x-date-pickers\";\nimport { AdapterLuxon } from \"@mui/x-date-pickers/AdapterLuxon\";\nimport InputAdornment from \"@mui/material/InputAdornment\";\nimport ScheduleIcon from \"@mui/icons-material/Schedule\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { fieldBasic, tooltipHelper } from \"../common/styleLibrary\";\n\ninterface IDateTimePicker {\n value: DateTime | null;\n onChange: (value: DateTime | null) => void;\n classes: any;\n forSearchBlock?: boolean;\n forFilterContained?: boolean;\n label?: string;\n required?: boolean;\n tooltip?: string;\n id: string;\n disabled?: boolean;\n noInputIcon?: boolean;\n classNamePrefix?: string;\n openPickerIcon?: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n dateSelectorOverride: {\n height: 40,\n border: \"#EAEDEE 1px solid\",\n marginLeft: 15,\n backgroundColor: \"#fff\",\n padding: \"0 16px\",\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n borderColor: \"#000\",\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: 600,\n color: \"#393939\",\n },\n },\n dateSelectorFilterOverride: {\n width: 180,\n height: 42,\n marginLeft: 20,\n padding: 0,\n borderRadius: 5,\n \"&.MuiInput-underline:hover:not(.Mui-disabled):before\": {\n borderBottom: 0,\n },\n \"&:hover\": {\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n },\n \"&:before, &:after\": {\n borderColor: \"transparent\",\n borderBottom: 0,\n },\n \"& input\": {\n fontSize: 12,\n fontWeight: \"bold\",\n color: \"#081C42\",\n },\n \"@media (max-width: 900px)\": {\n width: 103,\n },\n },\n dateSelectorFormOverride: {\n width: \"100%\",\n maxWidth: 840,\n },\n parentDateOverride: {\n flexGrow: 1,\n },\n textBoxContainer: {\n flexGrow: 1,\n },\n openListIcon: {\n color: \"#9D9E9D\",\n width: 8,\n marginTop: 2,\n },\n paperOverride: {\n \"& .MuiCalendarPicker-root\": {\n padding: \"0 22px\",\n \"& > div\": {\n padding: 0,\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:first-of-type\":\n {\n color: \"#0A224C\",\n fontWeight: \"bold\",\n },\n \"& > div > div.PrivatePickersFadeTransitionGroup-root:last-of-type\": {\n color: \"#9D9E9D\",\n \"& + button.MuiButtonBase-root\": {\n color: \"#9D9E9D\",\n },\n },\n \"& > div:nth-child(2)\": {\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n },\n },\n },\n \"& .MuiTypography-root.MuiTypography-caption\": {\n width: 26,\n height: 26,\n margin: 5,\n color: \"#BCBCBC\",\n fontSize: 10,\n },\n \"& button.MuiPickersDay-root\": {\n fontWeight: \"bold\",\n width: 26,\n height: 26,\n margin: 5,\n textAlign: \"center\",\n \"&.Mui-selected\": {\n backgroundColor: theme.palette.primary.main,\n color: \"#fff\",\n },\n },\n \"& div.MuiPickersDay-hiddenDaySpacingFiller\": {\n width: 26,\n height: 26,\n margin: 5,\n },\n \"& div.PrivatePickersSlideTransition-root\": {\n minHeight: 240,\n },\n \"& div.MuiCalendarPicker-viewTransitionContainer\": {\n borderTop: \"#F0F3F5 1px solid\",\n },\n \"& .MuiClockPicker-arrowSwitcher\": {\n marginRight: 10,\n marginTop: -1,\n \"& > div\": {\n width: 0,\n },\n \"& > button.MuiButtonBase-root\": {\n color: \"#0A224C\",\n },\n \"& + div > div\": {\n width: 255,\n height: 255,\n backgroundColor: \"#fff\",\n marginTop: 30,\n marginBottom: 14,\n border: \"#F0F3F5 3px solid\",\n \"& > div:nth-child(2)\": {\n backgroundColor: \"#B4B5B4\",\n width: 12,\n height: 12,\n \"&::before\": {\n content: \"' '\",\n width: 35,\n height: 35,\n display: \"block\",\n position: \"absolute\",\n border: \"#F0F3F5 3px solid\",\n top: -12,\n left: -12,\n borderRadius: \"100%\",\n },\n },\n \"& > div:nth-child(3)\": {\n backgroundColor: \"#B4B5B4\",\n width: 4,\n },\n \"& > div:last-of-type\": {\n marginTop: 15,\n \"& > span\": {\n color: \"#0A224C\",\n \"&.Mui-selected\": {\n color: \"#fff\",\n },\n \"&[aria-label='1 hours'], &[aria-label='2 hours'], &[aria-label='3 hours'], &[aria-label='4 hours'], &[aria-label='5 hours'], &[aria-label='6 hours'], &[aria-label='7 hours'], &[aria-label='8 hours'], &[aria-label='9 hours'], &[aria-label='10 hours'], &[aria-label='11 hours'], &[aria-label='12 hours']\":\n {\n fontWeight: \"bold\",\n fontSize: 20,\n marginTop: -1,\n },\n },\n },\n },\n },\n },\n ...fieldBasic,\n ...tooltipHelper,\n });\n\nconst DateTimePickerWrapper = ({\n value,\n onChange,\n classes,\n forSearchBlock = false,\n forFilterContained = false,\n label,\n tooltip = \"\",\n required,\n id,\n disabled = false,\n noInputIcon = false,\n classNamePrefix = \"\",\n openPickerIcon,\n}: IDateTimePicker) => {\n let adornment = {};\n\n if (!noInputIcon) {\n adornment = {\n startAdornment: (\n \n \n \n ),\n };\n }\n\n if (forFilterContained) {\n adornment = {\n endAdornment: (\n \n \n \n ),\n };\n }\n\n const classOverridden = `${classNamePrefix}date-time-input ${\n forSearchBlock ? classes.dateSelectorOverride : \"\"\n } ${\n forFilterContained && !forSearchBlock\n ? classes.dateSelectorFilterOverride\n : \"\"\n }`;\n\n const clsName = forSearchBlock\n ? classes.parentDateOverride\n : classes.dateSelectorFormOverride;\n\n const inputItem = (\n \n (\n \n )}\n ampm={false}\n PopperProps={{\n className: classes.paperOverride,\n }}\n inputFormat={\"LL/dd/yyyy HH:mm\"}\n />\n \n );\n\n if (forSearchBlock) {\n return inputItem;\n }\n\n const containerCls = !forFilterContained ? classes.fieldContainer : \"\";\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n

\n \n
\n \n
\n
\n
\n )}\n \n )}\n\n \n {inputItem}\n \n \n \n );\n};\n\nexport default withStyles(styles)(DateTimePickerWrapper);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport Tabs from \"@mui/material/Tabs\";\nimport Tab from \"@mui/material/Tab\";\nimport { ITabOption } from \"./types\";\n\ninterface ITabSelector {\n selectedTab: number;\n onChange: (newValue: number) => void;\n tabOptions: ITabOption[];\n}\n\nconst tabSubStyles = makeStyles({\n tabRoot: {\n height: \"40px\",\n borderBottom: \"1px solid #eaeaea\",\n },\n root: {\n width: \"120px\",\n backgroundColor: \"transparent\",\n paddingTop: 0,\n paddingBottom: 0,\n fontSize: \"14px\",\n fontWeight: 600,\n color: \"#07193E\",\n height: \"40px\",\n },\n selected: {\n \"&.MuiTab-selected\": {\n backgroundColor: \"#F6F7F7 !important\",\n },\n \"&.MuiTab-wrapper\": {\n color: \"#07193E\",\n fontWeight: 600,\n },\n },\n indicator: {\n background:\n \"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;\",\n height: 2,\n },\n scroller: {\n maxWidth: 1185,\n position: \"relative\",\n \"&::after\": {\n content: '\" \"',\n backgroundColor: \"#EEF1F4\",\n height: 2,\n width: \"100%\",\n display: \"block\",\n },\n },\n});\n\nconst TabSelector = ({ selectedTab, onChange, tabOptions }: ITabSelector) => {\n const subStyles = tabSubStyles();\n\n return (\n \n , newValue: number) => {\n onChange(newValue);\n }}\n classes={{\n root: subStyles.tabRoot,\n indicator: subStyles.indicator,\n scroller: subStyles.scroller,\n }}\n >\n {tabOptions.map((option, index) => {\n let tabOptions: ITabOption = {\n label: option.label,\n };\n\n if (option.value) {\n tabOptions = { ...tabOptions, value: option.value };\n }\n\n if (option.disabled) {\n tabOptions = { ...tabOptions, disabled: option.disabled };\n }\n\n return (\n \n );\n })}\n \n \n );\n};\n\nexport default TabSelector;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon } from \"mds\";\n\nexport const StatusCountCard = ({\n onlineCount = 0,\n offlineCount = 0,\n icon = null,\n label = \"\",\n okStatusText = \"Online\",\n notOkStatusText = \"Offline\",\n}: {\n icon: any;\n onlineCount: number;\n offlineCount: number;\n label: string;\n okStatusText?: string;\n notOkStatusText?: string;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n \n {onlineCount}\n \n \n
{okStatusText}
\n
\n \n\n \n {offlineCount}\n \n {\" \"}\n
{notOkStatusText}
\n
\n \n \n \n \n {icon}\n \n \n \n );\n};\n\nexport default StatusCountCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport const STATUS_COLORS = {\n RED: \"#C83B51\",\n GREEN: \"#4CCB92\",\n YELLOW: \"#E7A219\",\n};\n\nexport const getDriveStatusColor = (\n activeDisks: number,\n totalDrives: number\n) => {\n if (activeDisks <= totalDrives / 2) {\n return STATUS_COLORS.RED;\n }\n if (totalDrives !== 2 && activeDisks === totalDrives / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeDisks === totalDrives) {\n return STATUS_COLORS.GREEN;\n }\n};\n\nexport const serverStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"online\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\nexport const getNetworkStatusColor = (\n activeNetwork: number,\n networkTotal: number\n) => {\n if (activeNetwork <= networkTotal / 2) {\n return STATUS_COLORS.RED;\n }\n if (activeNetwork === networkTotal / 2 + 1) {\n return STATUS_COLORS.YELLOW;\n }\n if (activeNetwork === networkTotal) {\n return STATUS_COLORS.GREEN;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport {\n IBarChartConfiguration,\n IBarChartRelation,\n IDataSRep,\n ILinearGraphConfiguration,\n IPieChartConfiguration,\n} from \"./Widgets/types\";\n\nexport enum widgetType {\n singleValue = \"singleValue\",\n linearGraph = \"linearGraph\",\n areaGraph = \"areaGraph\",\n barChart = \"barChart\",\n pieChart = \"pieChart\",\n singleRep = \"singleRep\",\n simpleWidget = \"simpleWidget\",\n}\n\nexport interface IDashboardPanel {\n id: number;\n mergedPanels?: IDashboardPanel[];\n title: string;\n data?: string | object[] | IDataSRep[];\n dataOuter?: string | object[];\n type?: widgetType;\n widgetIcon?: any;\n widgetConfiguration?:\n | ILinearGraphConfiguration[]\n | IBarChartConfiguration[]\n | IPieChartConfiguration;\n color?: string;\n fillColor?: string;\n innerLabel?: string;\n labelDisplayFunction?: (value: string) => any;\n disableYAxis?: boolean;\n xAxisFormatter?: (item: string) => string;\n yAxisFormatter?: (item: string) => string;\n customStructure?: IBarChartRelation[];\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport get from \"lodash/get\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport {\n getTimeFromTimestamp,\n niceBytes,\n niceDays,\n representationNumber,\n textToRGBColor,\n units,\n} from \"../../../../common/utils\";\nimport { DiagnosticsIcon, HealIcon, UptimeIcon } from \"mds\";\n\nconst colorsMain = [\n \"#C4D4E9\",\n \"#DCD1EE\",\n \"#D1EEE7\",\n \"#EEDED1\",\n \"#AAF38F\",\n \"#F9E6C5\",\n \"#C83B51\",\n \"#F4CECE\",\n \"#D6D6D6\",\n];\n\nconst niceDaysFromNS = (seconds: string) => {\n return niceDays(seconds, \"ns\");\n};\n\nconst roundNumber = (value: string) => {\n return parseInt(value).toString(10);\n};\n\nexport const panelsConfiguration: IDashboardPanel[] = [\n {\n id: 1,\n title: \"Uptime\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDays,\n },\n {\n id: 50,\n title: \"Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 51,\n title: \"Usable Capacity\",\n data: [],\n dataOuter: [{ name: \"outer\", value: 100 }],\n widgetConfiguration: {\n outerChart: {\n colorList: [\"#9c9c9c\"],\n innerRadius: 0,\n outerRadius: 0,\n startAngle: 0,\n endAngle: 0,\n },\n innerChart: {\n colorList: colorsMain,\n innerRadius: 20,\n outerRadius: 50,\n startAngle: 90,\n endAngle: -200,\n },\n },\n type: widgetType.pieChart,\n innerLabel: \"N/A\",\n labelDisplayFunction: niceBytes,\n },\n {\n id: 68,\n title: \"Data Usage Growth\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.areaGraph,\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 52,\n title: \"Object size distribution\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"a\",\n color: \"#2781B0\",\n background: {\n fill: \"#EEF1F4\",\n },\n greatestColor: \"#081C42\",\n },\n ],\n customStructure: [\n { originTag: \"LESS_THAN_1024_B\", displayTag: \"Less than 1024B\" },\n {\n originTag: \"BETWEEN_1024_B_AND_1_MB\",\n displayTag: \"Between 1024B and 1MB\",\n },\n {\n originTag: \"BETWEEN_1_MB_AND_10_MB\",\n displayTag: \"Between 1MB and 10MB\",\n },\n {\n originTag: \"BETWEEN_10_MB_AND_64_MB\",\n displayTag: \"Between 10MB and 64MB\",\n },\n {\n originTag: \"BETWEEN_64_MB_AND_128_MB\",\n displayTag: \"Between 64MB and 128MB\",\n },\n {\n originTag: \"BETWEEN_128_MB_AND_512_MB\",\n displayTag: \"Between 128MB and 512MB\",\n },\n {\n originTag: \"GREATER_THAN_512_MB\",\n displayTag: \"Greater than 512MB\",\n },\n ],\n type: widgetType.barChart,\n },\n {\n id: 66,\n title: \"Buckets\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 44,\n title: \"Objects\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#0071BC\",\n fillColor: \"#ADD5E0\",\n },\n {\n id: 63,\n title: \"API Data Received Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n strokeWidth: 3,\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 61,\n title: \"Total Open FDs\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#22B573\",\n fillColor: \"#A6E8C4\",\n },\n {\n id: 62,\n title: \"Total Goroutines\",\n data: [],\n innerLabel: \"N/A\",\n type: widgetType.singleRep,\n color: \"#F7655E\",\n fillColor: \"#F4CECE\",\n },\n {\n id: 77,\n title: \"Node CPU Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 60,\n title: \"API Request Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 70,\n title: \"API Data Sent Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 17,\n title: \"Internode Data Transfer\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 73,\n title: \"Node IO\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n yAxisFormatter: niceBytes,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 80,\n title: \"Time Since Last Heal Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 81,\n title: \"Time Since Last Scan Activity\",\n data: \"N/A\",\n type: widgetType.simpleWidget,\n widgetIcon: ,\n labelDisplayFunction: niceDaysFromNS,\n },\n {\n id: 71,\n title: \"API Request Error Rate\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 76,\n title: \"Node Memory Usage\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 74,\n title: \"Drive Used Capacity\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n xAxisFormatter: getTimeFromTimestamp,\n yAxisFormatter: niceBytes,\n },\n {\n id: 82,\n title: \"Drives Free Inodes\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n\n disableYAxis: true,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 11,\n title: \"Node Syscalls\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 8,\n title: \"Node File Descriptors\",\n data: [],\n widgetConfiguration: [\n {\n dataKey: \"\",\n keyLabel: \"\",\n lineColor: \"#000\",\n fillColor: \"#000\",\n },\n ],\n type: widgetType.linearGraph,\n yAxisFormatter: roundNumber,\n xAxisFormatter: getTimeFromTimestamp,\n },\n {\n id: 500,\n mergedPanels: [\n {\n id: 53,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 69,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Servers\",\n },\n {\n id: 501,\n mergedPanels: [\n {\n id: 9,\n title: \"Online\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n {\n id: 78,\n title: \"Offline\",\n data: \"N/A\",\n type: widgetType.singleValue,\n },\n ],\n title: \"Drives\",\n },\n {\n id: 502,\n mergedPanels: [\n {\n id: 65,\n title: \"Upload\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n {\n id: 64,\n title: \"Download\",\n data: \"N/A\",\n type: widgetType.singleValue,\n\n labelDisplayFunction: niceBytes,\n },\n ],\n title: \"Network\",\n },\n];\n\nconst calculateMainValue = (elements: any[], metricCalc: string) => {\n if (elements.length === 0) {\n return [\"\", \"0\"];\n }\n\n switch (metricCalc) {\n case \"mean\":\n const sumValues = elements.reduce((accumulator, currValue) => {\n return accumulator + parseFloat(currValue[1]);\n }, 0);\n\n const mean = Math.floor(sumValues / elements.length);\n\n return [\"\", mean.toString()];\n default:\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n return sortResult[sortResult.length - 1];\n }\n};\n\nconst constructLabelNames = (metrics: any, legendFormat: string) => {\n const keysToReplace = Object.keys(metrics);\n const expToReplace = new RegExp(`{{(${keysToReplace.join(\"|\")})}}`, \"g\");\n\n let replacedLegend = legendFormat.replace(expToReplace, (matchItem) => {\n const nwMatchItem = matchItem.replace(/({{|}})/g, \"\");\n return metrics[nwMatchItem];\n });\n\n const countVarsOpen = (replacedLegend.match(/{{/g) || []).length;\n const countVarsClose = (replacedLegend.match(/}}/g) || []).length;\n\n let cleanLegend = replacedLegend.replace(/{{(.*?)}}/g, \"\");\n\n if (\n countVarsOpen === countVarsClose &&\n countVarsOpen !== 0 &&\n countVarsClose !== 0\n ) {\n keysToReplace.forEach((element) => {\n replacedLegend = replacedLegend.replace(element, metrics[element]);\n });\n\n cleanLegend = replacedLegend;\n }\n\n // In case not all the legends were replaced, we remove the placeholders.\n return cleanLegend;\n};\n\nexport const getWidgetsWithValue = (payload: any[]): IDashboardPanel[] => {\n return panelsConfiguration.map((panelItem: IDashboardPanel) => {\n const payloadData = payload.find(\n (panelT) =>\n panelT.title.toLowerCase().trim() ===\n panelItem.title.toLowerCase().trim()\n );\n return widgetDetailsToPanel(payloadData, panelItem);\n });\n};\n\nexport const widgetDetailsToPanel = (\n payloadData: any,\n panelItem: IDashboardPanel\n) => {\n if (!payloadData) {\n return panelItem;\n }\n\n const typeOfPayload = payloadData.type;\n\n switch (panelItem.type) {\n case widgetType.singleValue:\n case widgetType.simpleWidget:\n if (typeOfPayload === \"stat\" || typeOfPayload === \"singlestat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n\n if (elements === null) {\n elements = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const data = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data,\n };\n }\n break;\n case widgetType.pieChart:\n if (typeOfPayload === \"gauge\") {\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n let chartSeries = get(payloadData, \"targets\", []).filter(\n (seriesItem: any) => seriesItem !== null\n );\n\n const values = chartSeries.map((chartTarget: any) => {\n const resultMap =\n chartTarget.result && Array.isArray(chartTarget.result)\n ? chartTarget.result\n : [];\n\n const values = resultMap.map((elementValue: any) => {\n const values = get(elementValue, \"values\", []);\n const metricKeyItem = Object.keys(elementValue.metric);\n const sortResult = values.sort(\n (value1: any[], value2: any[]) =>\n parseInt(value1[0][1]) - parseInt(value2[0][1])\n );\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n const value = sortResult[sortResult.length - 1];\n return {\n name: metricName,\n value: parseInt(value[1]),\n legend: chartTarget.legendFormat,\n };\n });\n\n return values;\n });\n\n const firstTarget =\n chartSeries[0].result && chartSeries[0].result.length > 0\n ? chartSeries[0].result[0].values\n : [];\n\n const totalValues = calculateMainValue(firstTarget, metricCalc);\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(totalValues[1])\n : totalValues[1];\n\n return {\n ...panelItem,\n data: values,\n innerLabel,\n };\n }\n break;\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n if (typeOfPayload === \"graph\") {\n let targets = get(payloadData, \"targets\", []);\n if (targets === null) {\n targets = [];\n }\n\n const series: any[] = [];\n const plotValues: any[] = [];\n\n targets.forEach(\n (\n targetMaster: { legendFormat: string; result: any[] },\n index: number\n ) => {\n // Add a new serie to plot variables in case it is not from multiple values\n let results = get(targetMaster, \"result\", []);\n const legendFormat = targetMaster.legendFormat;\n if (results === null) {\n results = [];\n }\n\n results.forEach((itemVals: { metric: object; values: any[] }) => {\n // Label Creation\n const labelName = constructLabelNames(\n itemVals.metric,\n legendFormat\n );\n const keyName = `key_${index}${labelName}`;\n\n // series creation with recently created label\n series.push({\n dataKey: keyName,\n keyLabel: labelName,\n lineColor: \"\",\n fillColor: \"\",\n });\n\n // we iterate over values and create elements\n let values = get(itemVals, \"values\", []);\n if (values === null) {\n values = [];\n }\n\n values.forEach((valInfo: any[]) => {\n const itemIndex = plotValues.findIndex(\n (element) => element.name === valInfo[0]\n );\n\n // Element not exists yet\n if (itemIndex === -1) {\n let itemToPush: any = { name: valInfo[0] };\n itemToPush[keyName] = valInfo[1];\n\n plotValues.push(itemToPush);\n } else {\n plotValues[itemIndex][keyName] = valInfo[1];\n }\n });\n });\n }\n );\n\n const sortedSeries = series.sort((series1: any, series2: any) => {\n if (series1.keyLabel < series2.keyLabel) {\n return -1;\n }\n if (series1.keyLabel > series2.keyLabel) {\n return 1;\n }\n return 0;\n });\n\n const seriesWithColors = sortedSeries.map(\n (serialC: any, index: number) => {\n return {\n ...serialC,\n lineColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n fillColor: colorsMain[index] || textToRGBColor(serialC.keyLabel),\n };\n }\n );\n\n const sortedVals = plotValues.sort(\n (value1: any, value2: any) => value1.name - value2.name\n );\n\n return {\n ...panelItem,\n widgetConfiguration: seriesWithColors,\n data: sortedVals,\n };\n }\n break;\n case widgetType.barChart:\n if (typeOfPayload === \"bargauge\") {\n let chartBars = get(payloadData, \"targets[0].result\", []);\n\n if (chartBars === null) {\n chartBars = [];\n }\n\n const sortFunction = (value1: any[], value2: any[]) =>\n value1[0] - value2[0];\n\n let values = [];\n if (panelItem.customStructure) {\n values = panelItem.customStructure.map((structureItem) => {\n const metricTake = chartBars.find((element: any) => {\n const metricKeyItem = Object.keys(element.metric);\n\n const metricName = element.metric[metricKeyItem[0]];\n\n return metricName === structureItem.originTag;\n });\n\n const elements = get(metricTake, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n\n return {\n name: structureItem.displayTag,\n a: parseInt(lastValue[1]),\n };\n });\n } else {\n // If no configuration is set, we construct the series for bar chart and return the element\n values = chartBars.map((elementValue: any) => {\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n\n const elements = get(elementValue, \"values\", []);\n\n const sortResult = elements.sort(sortFunction);\n const lastValue = sortResult[sortResult.length - 1] || [\"\", \"0\"];\n return { name: metricName, a: parseInt(lastValue[1]) };\n });\n }\n\n return {\n ...panelItem,\n data: values,\n };\n }\n break;\n case widgetType.singleRep:\n if (typeOfPayload === \"stat\") {\n // We sort values & get the last value\n let elements = get(payloadData, \"targets[0].result[0].values\", []);\n if (elements === null) {\n elements = [];\n }\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valueDisplay = calculateMainValue(elements, metricCalc);\n\n const sortResult = elements.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n let valuesForBackground = [];\n\n if (sortResult.length === 1) {\n valuesForBackground.push({ value: 0 });\n }\n\n sortResult.forEach((eachVal: any) => {\n valuesForBackground.push({ value: parseInt(eachVal[1]) });\n });\n\n const innerLabel = panelItem.labelDisplayFunction\n ? panelItem.labelDisplayFunction(valueDisplay[1])\n : valueDisplay[1];\n\n return {\n ...panelItem,\n data: valuesForBackground,\n innerLabel,\n };\n }\n break;\n }\n\n return panelItem;\n};\n\nconst verifyNumeric = (item: string) => {\n return !isNaN(parseFloat(item));\n};\n\nexport const splitSizeMetric = (val: string) => {\n const splittedText = val.split(\" \");\n // Value is not a size metric, we return as common string\n\n const singleValue = () => {\n let vl = val;\n\n if (verifyNumeric(val)) {\n vl = representationNumber(parseFloat(val));\n }\n return {vl};\n };\n\n if (splittedText.length !== 2) {\n return singleValue();\n }\n\n if (!units.includes(splittedText[1])) {\n return singleValue();\n }\n\n return (\n \n {splittedText[0]}\n {splittedText[1]}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst BarChartTooltip = ({\n active,\n payload,\n label,\n barChartConfiguration,\n classes,\n}: any) => {\n if (active) {\n return (\n
\n
{label}
\n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
\n {pl.value}\n
\n
\n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(BarChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { Box } from \"@mui/material\";\nimport { IDashboardPanel } from \"../types\";\n\nimport { openZoomPage } from \"../../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../../store\";\n\nconst ExpandGraphLink = ({ panelItem }: { panelItem: IDashboardPanel }) => {\n const dispatch = useAppDispatch();\n return (\n \n {\n dispatch(openZoomPage(panelItem));\n }}\n className={\"zoom-graph-icon\"}\n >\n \n \n \n );\n};\n\nexport default ExpandGraphLink;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport { Box, Menu, MenuItem } from \"@mui/material\";\nimport ListItemText from \"@mui/material/ListItemText\";\nimport { DownloadIcon } from \"mds\";\nimport { exportComponentAsPNG } from \"react-component-export-image\";\nimport { ErrorResponseHandler } from \"../../../common/types\";\nimport { useAppDispatch } from \"../../../../src/store\";\nimport { setErrorSnackMessage } from \"../../../../src/systemSlice\";\n\ninterface IDownloadWidgetDataButton {\n title: any;\n componentRef: any;\n data: any;\n}\n\nconst DownloadWidgetDataButton = ({\n title,\n componentRef,\n data,\n}: IDownloadWidgetDataButton) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const openDownloadMenu = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleCloseDownload = () => {\n setAnchorEl(null);\n };\n const download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\"href\", \"data:text/plain;charset=utf-8,\" + text);\n element.setAttribute(\"download\", filename);\n\n element.style.display = \"none\";\n document.body.appendChild(element);\n\n element.click();\n document.body.removeChild(element);\n };\n\n const dispatch = useAppDispatch();\n const onDownloadError = (err: ErrorResponseHandler) =>\n dispatch(setErrorSnackMessage(err));\n\n const convertToCSV = (objectToConvert: any) => {\n const array = [Object.keys(objectToConvert[0])].concat(objectToConvert);\n return array\n .map((it) => {\n return Object.values(it).toString();\n })\n .join(\"\\n\");\n };\n\n const widgetDataCSVFileName = () => {\n if (title !== null) {\n return (title + \"_\" + Date.now().toString() + \".csv\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n } else {\n return \"widgetData_\" + Date.now().toString() + \".csv\";\n }\n };\n\n const downloadAsCSV = () => {\n if (data !== null && data.length > 0) {\n download(widgetDataCSVFileName(), convertToCSV(data));\n } else {\n let err: ErrorResponseHandler;\n err = {\n errorMessage: \"Unable to download widget data\",\n detailedError: \"Unable to download widget data - data not available\",\n };\n onDownloadError(err);\n }\n };\n\n const downloadAsPNG = () => {\n if (title !== null) {\n const pngFileName = (title + \"_\" + Date.now().toString() + \".png\")\n .replace(/\\s+/g, \"\")\n .trim()\n .toLowerCase();\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n } else {\n const pngFileName = \"widgetData_\" + Date.now().toString() + \".png\";\n exportComponentAsPNG(componentRef, { fileName: pngFileName });\n }\n };\n\n return (\n \n \n \n {\n handleCloseDownload();\n }}\n >\n {\n downloadAsCSV();\n }}\n >\n Download as CSV\n \n {\n downloadAsPNG();\n }}\n >\n Download as PNG\n \n \n \n \n );\n};\n\nexport default DownloadWidgetDataButton;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\n\nimport {\n Bar,\n BarChart,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { Grid, useMediaQuery } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IBarChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport BarChartTooltip from \"./tooltips/BarChartTooltip\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport { useTheme } from \"@mui/styles\";\nimport { Loader } from \"mds\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\nimport { useSelector } from \"react-redux\";\n\ninterface IBarChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n zoomActivated?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n });\n\nconst CustomizedAxisTick = ({ y, payload }: any) => {\n return (\n \n {payload.value}\n \n );\n};\n\nconst BarChartWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n zoomActivated = false,\n}: IBarChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n const [hover, setHover] = useState(false);\n const componentRef = useRef();\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n const onHover = () => {\n setHover(true);\n };\n const onStopHover = () => {\n setHover(false);\n };\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const barChartConfiguration = result\n ? (result.widgetConfiguration as IBarChartConfiguration[])\n : [];\n\n let greatestIndex = 0;\n let currentValue = 0;\n\n if (barChartConfiguration.length === 1) {\n const dataGraph = barChartConfiguration[0];\n data.forEach((item: any, index: number) => {\n if (item[dataGraph.dataKey] > currentValue) {\n currentValue = item[dataGraph.dataKey];\n greatestIndex = index;\n }\n });\n }\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n return (\n \n {!zoomActivated && (\n \n \n
{title}
\n
\n \n {hover && }\n \n \n \n \n
\n )}\n {loading && (\n
\n \n
\n )}\n {!loading && (\n }\n className={\n zoomActivated ? classes.zoomChartCont : classes.contentContainer\n }\n >\n \n \n \n }\n tickLine={false}\n axisLine={false}\n width={150}\n hide={!biggerThanMd}\n style={{\n fontSize: \"12px\",\n fontWeight: 100,\n }}\n />\n {barChartConfiguration.map((bar) => (\n \n {barChartConfiguration.length === 1 ? (\n \n {data.map((_: any, index: number) => (\n \n ))}\n \n ) : null}\n \n ))}\n \n }\n />\n \n \n \n )}\n \n );\n};\n\nexport default withStyles(styles)(BarChartWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { getTimeFromTimestamp } from \"../../../../../../common/utils\";\nimport { tooltipCommon } from \"../../../../Common/FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tooltipCommon,\n });\n\nconst LineChartTooltip = ({\n active,\n payload,\n label,\n linearConfiguration,\n yAxisFormatter,\n classes,\n}: any) => {\n if (active) {\n return (\n
\n
\n {getTimeFromTimestamp(label, true)}\n
\n {payload &&\n payload.map((pl: any, index: number) => {\n return (\n \n \n
\n \n {linearConfiguration[index].keyLabel}:{\" \"}\n {yAxisFormatter(pl.value)}\n \n
\n
\n );\n })}\n \n );\n }\n\n return null;\n};\n\nexport default withStyles(styles)(LineChartTooltip);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { Box, Grid, useMediaQuery } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ILinearGraphConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport { useTheme } from \"@mui/styles\";\nimport { Loader } from \"mds\";\nimport ExpandGraphLink from \"./ExpandGraphLink\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport DownloadWidgetDataButton from \"../../DownloadWidgetDataButton\";\nimport { useSelector } from \"react-redux\";\n\ninterface ILinearGraphWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n hideYAxis?: boolean;\n yAxisFormatter?: (item: string) => string;\n xAxisFormatter?: (item: string, var1: boolean, var2: boolean) => string;\n areaWidget?: boolean;\n zoomActivated?: boolean;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n chartCont: {\n position: \"relative\",\n height: 140,\n width: \"100%\",\n },\n legendChart: {\n display: \"flex\",\n flexDirection: \"column\",\n flex: \"0 1 auto\",\n maxHeight: 130,\n margin: 0,\n overflowY: \"auto\",\n position: \"relative\",\n textAlign: \"center\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n color: \"#404143\",\n fontWeight: \"bold\",\n fontSize: 12,\n },\n loadingAlign: {\n width: 40,\n height: 40,\n textAlign: \"center\",\n margin: \"15px auto\",\n },\n });\n\nconst LinearGraphWidget = ({\n classes,\n title,\n timeStart,\n timeEnd,\n propLoading,\n panelItem,\n apiPrefix,\n hideYAxis = false,\n areaWidget = false,\n yAxisFormatter = (item: string) => item,\n xAxisFormatter = (item: string, var1: boolean, var2: boolean) => item,\n zoomActivated = false,\n}: ILinearGraphWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [hover, setHover] = useState(false);\n const [data, setData] = useState([]);\n const [csvData, setCsvData] = useState([]);\n const [dataMax, setDataMax] = useState(0);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n const componentRef = useRef();\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setResult(widgetsWithValue);\n setLoading(false);\n let maxVal = 0;\n for (const dp of widgetsWithValue.data) {\n for (const key in dp) {\n if (key === \"name\") {\n continue;\n }\n let val = parseInt(dp[key]);\n\n if (isNaN(val)) {\n val = 0;\n }\n\n if (maxVal < val) {\n maxVal = val;\n }\n }\n }\n setDataMax(maxVal);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let intervalCount = Math.floor(data.length / 5);\n\n const onHover = () => {\n setHover(true);\n };\n\n const onStopHover = () => {\n setHover(false);\n };\n\n useEffect(() => {\n const fmtData = data.map((el: any) => {\n const date = new Date(el?.name * 1000);\n return {\n ...el,\n name: date,\n };\n });\n\n setCsvData(fmtData);\n }, [data]);\n\n const linearConfiguration = result\n ? (result?.widgetConfiguration as ILinearGraphConfiguration[])\n : [];\n\n const CustomizedDot = (prop: any) => {\n const { cx, cy, index } = prop;\n\n if (index % 3 !== 0) {\n return null;\n }\n return ;\n };\n\n const theme = useTheme();\n const biggerThanMd = useMediaQuery(theme.breakpoints.up(\"md\"));\n\n let dspLongDate = false;\n\n if (zoomActivated) {\n dspLongDate = true;\n }\n\n return (\n \n {!zoomActivated && (\n \n \n
{title}
\n
\n \n {hover && }\n
\n \n \n \n \n )}\n \n {loading && }\n {!loading && (\n \n \n \n \n {areaWidget && (\n \n \n \n \n\n \n \n \n )}\n \n \n xAxisFormatter(value, dspLongDate, true)\n }\n interval={intervalCount}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n tickCount={10}\n stroke={\"#082045\"}\n />\n yAxisFormatter(value)}\n tick={{\n fontSize: \"68%\",\n fontWeight: \"normal\",\n color: \"#404143\",\n }}\n stroke={\"#082045\"}\n />\n {linearConfiguration.map((section, index) => {\n return (\n : false}\n />\n );\n })}\n \n }\n wrapperStyle={{\n zIndex: 5000,\n }}\n />\n \n \n \n {!areaWidget && (\n \n {zoomActivated && (\n \n Series\n
\n
\n
\n )}\n {biggerThanMd && (\n
\n {linearConfiguration.map((section, index) => {\n return (\n \n \n
\n {section.keyLabel}\n
\n
\n );\n })}\n \n )}\n
\n )}\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(LinearGraphWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Cell, Pie, PieChart, ResponsiveContainer } from \"recharts\";\nimport { IPieChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\n\nimport { IDashboardPanel } from \"../types\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport get from \"lodash/get\";\nimport api from \"../../../../../common/api\";\nimport { Loader } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { useSelector } from \"react-redux\";\n\ninterface IPieChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n apiPrefix: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n paddingTop: \"15px\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n pieChartLabel: {\n fontSize: 60,\n color: \"#07193E\",\n fontWeight: \"bold\",\n width: \"100%\",\n \"& .unitText\": {\n color: \"#767676\",\n fontSize: 12,\n },\n },\n chartContainer: {\n width: \"100%\",\n height: 140,\n },\n });\n\nconst PieChartWidget = ({\n classes,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n\n apiPrefix,\n}: IPieChartWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [dataInner, setDataInner] = useState([]);\n const [dataOuter, setDataOuter] = useState([]);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setDataInner(widgetsWithValue.data);\n setDataOuter(widgetsWithValue.dataOuter as object[]);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const pieChartConfiguration = result\n ? (result.widgetConfiguration as IPieChartConfiguration)\n : [];\n const middleLabel = result?.innerLabel;\n\n const innerColors = get(pieChartConfiguration, \"innerChart.colorList\", []);\n const outerColors = get(pieChartConfiguration, \"outerChart.colorList\", []);\n\n return (\n
\n
{title}
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n
\n \n {middleLabel && splitSizeMetric(middleLabel)}\n \n
\n \n \n {dataOuter && (\n \n {dataOuter.map((entry, index) => (\n \n ))}\n \n )}\n {dataInner && (\n \n {dataInner.map((entry, index) => {\n return (\n \n );\n })}\n \n )}\n \n \n
\n
\n )}\n
\n );\n};\n\nexport default withStyles(styles)(PieChartWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\n\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { Loader } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISimpleWidget {\n classes: any;\n iconWidget: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n apiPrefix: string;\n renderFn?: undefined | null | ((arg: Record) => any);\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n mainWidgetContainer: {\n display: \"inline-flex\",\n color: \"#072A4D\",\n alignItems: \"center\",\n },\n icon: {\n color: \"#072A4D\",\n fill: \"#072A4D\",\n marginRight: 5,\n marginLeft: 12,\n },\n widgetLabel: {\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n marginRight: 10,\n },\n widgetValue: {\n marginRight: 25,\n },\n });\n\nconst SimpleWidget = ({\n classes,\n iconWidget,\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n renderFn,\n}: ISimpleWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n if (renderFn) {\n return renderFn({\n valueToRender: data,\n loading,\n title,\n id: panelItem.id,\n iconWidget: iconWidget,\n });\n }\n return (\n \n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n {iconWidget ? iconWidget : null}\n {title}: \n {data}\n \n )}\n
\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(SimpleWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\nconst DashboardItemBox = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\nexport default DashboardItemBox;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Tooltip } from \"@mui/material\";\nimport { Loader } from \"mds\";\n\nconst NumericStatCard = ({\n value,\n label = \"\",\n icon = null,\n loading = false,\n}: {\n value: string | number;\n label?: any;\n icon?: any;\n loading?: boolean;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n \n {value}\n \n \n \n \n {}\n {loading ? (\n \n ) : (\n icon\n )}\n \n \n );\n };\n\n return (\n \n {getContent()}\n \n );\n};\n\nexport default NumericStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { BucketsIcon } from \"mds\";\n\nconst BucketsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default BucketsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport NumericStatCard from \"./NumericStatCard\";\nimport { TotalObjectsIcon } from \"mds\";\n\nconst ObjectsCountItem = ({\n title,\n value,\n loading,\n}: {\n title: string;\n value: string;\n loading?: boolean;\n}) => {\n return (\n }\n value={value}\n loading={loading}\n />\n );\n};\n\nexport default ObjectsCountItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { representationNumber } from \"../../../../../common/utils\";\nimport api from \"../../../../../common/api\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\nimport BucketsCountItem from \"./BucketsCountItem\";\nimport ObjectsCountItem from \"./ObjectsCountItem\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISingleRepWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n color?: string;\n fillColor?: string;\n apiPrefix: string;\n}\n\nconst SingleRepWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n\n apiPrefix,\n}: ISingleRepWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState(null);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setResult(widgetsWithValue);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let repNumber = \"\";\n\n if (result) {\n const resultRep = parseInt(result.innerLabel || \"0\");\n\n if (!isNaN(resultRep)) {\n repNumber = representationNumber(resultRep);\n } else {\n repNumber = \"0\";\n }\n }\n\n const renderById = (id: number) => {\n if (id === 66) {\n return (\n \n \n \n );\n }\n if (id === 44) {\n return (\n \n \n \n );\n }\n\n return null;\n };\n\n return renderById(panelItem.id);\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default connector(SingleRepWidget);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport { connect, useSelector } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport api from \"../../../../../common/api\";\nimport { Loader } from \"mds\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { splitSizeMetric, widgetDetailsToPanel } from \"../utils\";\nimport { IDashboardPanel } from \"../types\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\n\ninterface ISingleValueWidget {\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n\n classes: any;\n apiPrefix: string;\n renderFn?: (arg: Record) => any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n loadingAlign: {\n width: \"100%\",\n textAlign: \"center\",\n margin: \"auto\",\n },\n metric: {\n fontSize: 60,\n lineHeight: 1,\n color: \"#07193E\",\n fontWeight: 700,\n },\n titleElement: {\n fontSize: 10,\n color: \"#767676\",\n fontWeight: 700,\n },\n containerAlignment: {\n display: \"flex\",\n height: 140,\n flexDirection: \"column\",\n justifyContent: \"center\",\n \"& .unitText\": {\n color: \"#767676\",\n fontSize: 12,\n },\n },\n });\n\nconst SingleValueWidget = ({\n title,\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n classes,\n apiPrefix,\n renderFn,\n}: ISingleValueWidget) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const valueToRender = splitSizeMetric(data);\n\n if (renderFn) {\n return renderFn({ valueToRender, loading, title, id: panelItem.id });\n }\n return (\n
\n {loading && (\n
\n \n
\n )}\n {!loading && (\n \n
{splitSizeMetric(data)}
\n
{title}
\n
\n )}\n
\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage: setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(SingleValueWidget));\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { IDashboardPanel } from \"../types\";\nimport { Box } from \"@mui/material\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\n\nimport {\n calculateBytes,\n capacityColors,\n niceBytesInt,\n} from \"../../../../../common/utils\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { Loader, ReportedUsageIcon } from \"mds\";\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst CapacityItem = ({\n value,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n\n const [totalUsableFree, setTotalUsableFree] = useState(0);\n const [totalUsableFreeRatio, setTotalUsableFreeRatio] = useState(0);\n const [totalUsed, setTotalUsed] = useState(0);\n const [totalUsable, setTotalUsable] = useState(0);\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${value.id}/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, value);\n\n let tUsable = 0;\n let tUsed = 0;\n let tFree = 0;\n\n widgetsWithValue.data.forEach((eachArray: any[]) => {\n eachArray.forEach((itemSum) => {\n switch (itemSum.legend) {\n case \"Total Usable\":\n tUsable += itemSum.value;\n break;\n case \"Used Space\":\n tUsed += itemSum.value;\n break;\n case \"Usable Free\":\n tFree += itemSum.value;\n break;\n }\n });\n });\n\n const freeRatio = Math.round((tFree / tUsable) * 100);\n\n setTotalUsableFree(tFree);\n setTotalUsableFreeRatio(freeRatio);\n setTotalUsed(tUsed);\n setTotalUsable(tUsable);\n\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, value, timeEnd, timeStart, dispatch, apiPrefix]);\n\n const usedConvert = calculateBytes(totalUsed, true, false);\n\n const plotValues = [\n {\n value: totalUsableFree,\n color: \"#D6D6D6\",\n label: \"Usable Available Space\",\n },\n {\n value: totalUsed,\n color: capacityColors(totalUsed, totalUsable),\n label: \"Used Space\",\n },\n ];\n return (\n \n \n Capacity\n \n \n \n {`${totalUsableFreeRatio}%`}\n
\n \n Free\n \n \n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n \n \n \n \n Used:\n \n \n
{usedConvert.total}
\n
{usedConvert.unit}
\n \n \n
Of: {niceBytesInt(totalUsable)}
\n \n \n\n \n \n {loading ? (\n \n ) : (\n \n )}\n \n \n \n \n );\n};\n\nexport default CapacityItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Loader, SuccessIcon } from \"mds\";\n\nconst TimeStatItem = ({\n icon,\n label,\n value,\n loading = false,\n}: {\n icon: any;\n label: any;\n value: string;\n loading?: boolean;\n}) => {\n return (\n \n {loading ? : icon}\n \n {label}\n \n {value}\n {value !== \"n/a\" ? : null}\n \n );\n};\n\nexport default TimeStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst HealActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default HealActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport TimeStatItem from \"../../TimeStatItem\";\nimport { SimpleWidgetRenderProps } from \"./HealActivityRenderer\";\n\nconst ScanActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={valueToRender}\n />\n \n );\n};\n\nexport default ScanActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport TimeStatItem from \"../../TimeStatItem\";\n\nexport type SimpleWidgetRenderProps = {\n valueToRender?: any;\n loading?: boolean;\n title?: any;\n id?: number;\n iconWidget?: any;\n};\nconst UptimeActivityRenderer = ({\n valueToRender = \"\",\n loading = false,\n iconWidget = null,\n}: SimpleWidgetRenderProps) => {\n return (\n \n Uptime}\n value={valueToRender}\n />\n \n );\n};\n\nexport default UptimeActivityRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IDashboardPanel, widgetType } from \"./types\";\nimport BarChartWidget from \"./Widgets/BarChartWidget\";\nimport LinearGraphWidget from \"./Widgets/LinearGraphWidget\";\nimport PieChartWidget from \"./Widgets/PieChartWidget\";\nimport SimpleWidget from \"./Widgets/SimpleWidget\";\nimport SingleRepWidget from \"./Widgets/SingleRepWidget\";\nimport SingleValueWidget from \"./Widgets/SingleValueWidget\";\nimport CapacityItem from \"./Widgets/CapacityItem\";\nimport DashboardItemBox from \"../DashboardItemBox\";\nimport HealActivityRenderer, {\n SimpleWidgetRenderProps,\n} from \"./Widgets/HealActivityRenderer\";\nimport ScanActivityRenderer from \"./Widgets/ScanActivityRenderer\";\nimport UptimeActivityRenderer from \"./Widgets/UptimeActivityRenderer\";\n\nexport const componentToUse = (\n value: IDashboardPanel,\n timeStart: any,\n timeEnd: any,\n loading: boolean,\n apiPrefix: string,\n zoomActivated: boolean = false\n) => {\n switch (value.type) {\n case widgetType.singleValue:\n return (\n \n );\n case widgetType.simpleWidget:\n let renderFn;\n let CmpToRender: any = null;\n if (value.id === 80) {\n CmpToRender = HealActivityRenderer;\n } else if (value.id === 81) {\n CmpToRender = ScanActivityRenderer;\n } else if (value.id === 1) {\n CmpToRender = UptimeActivityRenderer;\n }\n\n if ([80, 81, 1].includes(value.id)) {\n renderFn = ({\n valueToRender,\n loading,\n title,\n id,\n iconWidget,\n }: SimpleWidgetRenderProps) => {\n return (\n \n );\n };\n }\n return (\n \n );\n case widgetType.pieChart:\n if (value.id === 50) {\n return (\n \n \n \n );\n }\n return (\n \n );\n case widgetType.linearGraph:\n case widgetType.areaGraph:\n return (\n \n );\n case widgetType.barChart:\n return (\n \n );\n case widgetType.singleRep:\n const fillColor = value.fillColor ? value.fillColor : value.color;\n return (\n \n );\n default:\n return null;\n }\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { IDashboardPanel } from \"./types\";\nimport { componentToUse } from \"./widgetUtils\";\nimport { closeZoomPage } from \"../dashboardSlice\";\nimport { useAppDispatch } from \"../../../../store\";\n\ninterface IZoomWidget {\n widgetRender: number;\n value: IDashboardPanel | null;\n modalOpen: boolean;\n timeStart: any;\n timeEnd: any;\n apiPrefix: string;\n}\n\nconst ZoomWidget = ({\n value,\n modalOpen,\n timeStart,\n timeEnd,\n apiPrefix,\n}: IZoomWidget) => {\n const dispatch = useAppDispatch();\n if (!value) {\n return null;\n }\n\n return (\n {\n dispatch(closeZoomPage());\n }}\n modalOpen={modalOpen}\n wideLimit={false}\n noContentPadding\n >\n \n {componentToUse(value, timeStart, timeEnd, true, apiPrefix, true)}\n \n \n );\n};\n\nexport default ZoomWidget;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box } from \"@mui/material\";\nimport { SxProps, Theme } from \"@mui/material/styles\";\n\nexport type DLayoutColumnProps = {\n componentId: number;\n sx?: SxProps;\n};\nexport type DLayoutRowProps = {\n sx?: SxProps;\n columns: DLayoutColumnProps[];\n};\n\nexport const summaryPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n minWidth: 0,\n display: \"grid\",\n gridTemplateColumns: {\n md: \"1fr 1fr 1fr 1fr\",\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 66,\n },\n {\n componentId: 44,\n },\n {\n componentId: 500,\n },\n {\n componentId: 501,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0, // important to avoid css grid blow out.\n gridTemplateColumns: {\n md: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 50,\n },\n {\n componentId: 502,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n md: \"1fr 1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 80,\n },\n {\n componentId: 81,\n },\n {\n componentId: 1,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 68,\n },\n {\n componentId: 52,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 63,\n },\n {\n componentId: 70,\n },\n ],\n },\n];\n\nexport const trafficPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 60,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: {\n sm: \"1fr 1fr\",\n xs: \"1fr\",\n },\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 71,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n {\n componentId: 17,\n sx: {\n flex: 1,\n width: \"50%\",\n flexShrink: 0,\n },\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n gridTemplateColumns: \"1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 73,\n },\n ],\n },\n];\n\nexport const resourcesPanelsLayout: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 76,\n },\n {\n componentId: 77,\n },\n ],\n },\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 82,\n },\n {\n componentId: 74,\n },\n ],\n },\n];\nexport const resourcesPanelsLayoutAdvanced: DLayoutRowProps[] = [\n {\n sx: {\n display: \"grid\",\n minWidth: 0,\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"30px\",\n },\n columns: [\n {\n componentId: 11,\n },\n {\n componentId: 8,\n },\n ],\n },\n];\n\nexport const RowPanelLayout = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Card, CardHeader } from \"@mui/material\";\nimport { Link } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport React, { Fragment } from \"react\";\nimport { widgetCommon } from \"../Common/FormComponents/common/styleLibrary\";\n\nexport interface ISubInterface {\n message: string;\n fontWeight?: \"normal\" | \"bold\";\n}\n\ninterface ICommonCard {\n title: string;\n metricValue: any;\n metricUnit?: string;\n subMessage?: ISubInterface;\n moreLink?: string;\n rightComponent?: any;\n extraMargin?: boolean;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n cardRoot: {\n ...widgetCommon.singleValueContainer,\n \"&.MuiPaper-root\": {\n borderRadius: 10,\n },\n },\n metricText: {\n fontSize: 70,\n lineHeight: 1.1,\n color: \"#07193E\",\n fontWeight: \"bold\",\n },\n unitText: {\n fontSize: 10,\n color: \"#767676\",\n fontWeight: \"normal\",\n },\n subHearderContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n },\n subMessage: {\n fontSize: 10,\n color: \"#767676\",\n \"&.bold\": {\n fontWeight: \"bold\",\n },\n },\n headerContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n },\n viewAll: {\n fontSize: 10,\n color: \"#C83B51\",\n textTransform: \"capitalize\",\n\n \"& a, & a:hover, & a:visited, & a:active\": {\n color: \"#C83B51\",\n },\n },\n extraMargin: {\n margin: \"10px 20px 10px 0\",\n },\n });\n\nconst cardSubStyles = makeStyles({\n root: { backgroundColor: \"#fff\", padding: 0 },\n title: {\n ...widgetCommon.titleContainer,\n },\n content: {\n maxWidth: \"100%\",\n },\n});\n\nconst CommonCard = ({\n title,\n metricValue,\n metricUnit,\n subMessage,\n moreLink,\n rightComponent,\n extraMargin = false,\n classes,\n}: ICommonCard) => {\n const subStyles = cardSubStyles();\n const SubHeader = () => {\n return (\n \n
\n
\n
\n \n {metricValue}\n {metricUnit}\n \n
\n {subMessage && (\n \n {subMessage.message}\n
\n )}\n
\n
{rightComponent}
\n \n
\n );\n };\n\n const Header = () => {\n return (\n \n
\n {title}\n {moreLink && (\n \n \n View All\n \n \n )}\n
\n
\n );\n };\n\n return (\n \n \n {metricValue !== \"\" && (\n }\n subheader={\n \n \n \n }\n classes={{\n root: subStyles.root,\n title: subStyles.title,\n content: subStyles.content,\n }}\n />\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(CommonCard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\nimport CommonCard from \"../CommonCard\";\n\ninterface IMergedWidgets {\n title: string;\n leftComponent: any;\n rightComponent: any;\n}\n\nconst MergedWidgets = ({\n title,\n leftComponent,\n rightComponent,\n}: IMergedWidgets) => {\n return (\n \n \n \n );\n};\n\nexport default MergedWidgets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport api from \"../../../../../common/api\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport { IDashboardPanel } from \"../types\";\nimport { Loader } from \"mds\";\n\nimport { setErrorSnackMessage } from \"../../../../../systemSlice\";\nimport { AppState, useAppDispatch } from \"../../../../../store\";\nimport { useSelector } from \"react-redux\";\n\nconst EntityStateStatItem = ({\n panelItem,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n statLabel,\n}: {\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n statLabel: any;\n}) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState(\"\");\n const widgetVersion = useSelector(\n (state: AppState) => state.dashboard.widgetLoadVersion\n );\n\n useEffect(() => {\n setLoading(true);\n }, [widgetVersion]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod =\n timeEnd.toUnixInteger() - timeStart.toUnixInteger();\n const periods = Math.floor(secondsInPeriod / 60);\n\n stepCalc = periods < 1 ? 15 : periods;\n }\n\n api\n .invoke(\n \"GET\",\n `/api/v1/${apiPrefix}/info/widgets/${\n panelItem.id\n }/?step=${stepCalc}&${\n timeStart !== null ? `&start=${timeStart.toUnixInteger()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.toUnixInteger()}` : \"\"\n }`\n )\n .then((res: any) => {\n const widgetsWithValue = widgetDetailsToPanel(res, panelItem);\n setData(widgetsWithValue.data);\n setLoading(false);\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, dispatch, apiPrefix]);\n\n let toRender = loading ? (\n \n \n \n ) : (\n \n {data}\n {statLabel}\n \n );\n\n return toRender;\n};\n\nexport default EntityStateStatItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\n\nconst DualStatCard = ({\n statItemLeft = null,\n statItemRight = null,\n icon = null,\n label = \"\",\n}: {\n statItemLeft: any;\n statItemRight: any;\n icon: any;\n label: string;\n}) => {\n const getContent = () => {\n return (\n \n \n \n {label}\n \n\n \n {statItemLeft}\n {statItemRight}\n \n \n \n {icon}\n \n \n );\n };\n\n return (\n \n {getContent()}\n \n );\n};\n\nexport default DualStatCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport EntityStateStatItem from \"./EntityStateStatItem\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon, DrivesIcon, ServersIcon } from \"mds\";\nimport DualStatCard from \"./DualStatCard\";\nimport { IDashboardPanel } from \"../types\";\n\nconst EntityStateItemRenderer = ({\n info,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n loading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const lStatItem = (\n \n \n
Online
\n \n }\n />\n );\n const rStatItem = (\n \n \n
Offline
\n \n }\n />\n );\n\n let statIcon = null;\n let statLabel = \"\";\n if (id === 500) {\n statIcon = ;\n statLabel = \"Servers\";\n } else if (id === 501) {\n statIcon = ;\n statLabel = \"Drives\";\n }\n\n return (\n \n );\n};\nexport default EntityStateItemRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Loader, NetworkGetIcon } from \"mds\";\n\nconst NetworkGetItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n \n GET\n \n {loading ? (\n \n ) : (\n \n )}\n \n \n {value}\n \n \n );\n};\n\nexport default NetworkGetItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box } from \"@mui/material\";\nimport { Loader, NetworkPutIcon } from \"mds\";\n\nconst NetworkPutItem = ({\n value,\n loading,\n}: {\n value: any;\n loading: boolean;\n title?: any;\n id?: number;\n}) => {\n return (\n \n \n \n PUT\n \n {loading ? (\n \n ) : (\n \n )}\n \n \n {value}\n \n \n );\n};\n\nexport default NetworkPutItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { IDashboardPanel } from \"../types\";\nimport { Box } from \"@mui/material\";\nimport { SpeedtestIcon } from \"mds\";\nimport SingleValueWidget from \"./SingleValueWidget\";\nimport NetworkGetItem from \"./NetworkGetItem\";\nimport NetworkPutItem from \"./NetworkPutItem\";\n\nconst NetworkItem = ({\n value,\n timeStart,\n timeEnd,\n propLoading,\n apiPrefix,\n}: {\n value: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [] } = value;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const rightCmp = (\n {\n return (\n \n );\n }}\n />\n );\n const leftCmp = (\n {\n return (\n \n );\n }}\n />\n );\n\n return (\n \n \n Network\n \n \n \n {leftCmp}\n \n \n \n \n {rightCmp}\n \n \n \n \n \n \n );\n};\n\nexport default NetworkItem;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { componentToUse } from \"../widgetUtils\";\nimport MergedWidgets from \"../MergedWidgets\";\nimport { IDashboardPanel } from \"../types\";\nimport EntityStateItemRenderer from \"./EntityStateItemRenderer\";\nimport NetworkItem from \"./NetworkItem\";\nimport DashboardItemBox from \"../../DashboardItemBox\";\n\nconst MergedWidgetsRenderer = ({\n info,\n timeStart,\n timeEnd,\n loading,\n apiPrefix,\n}: {\n info: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n loading: boolean;\n apiPrefix: string;\n}) => {\n const { mergedPanels = [], title = \"\", id } = info;\n const [leftPanel, rightPanel] = mergedPanels;\n\n const renderById = () => {\n if ([500, 501].includes(id)) {\n return (\n \n \n \n );\n }\n\n if (id === 502) {\n return (\n \n \n \n );\n }\n\n return (\n \n );\n };\n\n return renderById();\n};\n\nexport default MergedWidgetsRenderer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { ServerInfo } from \"../types\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { Box } from \"@mui/material\";\nimport { CircleIcon } from \"mds\";\nimport get from \"lodash/get\";\nimport { commonDashboardInfocard } from \"../../Common/FormComponents/common/styleLibrary\";\nimport {\n getDriveStatusColor,\n getNetworkStatusColor,\n serverStatusColor,\n} from \"./Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...commonDashboardInfocard,\n });\n\ninterface ICardProps {\n classes?: any;\n server: ServerInfo;\n index: number;\n}\n\nconst ServerStatItem = ({\n label = \"\",\n value = \"\",\n statusColor = \"\",\n hasStatus = false,\n}: {\n label?: string;\n value?: any;\n hasStatus?: boolean;\n statusColor: string | undefined;\n}) => {\n return (\n \n \n
\n {value}{\" \"}\n \n {hasStatus ? (\n \n \n \n ) : (\n \n )}\n \n
\n
{label}
\n \n \n );\n};\n\nconst ServerInfoItem = ({ server }: ICardProps) => {\n const networkKeys = Object.keys(get(server, \"network\", {}));\n const networkTotal = networkKeys.length;\n const totalDrives = server.drives ? server.drives.length : 0;\n const activeNetwork = networkKeys.reduce((acc: number, currValue: string) => {\n const item = server.network[currValue];\n if (item === \"online\") {\n return acc + 1;\n }\n return acc;\n }, 0);\n const activeDisks = server.drives\n ? server.drives.filter((element) => element.state === \"ok\").length\n : 0;\n return (\n \n \n \n \n {server.endpoint || \"\"}\n \n {server?.state && (\n \n \n \n )}\n \n\n \n \n \n\n \n \n \n Version:\n {server.version ? server.version : \"N/A\"}\n \n }\n />\n \n \n );\n};\nexport default withStyles(styles)(ServerInfoItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { IDriveInfo } from \"../types\";\nimport {\n capacityColors,\n niceBytes,\n niceBytesInt,\n} from \"../../../../common/utils\";\nimport { Box } from \"@mui/material\";\nimport { Cell, Pie, PieChart } from \"recharts\";\nimport { CircleIcon } from \"mds\";\nimport { commonDashboardInfocard } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { STATUS_COLORS } from \"./Utils\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...commonDashboardInfocard,\n });\n\ninterface ICardProps {\n classes?: any;\n drive: IDriveInfo;\n}\n\nconst driveStatusColor = (health_status: string) => {\n switch (health_status) {\n case \"offline\":\n return STATUS_COLORS.RED;\n case \"ok\":\n return STATUS_COLORS.GREEN;\n default:\n return STATUS_COLORS.YELLOW;\n }\n};\n\nconst DriveInfoItem = ({ drive }: ICardProps) => {\n const totalSpace = drive.totalSpace || 0;\n const usedSpace = drive.usedSpace || 0;\n\n const freeSpace = totalSpace - usedSpace;\n\n const plotValues = [\n { value: freeSpace, color: \"#D6D6D6\", label: \"Free Space\" },\n {\n value: drive.usedSpace,\n color: capacityColors(usedSpace, totalSpace),\n label: \"Used Space\",\n },\n ];\n return (\n \n \n \n
{drive.endpoint || \"\"}
\n {drive.state && }\n \n\n \n \n
\n \n {drive.usedSpace ? niceBytesInt(drive.usedSpace) : \"-\"}\n \n
\n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n
\n
\n\n \n \n
\n {niceBytes(\n drive.totalSpace ? drive.totalSpace.toString() : \"0\"\n )}\n
\n \n \n\n \n
\n {niceBytes(drive.usedSpace ? drive.usedSpace.toString() : \"0\")}\n
\n \n \n \n
\n {niceBytes(\n drive.availableSpace ? drive.availableSpace.toString() : \"0\"\n )}\n
\n \n \n \n \n \n \n );\n};\n\nexport default withStyles(styles)(DriveInfoItem);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport ListSubheader from \"@mui/material/ListSubheader\";\nimport List from \"@mui/material/List\";\nimport ListItemButton from \"@mui/material/ListItemButton\";\nimport Collapse from \"@mui/material/Collapse\";\nimport { ServerInfo } from \"../types\";\nimport ServerInfoItem from \"./ServerInfoItem\";\nimport { Box } from \"@mui/material\";\nimport DriveInfoItem from \"./DriveInfoItem\";\nimport { MenuCollapsedIcon, MenuExpandedIcon } from \"mds\";\n\nconst ServersList = ({ data }: { data: ServerInfo[] }) => {\n const [expanded, setExpanded] = React.useState(\n data.length > 1 ? \"\" : data[0].endpoint + \"-0\"\n );\n\n const handleClick = (key: string) => {\n setExpanded(key);\n };\n\n return (\n \n \n Servers ({data.length})\n \n \n {data.map((serverInfo, index) => {\n const key = `${serverInfo.endpoint}-${index}`;\n const isExpanded = expanded === key;\n return (\n \n {\n if (!isExpanded) {\n handleClick(key);\n } else {\n handleClick(\"\");\n }\n }}\n className={isExpanded ? \"expanded\" : \"\"}\n sx={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n borderTop: index === 0 ? \"1px solid #f1f1f1\" : \"\",\n borderBottom: \"1px solid #f1f1f1\",\n borderLeft: \"1px solid #f1f1f1\",\n borderRight: \"1px solid #f1f1f1\",\n padding: \"3px 10px 3px 10px\",\n\n \"&:hover\": {\n background: \"#bebbbb0d\",\n },\n }}\n >\n \n \n {isExpanded ? (\n \n ) : (\n \n )}\n \n \n {isExpanded ? (\n \n \n Drives ({serverInfo.drives.length})\n \n\n \n {serverInfo.drives.map((driveInfo, index) => {\n return (\n \n );\n })}\n \n \n ) : null}\n \n );\n })}\n \n \n );\n};\n\nexport default ServersList;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box, Tooltip } from \"@mui/material\";\nimport React from \"react\";\n\nconst CounterCard = ({\n counterValue,\n label = \"\",\n icon = null,\n actions = null,\n loading = false,\n}: {\n counterValue: string | number;\n label?: any;\n icon?: any;\n actions?: any;\n loading?: boolean;\n}) => {\n return (\n \n \n \n \n {label}\n \n\n \n = 5\n ? {\n xl: \"50px\",\n lg: \"45px\",\n md: \"28px\",\n sm: \"28px\",\n xs: \"20px\",\n }\n : {\n xl: \"55px\",\n lg: \"50px\",\n md: \"36px\",\n sm: \"35px\",\n xs: \"35px\",\n },\n\n fontWeight: 600,\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n maxWidth: {\n md: 187,\n xs: 200,\n },\n flexFlow: {\n md: \"row\",\n xs: \"column\",\n },\n }}\n >\n {counterValue}\n \n \n \n \n {icon}\n\n \n {actions}\n \n \n \n \n );\n};\n\nexport default CounterCard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Box, Tooltip } from \"@mui/material\";\nimport React from \"react\";\nimport { Cell, Pie, PieChart } from \"recharts\";\n\nconst ReportedUsage = ({\n usageValue,\n total,\n unit,\n}: {\n usageValue: string;\n total: number | string;\n unit: string;\n}) => {\n const plotValues = [\n { value: total, color: \"#D6D6D6\", label: \"Free Space\" },\n {\n value: usageValue,\n color: \"#073052\",\n label: \"Used Space\",\n },\n ];\n\n return (\n \n \n
\n Reported Usage\n
\n\n \n \n {total}\n \n \n \n
\n\n \n \n \n
\n \n \n {plotValues.map((entry, index) => (\n \n ))}\n \n \n
\n \n
\n
\n \n );\n};\n\nexport default ReportedUsage;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport { Box, Grid } from \"@mui/material\";\nimport {\n ArrowRightIcon,\n BucketsIcon,\n Button,\n DiagnosticsMenuIcon,\n DrivesIcon,\n FormatDrivesIcon,\n HealIcon,\n HelpBox,\n PrometheusErrorIcon,\n ServersIcon,\n StorageIcon,\n TotalObjectsIcon,\n UptimeIcon,\n} from \"mds\";\nimport { calculateBytes, representationNumber } from \"../../../../common/utils\";\nimport { IDriveInfo, Usage } from \"../types\";\nimport StatusCountCard from \"./StatusCountCard\";\nimport groupBy from \"lodash/groupBy\";\nimport ServersList from \"./ServersList\";\nimport CounterCard from \"./CounterCard\";\nimport ReportedUsage from \"./ReportedUsage\";\nimport { Link } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../../common/SecureComponent/permissions\";\nimport TimeStatItem from \"../TimeStatItem\";\nimport TooltipWrapper from \"../../Common/TooltipWrapper/TooltipWrapper\";\n\nconst BoxItem = ({ children }: { children: any }) => {\n return (\n \n {children}\n \n );\n};\n\ninterface IDashboardProps {\n usage: Usage | null;\n}\n\nconst getServersList = (usage: Usage | null) => {\n if (usage !== null) {\n return [...usage.servers].sort(function (a, b) {\n const nameA = a.endpoint.toLowerCase();\n const nameB = b.endpoint.toLowerCase();\n if (nameA < nameB) {\n return -1;\n }\n if (nameA > nameB) {\n return 1;\n }\n return 0;\n });\n }\n\n return [];\n};\n\nconst prettyUsage = (usage: string | undefined) => {\n if (usage === undefined) {\n return { total: \"0\", unit: \"Mi\" };\n }\n\n return calculateBytes(usage);\n};\n\nconst BasicDashboard = ({ usage }: IDashboardProps) => {\n const usageValue = usage && usage.usage ? usage.usage.toString() : \"0\";\n const usageToRepresent = prettyUsage(usageValue);\n\n const { lastScan = \"n/a\", lastHeal = \"n/a\", upTime = \"n/a\" } = usage || {};\n\n const serverList = getServersList(usage || null);\n\n let allDrivesArray: IDriveInfo[] = [];\n\n serverList.forEach((server) => {\n const drivesInput = server.drives.map((drive) => {\n return drive;\n });\n\n allDrivesArray = [...allDrivesArray, ...drivesInput];\n });\n\n const serversGroup = groupBy(serverList, \"state\");\n const { offline: offlineServers = [], online: onlineServers = [] } =\n serversGroup;\n const drivesGroup = groupBy(allDrivesArray, \"state\");\n const { offline: offlineDrives = [], ok: onlineDrives = [] } = drivesGroup;\n return (\n \n \n \n \n \n }\n counterValue={usage ? representationNumber(usage.buckets) : 0}\n actions={\n \n \n {}}\n label={\"Browse\"}\n icon={}\n variant={\"regular\"}\n style={{\n padding: 5,\n height: 30,\n fontSize: 14,\n marginTop: 20,\n }}\n />\n \n \n }\n />\n \n \n }\n counterValue={usage ? representationNumber(usage.objects) : 0}\n />\n \n\n \n }\n />\n \n \n }\n />\n \n\n \n \n\n \n }\n label={\n \n \n Time since last\n {\" \"}\n Heal Activity\n \n }\n value={lastHeal}\n />\n }\n label={\n \n \n Time since last\n {\" \"}\n Scan Activity\n \n }\n value={lastScan}\n />\n }\n label={\"Uptime\"}\n value={upTime}\n />\n \n \n \n \n \n }\n label={\"Backend type\"}\n value={\n usage?.backend?.backendType\n ? usage.backend.backendType\n : \"Unknown\"\n }\n />\n \n \n }\n label={\"Standard storage class parity\"}\n value={\n usage?.backend?.standardSCParity\n ? usage.backend.standardSCParity.toString()\n : \"n/a\"\n }\n />\n \n \n }\n label={\"Reduced redundancy storage class parity\"}\n value={\n usage?.backend?.standardSCParity\n ? usage.backend.rrSCParity.toString()\n : \"n/a\"\n }\n />\n \n \n\n \n \n \n \n {usage?.advancedMetricsStatus === \"not configured\" && (\n \n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n \n MinIO Dashboard will display basic metrics as we couldn’t\n connect to Prometheus successfully. Please try again in a\n few minutes. If the problem persists, you can review your\n configuration and confirm that Prometheus server is up and\n running.\n \n theme.colors.link,\n },\n }}\n >\n \n Read more about Prometheus on our Docs site.\n \n \n \n }\n />\n \n )}\n \n \n );\n};\n\nexport default BasicDashboard;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Box, LinearProgress } from \"@mui/material\";\nimport { actionsTray } from \"../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"./types\";\nimport { panelsConfiguration } from \"./utils\";\nimport { TabPanel } from \"../../../shared/tabs\";\n\nimport TabSelector from \"../../Common/TabSelector/TabSelector\";\nimport { componentToUse } from \"./widgetUtils\";\nimport ZoomWidget from \"./ZoomWidget\";\nimport { AppState, useAppDispatch } from \"../../../../store\";\nimport DateRangeSelector from \"../../Common/FormComponents/DateRangeSelector/DateRangeSelector\";\nimport {\n DLayoutColumnProps,\n DLayoutRowProps,\n resourcesPanelsLayout,\n resourcesPanelsLayoutAdvanced,\n RowPanelLayout,\n summaryPanelsLayout,\n trafficPanelsLayout,\n} from \"./Widgets/LayoutUtil\";\nimport MergedWidgetsRenderer from \"./Widgets/MergedWidgetsRenderer\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport { Usage } from \"../types\";\nimport BasicDashboard from \"../BasicDashboard/BasicDashboard\";\nimport { Button, HelpBox, PrometheusErrorIcon, SyncIcon } from \"mds\";\nimport { ITabOption } from \"../../Common/TabSelector/types\";\nimport { getUsageAsync } from \"../dashboardThunks\";\nimport { reloadWidgets } from \"../dashboardSlice\";\nimport { selFeatures } from \"../../consoleSlice\";\n\ninterface IPrDashboard {\n classes?: any;\n apiPrefix?: string;\n usage: Usage | null;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...actionsTray,\n });\n\nconst PrDashboard = ({ apiPrefix = \"admin\", usage }: IPrDashboard) => {\n const dispatch = useAppDispatch();\n const zoomOpen = useSelector(\n (state: AppState) => state.dashboard.zoom.openZoom\n );\n const zoomWidget = useSelector(\n (state: AppState) => state.dashboard.zoom.widgetRender\n );\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n let hideMenu = false;\n if (features?.includes(\"hide-menu\")) {\n hideMenu = true;\n } else if (obOnly) {\n hideMenu = true;\n }\n\n const [timeStart, setTimeStart] = useState(null);\n const [timeEnd, setTimeEnd] = useState(null);\n const panelInformation = panelsConfiguration;\n const [curTab, setCurTab] = useState(0);\n\n const getPanelDetails = (id: number) => {\n return panelInformation.find((panel) => panel.id === id);\n };\n\n const triggerLoad = () => {\n dispatch(reloadWidgets());\n };\n\n const renderCmpByConfig = (\n panelInfo: IDashboardPanel | undefined,\n key: string\n ) => {\n return (\n \n {panelInfo ? (\n \n \n {panelInfo.mergedPanels ? (\n \n ) : (\n componentToUse(\n panelInfo,\n timeStart,\n timeEnd,\n true,\n apiPrefix,\n zoomOpen\n )\n )}\n \n \n ) : null}\n \n );\n };\n\n const renderPanelItems = (layoutRows: DLayoutRowProps[]) => {\n return layoutRows.reduce((prev: any[], rowItem, rIdx) => {\n const { columns = [] } = rowItem;\n const cellItems: any[] = columns.map(\n (cellItem: DLayoutColumnProps, colIdx: number) => {\n const panelInfo = getPanelDetails(cellItem.componentId);\n return renderCmpByConfig(panelInfo, `${rIdx}-${colIdx}`);\n }\n );\n const rowConfig = (\n \n {cellItems}\n \n );\n return [...prev, rowConfig];\n }, []);\n };\n\n const renderSummaryPanels = () => {\n return renderPanelItems(summaryPanelsLayout);\n };\n\n const renderTrafficPanels = () => {\n return renderPanelItems(trafficPanelsLayout);\n };\n\n const renderResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayout);\n };\n\n const renderAdvancedResourcesPanels = () => {\n return renderPanelItems(resourcesPanelsLayoutAdvanced);\n };\n\n let tabs: ITabOption[];\n if (usage?.advancedMetricsStatus !== \"not configured\") {\n tabs = [\n { label: \"Usage\" },\n { label: \"Traffic\" },\n { label: \"Resources\" },\n { label: \"Info\" },\n ];\n } else {\n tabs = [\n { label: \"Info\" },\n { label: \"Usage\", disabled: true },\n { label: \"Traffic\", disabled: true },\n { label: \"Resources\", disabled: true },\n ];\n }\n\n return (\n \n {zoomOpen && (\n \n )}\n\n \n {\n setCurTab(newValue);\n }}\n tabOptions={tabs}\n />\n \n \n \n {curTab ===\n (usage?.advancedMetricsStatus === \"not configured\" ? 0 : 3) ? (\n \n \n \n Server Information\n \n \n \n \n \n {\n dispatch(getUsageAsync());\n }}\n icon={}\n label={\"Sync\"}\n />\n \n \n \n \n ) : (\n \n )}\n \n \n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderSummaryPanels() : null}\n \n \n \n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderTrafficPanels() : null}\n \n \n \n \n {usage?.advancedMetricsStatus === \"unavailable\" && (\n }\n title={\"We can’t retrieve advanced metrics at this time.\"}\n help={\n \n It looks like Prometheus is not available or reachable at\n the moment.\n \n }\n />\n )}\n {panelInformation.length ? renderResourcesPanels() : null}\n

\n Advanced\n

\n {panelInformation.length ? renderAdvancedResourcesPanels() : null}\n
\n
\n \n {!usage && }\n {usage && }\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PrDashboard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\nimport PrDashboard from \"./Prometheus/PrDashboard\";\nimport Grid from \"@mui/material/Grid\";\nimport { containerForHeader } from \"../Common/FormComponents/common/styleLibrary\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { LinearProgress } from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../../store\";\nimport { getUsageAsync } from \"./dashboardThunks\";\nimport { useSelector } from \"react-redux\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport { selFeatures } from \"../consoleSlice\";\n\ninterface IDashboardSimple {\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...containerForHeader,\n });\n\nconst Dashboard = ({ classes }: IDashboardSimple) => {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n\n const usage = useSelector((state: AppState) => state.dashboard.usage);\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n let hideMenu = false;\n if (features?.includes(\"hide-menu\")) {\n hideMenu = true;\n } else if (obOnly) {\n hideMenu = true;\n }\n\n useEffect(() => {\n if (loading) {\n setLoading(false);\n dispatch(getUsageAsync());\n }\n }, [loading, dispatch]);\n\n return (\n \n {!hideMenu && }\n {loading ? (\n \n \n \n \n \n ) : (\n \n )}\n \n );\n};\n\nexport default withStyles(styles)(Dashboard);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment } from \"react\";\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: any;\n value: any;\n}\n\nexport const TabPanel = (props: TabPanelProps) => {\n const { children, value, index, ...other } = props;\n\n return (\n
\n \n );\n },\n isHeader: false,\n style: {\n height: \"400px\",\n borderBottom: 0,\n },\n },\n {\n id: \"com_feat_title\",\n featureTitleRow: true,\n },\n {\n id: \"com_license_cost\",\n },\n {\n id: \"com_release\",\n label: \"Upstream\",\n },\n {\n id: \"com_sla\",\n label: \"No SLA\",\n },\n {\n id: \"com_support\",\n label: \"Community:\",\n detail: \"Slack + Github\",\n },\n {\n id: \"com_security\",\n label: \"Self\",\n },\n {\n id: \"com_panic\",\n xsLabel: \"N/A\",\n },\n {\n id: \"com_diag\",\n xsLabel: \"N/A\",\n },\n {\n id: \"com_arch\",\n xsLabel: \"N/A\",\n },\n {\n id: \"com_perf\",\n xsLabel: \"N/A\",\n },\n {\n id: \"com_indemnity\",\n xsLabel: \"N/A\",\n },\n {\n id: \"com_sec_policy\",\n xsLabel: \"N/A\",\n },\n];\n\nexport const STANDARD_PLAN_FEATURES = [\n {\n label: \"Standard\",\n isHeader: true,\n style: {\n borderBottom: 0,\n },\n },\n {\n isHeader: false,\n label: () => {\n return (\n \n \n Designed for customers who require a commercial license and can\n mostly self-support but want the peace of mind that comes with the\n MinIO Subscription Network’s suite of operational capabilities and\n direct-to-engineer interaction. The Standard version is fully\n featured but with SLA limitations.

To learn more about\n the MinIO Subscription Network\n
{\" \"}\n \n click here\n \n .\n \n );\n },\n style: {\n height: \"400px\",\n borderBottom: 0,\n },\n },\n {\n id: \"std_feat_title\",\n featureTitleRow: true,\n },\n {\n id: \"std_license_cost\",\n label: () => (\n \n $10 per TiB per month\n \n ),\n detail: () => (\n \n (Minimum of 100TiB)\n \n ),\n },\n {\n id: \"std_release\",\n label: \"1 Year Long Term Support\",\n },\n {\n id: \"std_sla\",\n label: \"<48 Hours\",\n detail: \"(Local Business Hours)\",\n },\n {\n id: \"std_support\",\n label: \"L4 Direct Engineering\",\n detail: \"support via SUBNET\",\n },\n {\n id: \"std_security\",\n label: \"Continuous Scan and Alert\",\n },\n {\n id: \"std_panic\",\n label: \"1 Per year\",\n },\n {\n id: \"std_diag\",\n label: \"24/7/365\",\n },\n {\n id: \"std_arch\",\n xsLabel: \"N/A\",\n },\n {\n id: \"std_perf\",\n xsLabel: \"N/A\",\n },\n {\n id: \"std_indemnity\",\n xsLabel: \"N/A\",\n },\n {\n id: \"std_sec_policy\",\n xsLabel: \"N/A\",\n },\n];\n\nexport const ENTERPRISE_PLAN_FEATURES = [\n {\n label: \"Enterprise\",\n isHeader: true,\n style: {\n borderBottom: 0,\n },\n },\n {\n isHeader: false,\n label: () => {\n return (\n \n \n Designed for mission critical environments where both a license and\n strict SLAs are required. The Enterprise version is fully featured\n but comes with additional capabilities.

To learn more\n about the MinIO Subscription Network\n
{\" \"}\n \n click here\n \n .\n \n );\n },\n style: {\n height: \"400px\",\n borderBottom: 0,\n },\n },\n {\n id: \"end_feat_title\",\n featureTitleRow: true,\n },\n {\n id: \"ent_license_cost\",\n label: () => (\n \n $20 per TiB per month\n \n ),\n detail: () => (\n \n (Minimum of 100TiB)\n \n ),\n },\n {\n id: \"ent_release\",\n label: \"5 Years Long Term Support\",\n },\n {\n id: \"ent_sla\",\n label: \"<1 hour\",\n },\n {\n id: \"ent_support\",\n label: \"L4 Direct Engineering support via\",\n detail: \"SUBNET, Phone, Web Conference\",\n },\n {\n id: \"ent_security\",\n label: \"Continuous Scan and Alert\",\n },\n {\n id: \"ent_panic\",\n label: \"Unlimited\",\n },\n {\n id: \"ent_diag\",\n label: \"24/7/365\",\n },\n {\n id: \"ent_arch\",\n yesIcon: true,\n },\n {\n id: \"ent_perf\",\n yesIcon: true,\n },\n {\n id: \"ent_indemnity\",\n yesIcon: true,\n },\n {\n id: \"ent_sec_policy\",\n yesIcon: true,\n },\n];\n\nexport const PAID_PLANS = [LICENSE_PLANS.STANDARD, LICENSE_PLANS.ENTERPRISE];\n\nexport const getRenderValue = (val: any) => {\n return typeof val === \"function\" ? val() : val;\n};\n\nexport const LICENSE_CONSENT_STORE_KEY = \"agpl_minio_license_consent\";\nexport const setLicenseConsent = () => {\n localStorage.setItem(LICENSE_CONSENT_STORE_KEY, \"true\");\n};\n\nexport const getLicenseConsent = () => {\n return localStorage.getItem(LICENSE_CONSENT_STORE_KEY) === \"true\";\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { LogMessage } from \"./types\";\nimport { DateTime } from \"luxon\";\n\nexport interface LogState {\n logMessages: LogMessage[];\n logsStarted: boolean;\n}\n\nconst initialState: LogState = {\n logMessages: [],\n logsStarted: false,\n};\n\nexport const logsSlice = createSlice({\n name: \"logs\",\n initialState,\n reducers: {\n logMessageReceived: (state, action: PayloadAction) => {\n let msgs = state.logMessages;\n const logTime = DateTime.fromFormat(\n action.payload.time.toString(),\n \"HH:mm:ss z MM/dd/yyyy\",\n {\n zone: \"UTC\",\n }\n ).toJSDate();\n\n if (\n msgs.length > 0 &&\n logTime.getFullYear() === 1 &&\n action.payload.ConsoleMsg !== \"\"\n ) {\n for (let m in msgs) {\n if (msgs[m].time.getFullYear() === 1) {\n msgs[\n m\n ].ConsoleMsg = `${msgs[m].ConsoleMsg}\\n${action.payload.ConsoleMsg}`;\n }\n }\n } else {\n msgs.push(action.payload);\n }\n state.logMessages = msgs;\n },\n logResetMessages: (state) => {\n state.logMessages = [];\n },\n setLogsStarted: (state, action: PayloadAction) => {\n state.logsStarted = action.payload;\n },\n },\n});\n\nexport const { logMessageReceived, logResetMessages, setLogsStarted } =\n logsSlice.actions;\n\nexport default logsSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect, useState } from \"react\";\n\nimport { useNavigate } from \"react-router-dom\";\nimport { Theme } from \"@mui/material/styles\";\nimport { BucketsIcon, Button, HelpBox, RefreshIcon } from \"mds\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n actionsTray,\n containerForHeader,\n searchField,\n} from \"../Common/FormComponents/common/styleLibrary\";\n\nimport { SecureComponent } from \"../../../common/SecureComponent\";\nimport {\n CONSOLE_UI_RESOURCE,\n IAM_PAGES,\n IAM_SCOPES,\n permissionTooltipHelper,\n} from \"../../../common/SecureComponent/permissions\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\nimport SearchBox from \"../Common/SearchBox\";\nimport hasPermission from \"../../../common/SecureComponent/accessControl\";\nimport { setErrorSnackMessage } from \"../../../systemSlice\";\nimport { useAppDispatch } from \"../../../store\";\nimport { useSelector } from \"react-redux\";\nimport { selFeatures } from \"../consoleSlice\";\nimport AutoColorIcon from \"../Common/Components/AutoColorIcon\";\nimport TooltipWrapper from \"../Common/TooltipWrapper/TooltipWrapper\";\nimport AButton from \"../Common/AButton/AButton\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport { niceBytesInt } from \"../../../common/utils\";\nimport PageHeaderWrapper from \"../Common/PageHeaderWrapper/PageHeaderWrapper\";\nimport {\n Bucket,\n HttpResponse,\n ListBucketsResponse,\n Error,\n} from \"../../../api/consoleApi\";\nimport { api } from \"../../../api\";\nimport { errorToHandler } from \"../../../api/errors\";\nimport { setLoadingObjects } from \"./objectBrowserSlice\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n bucketList: {\n marginTop: 25,\n height: \"calc(100vh - 211px)\",\n \"&.isEmbedded\": {\n height: \"calc(100vh - 128px)\",\n },\n },\n searchField: {\n ...searchField.searchField,\n minWidth: 380,\n \"@media (max-width: 900px)\": {\n minWidth: 220,\n },\n },\n ...actionsTray,\n ...containerForHeader,\n })\n);\n\nconst OBListBuckets = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const [records, setRecords] = useState([]);\n const [loading, setLoading] = useState(true);\n const [filterBuckets, setFilterBuckets] = useState(\"\");\n\n const features = useSelector(selFeatures);\n const obOnly = !!features?.includes(\"object-browser-only\");\n\n useEffect(() => {\n if (loading) {\n const fetchRecords = () => {\n setLoading(true);\n api.buckets\n .listBuckets()\n .then((res: HttpResponse) => {\n if (res.data) {\n setLoading(false);\n setRecords(res.data.buckets || []);\n dispatch(setLoadingObjects(true));\n }\n })\n .catch((err) => {\n setLoading(false);\n dispatch(setErrorSnackMessage(errorToHandler(err)));\n });\n };\n fetchRecords();\n }\n }, [loading, dispatch]);\n\n const filteredRecords = records.filter((b: Bucket) => {\n if (filterBuckets === \"\") {\n return true;\n } else {\n return b.name.indexOf(filterBuckets) >= 0;\n }\n });\n\n const hasBuckets = records.length > 0;\n\n const canListBuckets = hasPermission(\"*\", [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ]);\n\n const tableActions = [\n {\n type: \"view\",\n onClick: (bucket: Bucket) => {\n navigate(`${IAM_PAGES.OBJECT_BROWSER_VIEW}/${bucket.name}`);\n },\n },\n ];\n\n return (\n \n {!obOnly && }\n \n \n {obOnly && (\n \n \n \n )}\n {hasBuckets && (\n \n )}\n\n \n \n {\n setLoading(true);\n }}\n icon={}\n variant={\"regular\"}\n />\n \n \n \n\n {loading && }\n {!loading && (\n \n {filteredRecords.length !== 0 && (\n (\n
\n \n \n {label}\n \n
\n ),\n },\n {\n label: \"Objects\",\n elementKey: \"objects\",\n renderFunction: (size: number) => size || 0,\n },\n {\n label: \"Size\",\n elementKey: \"size\",\n renderFunction: (size: number) => niceBytesInt(size || 0),\n },\n {\n label: \"Access\",\n elementKey: \"rw_access\",\n renderFullObject: true,\n renderFunction: (bucket: Bucket) => {\n let access = [];\n if (bucket.rw_access?.read) {\n access.push(\"R\");\n }\n if (bucket.rw_access?.write) {\n access.push(\"W\");\n }\n return {access.join(\"/\")};\n },\n },\n ]}\n itemActions={tableActions}\n />\n )}\n {filteredRecords.length === 0 && filterBuckets !== \"\" && (\n \n \n }\n title={\"No Results\"}\n help={\n \n No buckets match the filtering condition\n \n }\n />\n \n \n )}\n {!hasBuckets && (\n \n \n }\n title={\"Buckets\"}\n help={\n \n MinIO uses buckets to organize objects. A bucket is\n similar to a folder or directory in a filesystem, where\n each bucket can hold an arbitrary number of objects.\n
\n {canListBuckets ? (\n \"\"\n ) : (\n \n
\n {permissionTooltipHelper(\n [\n IAM_SCOPES.S3_LIST_BUCKET,\n IAM_SCOPES.S3_ALL_LIST_BUCKET,\n ],\n \"view the buckets on this server\"\n )}\n
\n
\n )}\n \n
\n To get started, \n {\n navigate(IAM_PAGES.ADD_BUCKETS);\n }}\n >\n Create a Bucket.\n \n \n
\n }\n />\n
\n \n )}\n \n )}\n
\n
\n );\n};\n\nexport default OBListBuckets;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Suspense } from \"react\";\nimport { Navigate, Route, Routes } from \"react-router-dom\";\nimport { IAM_PAGES } from \"../../../common/SecureComponent/permissions\";\nimport LoadingComponent from \"../../../common/LoadingComponent\";\nimport NotFoundPage from \"../../NotFoundPage\";\nimport OBBucketList from \"./OBBucketList\";\n\nconst BrowserHandler = React.lazy(\n () => import(\"../Buckets/BucketDetails/BrowserHandler\")\n);\nconst AddBucket = React.lazy(\n () => import(\"../Buckets/ListBuckets/AddBucket/AddBucket\")\n);\n\nconst ObjectBrowser = () => {\n return (\n \n }>\n \n \n }\n />\n }>\n \n \n }\n />\n }>\n \n \n }\n />\n }>\n \n \n }\n />\n } path=\"*\" />\n\n }>\n \n \n }\n />\n \n );\n};\n\nexport default ObjectBrowser;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { IFileItem, ObjectBrowserState } from \"./types\";\nimport {\n BucketObjectItem,\n IRestoreLocalObjectList,\n} from \"../Buckets/ListBuckets/Objects/ListObjects/types\";\nimport { IRetentionConfig } from \"../../../common/types\";\nimport { BucketVersioningInfo } from \"../Buckets/types\";\n\nconst defaultRewind = {\n rewindEnabled: false,\n bucketToRewind: \"\",\n dateToRewind: null,\n};\n\nconst initialState: ObjectBrowserState = {\n selectedBucket: \"\",\n versionsMode: false,\n loadingObjects: true,\n objectDetailsOpen: false,\n loadingVersions: true,\n loadingObjectInfo: true,\n rewind: {\n ...defaultRewind,\n },\n objectManager: {\n objectsToManage: [],\n managerOpen: false,\n newItems: false,\n startedItems: [],\n currentDownloads: [],\n currentUploads: [],\n },\n searchObjects: \"\",\n versionedFile: \"\",\n searchVersions: \"\",\n selectedVersion: \"\",\n showDeleted: false,\n selectedInternalPaths: null,\n simplePath: null,\n // object browser\n records: [],\n loadRecords: true,\n loadingVersioning: true,\n versionInfo: {},\n lockingEnabled: false,\n loadingLocking: false,\n selectedObjects: [],\n downloadRenameModal: null,\n selectedPreview: null,\n previewOpen: false,\n shareFileModalOpen: false,\n isOpeningObjectDetail: false,\n anonymousAccessOpen: false,\n retentionConfig: {\n mode: \"\",\n unit: \"\",\n validity: 0,\n },\n longFileOpen: false,\n};\n\nexport const objectBrowserSlice = createSlice({\n name: \"objectBrowser\",\n initialState,\n reducers: {\n setRewindEnable: (\n state,\n action: PayloadAction<{\n state: boolean;\n bucket: string;\n dateRewind: any;\n }>\n ) => {\n state.rewind.rewindEnabled = action.payload.state;\n state.rewind.bucketToRewind = action.payload.bucket;\n state.rewind.dateToRewind = action.payload.dateRewind;\n },\n resetRewind: (state) => {\n state.rewind.rewindEnabled = false;\n state.rewind.bucketToRewind = \"\";\n state.rewind.dateToRewind = null;\n },\n setVersionsModeEnabled: (\n state,\n action: PayloadAction<{\n status: boolean;\n objectName?: string;\n }>\n ) => {\n let objN = \"\";\n if (action.payload.objectName) {\n objN = action.payload.objectName;\n }\n const objectN = !action.payload.status ? \"\" : objN;\n state.versionsMode = action.payload.status;\n state.versionedFile = objectN;\n state.selectedVersion = \"\";\n },\n setNewObject: (state, action: PayloadAction) => {\n state.objectManager.objectsToManage.push(action.payload);\n state.objectManager.newItems = true;\n },\n updateProgress: (\n state,\n action: PayloadAction<{\n instanceID: string;\n progress: number;\n }>\n ) => {\n const itemUpdate = state.objectManager.objectsToManage.findIndex(\n (item) => item.instanceID === action.payload.instanceID\n );\n\n if (itemUpdate === -1) {\n return;\n }\n\n state.objectManager.objectsToManage[itemUpdate].percentage =\n action.payload.progress;\n state.objectManager.objectsToManage[itemUpdate].waitingForFile = false;\n },\n completeObject: (state, action: PayloadAction) => {\n const objectToComplete = state.objectManager.objectsToManage.findIndex(\n (item) => item.instanceID === action.payload\n );\n\n if (objectToComplete === -1) {\n return;\n }\n\n state.objectManager.objectsToManage[objectToComplete].percentage = 100;\n state.objectManager.objectsToManage[objectToComplete].waitingForFile =\n false;\n state.objectManager.objectsToManage[objectToComplete].done = true;\n\n // We cancel from in-progress lists\n const type = state.objectManager.objectsToManage[objectToComplete].type;\n const ID = state.objectManager.objectsToManage[objectToComplete].ID;\n\n if (type === \"download\") {\n state.objectManager.currentDownloads =\n state.objectManager.currentDownloads.filter((item) => item !== ID);\n } else if (type === \"upload\") {\n state.objectManager.currentUploads =\n state.objectManager.currentUploads.filter((item) => item !== ID);\n }\n },\n failObject: (\n state,\n action: PayloadAction<{ instanceID: string; msg: string }>\n ) => {\n const objectToFail = state.objectManager.objectsToManage.findIndex(\n (item) => item.instanceID === action.payload.instanceID\n );\n\n state.objectManager.objectsToManage[objectToFail].failed = true;\n state.objectManager.objectsToManage[objectToFail].waitingForFile = false;\n state.objectManager.objectsToManage[objectToFail].done = true;\n state.objectManager.objectsToManage[objectToFail].errorMessage =\n action.payload.msg;\n\n // We cancel from in-progress lists\n const type = state.objectManager.objectsToManage[objectToFail].type;\n const ID = state.objectManager.objectsToManage[objectToFail].ID;\n\n if (type === \"download\") {\n state.objectManager.currentDownloads =\n state.objectManager.currentDownloads.filter((item) => item !== ID);\n } else if (type === \"upload\") {\n state.objectManager.currentUploads =\n state.objectManager.currentUploads.filter((item) => item !== ID);\n }\n },\n cancelObjectInList: (state, action: PayloadAction) => {\n const objectToCancel = state.objectManager.objectsToManage.findIndex(\n (item) => item.instanceID === action.payload\n );\n\n if (objectToCancel === -1) {\n return { ...state };\n }\n\n state.objectManager.objectsToManage[objectToCancel].cancelled = true;\n state.objectManager.objectsToManage[objectToCancel].done = true;\n state.objectManager.objectsToManage[objectToCancel].percentage = 0;\n\n // We cancel from in-progress lists\n const type = state.objectManager.objectsToManage[objectToCancel].type;\n const ID = state.objectManager.objectsToManage[objectToCancel].ID;\n\n if (type === \"download\") {\n state.objectManager.currentDownloads =\n state.objectManager.currentDownloads.filter((item) => item !== ID);\n } else if (type === \"upload\") {\n state.objectManager.currentUploads =\n state.objectManager.currentUploads.filter((item) => item !== ID);\n }\n },\n deleteFromList: (state, action: PayloadAction) => {\n const notObject = state.objectManager.objectsToManage.filter(\n (element) => element.instanceID !== action.payload\n );\n\n state.objectManager.objectsToManage = notObject;\n state.objectManager.managerOpen =\n notObject.length === 0 ? false : state.objectManager.managerOpen;\n },\n cleanList: (state) => {\n const nonCompletedList = state.objectManager.objectsToManage.filter(\n (item) => item.percentage !== 100\n );\n state.objectManager.objectsToManage = nonCompletedList;\n state.objectManager.managerOpen =\n nonCompletedList.length === 0 ? false : state.objectManager.managerOpen;\n state.objectManager.newItems = false;\n },\n toggleList: (state) => {\n state.objectManager.managerOpen = !state.objectManager.managerOpen;\n state.objectManager.newItems = false;\n },\n openList: (state) => {\n state.objectManager.managerOpen = true;\n },\n closeList: (state) => {\n state.objectManager.managerOpen = false;\n },\n setSearchObjects: (state, action: PayloadAction) => {\n state.searchObjects = action.payload;\n },\n setLoadingObjects: (state, action: PayloadAction) => {\n state.loadingObjects = action.payload;\n },\n setSearchVersions: (state, action: PayloadAction) => {\n state.searchVersions = action.payload;\n },\n setSelectedVersion: (state, action: PayloadAction) => {\n state.selectedVersion = action.payload;\n },\n setShowDeletedObjects: (state, action: PayloadAction) => {\n state.showDeleted = action.payload;\n },\n setLoadingVersions: (state, action: PayloadAction) => {\n state.loadingVersions = action.payload;\n },\n setLoadingObjectInfo: (state, action: PayloadAction) => {\n state.loadingObjectInfo = action.payload;\n },\n setObjectDetailsView: (state, action: PayloadAction) => {\n state.objectDetailsOpen = action.payload;\n state.selectedInternalPaths = action.payload\n ? state.selectedInternalPaths\n : null;\n },\n setSelectedObjectView: (state, action: PayloadAction) => {\n state.selectedInternalPaths = action.payload;\n },\n setSimplePathHandler: (state, action: PayloadAction) => {\n state.simplePath = action.payload;\n },\n newDownloadInit: (state, action: PayloadAction) => {\n state.objectManager.currentDownloads = [\n ...state.objectManager.currentDownloads,\n action.payload,\n ];\n },\n newUploadInit: (state, action: PayloadAction) => {\n state.objectManager.currentUploads = [\n ...state.objectManager.currentUploads,\n action.payload,\n ];\n },\n setRecords: (state, action: PayloadAction) => {\n state.records = action.payload;\n },\n setLoadingVersioning: (state, action: PayloadAction) => {\n state.loadingVersioning = action.payload;\n },\n setIsVersioned: (state, action: PayloadAction) => {\n state.versionInfo = action.payload;\n },\n setLockingEnabled: (state, action: PayloadAction) => {\n state.lockingEnabled = action.payload;\n },\n setLoadingLocking: (state, action: PayloadAction) => {\n state.loadingLocking = action.payload;\n },\n newMessage: (state, action: PayloadAction) => {\n state.records = [...state.records, ...action.payload];\n },\n resetMessages: (state) => {\n state.records = [];\n },\n setLoadingRecords: (state, action: PayloadAction) => {\n state.loadRecords = action.payload;\n },\n setSelectedObjects: (state, action: PayloadAction) => {\n state.selectedObjects = action.payload;\n },\n setDownloadRenameModal: (\n state,\n action: PayloadAction\n ) => {\n state.downloadRenameModal = action.payload;\n },\n setSelectedPreview: (\n state,\n action: PayloadAction\n ) => {\n state.selectedPreview = action.payload;\n },\n setPreviewOpen: (state, action: PayloadAction) => {\n state.previewOpen = action.payload;\n },\n setShareFileModalOpen: (state, action: PayloadAction) => {\n state.shareFileModalOpen = action.payload;\n },\n restoreLocalObjectList: (\n state,\n action: PayloadAction\n ) => {\n const indexToReplace = state.records.findIndex(\n (element) => element.name === action.payload.prefix\n );\n\n if (indexToReplace >= 0) {\n state.records[indexToReplace].delete_flag =\n action.payload.objectInfo.is_delete_marker;\n state.records[indexToReplace].size = parseInt(\n action.payload.objectInfo.size || \"0\"\n );\n }\n },\n setIsOpeningOD: (state, action: PayloadAction) => {\n state.isOpeningObjectDetail = action.payload;\n },\n setRetentionConfig: (\n state,\n action: PayloadAction\n ) => {\n state.retentionConfig = action.payload;\n },\n setSelectedBucket: (state, action: PayloadAction) => {\n state.selectedBucket = action.payload;\n },\n setLongFileOpen: (state, action: PayloadAction) => {\n state.longFileOpen = action.payload;\n },\n setAnonymousAccessOpen: (state, action: PayloadAction) => {\n state.anonymousAccessOpen = action.payload;\n },\n },\n});\nexport const {\n setRewindEnable,\n resetRewind,\n setVersionsModeEnabled,\n setNewObject,\n updateProgress,\n completeObject,\n failObject,\n deleteFromList,\n cleanList,\n toggleList,\n openList,\n closeList,\n setSearchObjects,\n setLoadingObjects,\n cancelObjectInList,\n setSearchVersions,\n setSelectedVersion,\n setShowDeletedObjects,\n setLoadingVersions,\n setLoadingObjectInfo,\n setObjectDetailsView,\n setSelectedObjectView,\n setSimplePathHandler,\n newDownloadInit,\n newUploadInit,\n setRecords,\n resetMessages,\n setLoadingVersioning,\n setIsVersioned,\n setLoadingLocking,\n setLockingEnabled,\n newMessage,\n setSelectedObjects,\n setDownloadRenameModal,\n setSelectedPreview,\n setPreviewOpen,\n setShareFileModalOpen,\n setLoadingRecords,\n restoreLocalObjectList,\n setIsOpeningOD,\n setRetentionConfig,\n setSelectedBucket,\n setLongFileOpen,\n setAnonymousAccessOpen,\n} = objectBrowserSlice.actions;\n\nexport default objectBrowserSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nlet objectCalls: { [key: string]: XMLHttpRequest } = {};\nlet formDataElements: { [key: string]: FormData } = {};\n\nexport const storeCallForObjectWithID = (id: string, call: XMLHttpRequest) => {\n objectCalls[id] = call;\n};\n\nexport const callForObjectID = (id: string): XMLHttpRequest => {\n return objectCalls[id];\n};\n\nexport const storeFormDataWithID = (id: string, formData: FormData) => {\n formDataElements[id] = formData;\n};\n\nexport const formDataFromID = (id: string): FormData => {\n return formDataElements[id];\n};\n\nexport const removeTrace = (id: string) => {\n delete objectCalls[id];\n delete formDataElements[id];\n};\n\nexport const makeid = (length: number) => {\n var result = \"\";\n var characters =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n var charactersLength = characters.length;\n for (var i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2023 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { SubnetInfo, SubnetOrganization } from \"../License/types\";\n\nexport interface RegisterState {\n license: string;\n subnetPassword: string;\n subnetEmail: string;\n subnetMFAToken: string;\n subnetOTP: string;\n subnetAccessToken: string;\n selectedSubnetOrganization: string;\n subnetRegToken: string;\n subnetOrganizations: SubnetOrganization[];\n showPassword: boolean;\n loading: boolean;\n loadingLicenseInfo: boolean;\n clusterRegistered: boolean;\n licenseInfo: SubnetInfo | undefined;\n curTab: number;\n}\n\nconst initialState: RegisterState = {\n license: \"\",\n subnetPassword: \"\",\n subnetEmail: \"\",\n subnetMFAToken: \"\",\n subnetOTP: \"\",\n subnetAccessToken: \"\",\n selectedSubnetOrganization: \"\",\n subnetRegToken: \"\",\n subnetOrganizations: [],\n showPassword: false,\n loading: false,\n loadingLicenseInfo: false,\n clusterRegistered: false,\n licenseInfo: undefined,\n curTab: 0,\n};\n\nexport const registerSlice = createSlice({\n name: \"register\",\n initialState,\n reducers: {\n setLicense: (state, action: PayloadAction) => {\n state.license = action.payload;\n },\n setSubnetPassword: (state, action: PayloadAction) => {\n state.subnetPassword = action.payload;\n },\n setSubnetEmail: (state, action: PayloadAction) => {\n state.subnetEmail = action.payload;\n },\n setSubnetMFAToken: (state, action: PayloadAction) => {\n state.subnetMFAToken = action.payload;\n },\n setSubnetOTP: (state, action: PayloadAction) => {\n state.subnetOTP = action.payload;\n },\n setSubnetAccessToken: (state, action: PayloadAction) => {\n state.subnetAccessToken = action.payload;\n },\n setSelectedSubnetOrganization: (state, action: PayloadAction) => {\n state.selectedSubnetOrganization = action.payload;\n },\n setSubnetRegToken: (state, action: PayloadAction) => {\n state.subnetRegToken = action.payload;\n },\n setSubnetOrganizations: (\n state,\n action: PayloadAction\n ) => {\n state.subnetOrganizations = action.payload;\n },\n setShowPassword: (state, action: PayloadAction) => {\n state.showPassword = action.payload;\n },\n setLoading: (state, action: PayloadAction) => {\n state.loading = action.payload;\n },\n setLoadingLicenseInfo: (state, action: PayloadAction) => {\n state.loadingLicenseInfo = action.payload;\n },\n setClusterRegistered: (state, action: PayloadAction) => {\n state.clusterRegistered = action.payload;\n },\n setLicenseInfo: (state, action: PayloadAction) => {\n state.licenseInfo = action.payload;\n },\n setCurTab: (state, action: PayloadAction) => {\n state.curTab = action.payload;\n },\n resetRegisterForm: () => initialState,\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const {\n setLicense,\n setSubnetPassword,\n setSubnetEmail,\n setSubnetMFAToken,\n setSubnetOTP,\n setSubnetAccessToken,\n setSelectedSubnetOrganization,\n setSubnetRegToken,\n setSubnetOrganizations,\n setShowPassword,\n setLoading,\n setLoadingLicenseInfo,\n setClusterRegistered,\n setLicenseInfo,\n setCurTab,\n resetRegisterForm,\n} = registerSlice.actions;\n\nexport default registerSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { TraceMessage } from \"./types\";\n\nexport interface TraceState {\n messages: TraceMessage[];\n traceStarted: boolean;\n}\n\nconst initialState: TraceState = {\n messages: [],\n traceStarted: false,\n};\n\nexport const traceSlice = createSlice({\n name: \"trace\",\n initialState,\n reducers: {\n traceMessageReceived: (state, action: PayloadAction) => {\n state.messages.push(action.payload);\n },\n traceResetMessages: (state) => {\n state.messages = [];\n },\n setTraceStarted: (state, action: PayloadAction) => {\n state.traceStarted = action.payload;\n },\n },\n});\n\nexport const { traceMessageReceived, traceResetMessages, setTraceStarted } =\n traceSlice.actions;\n\nexport default traceSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { createUserAsync, resetFormAsync } from \"./thunk/AddUsersThunk\";\n\nexport interface ICreateUser {\n userName: string;\n secretKey: string;\n selectedGroups: string[];\n selectedPolicies: string[];\n showPassword: boolean;\n sendEnabled: boolean;\n addLoading: boolean;\n apinoerror: boolean;\n secretKeylength: number;\n}\n\nconst initialState: ICreateUser = {\n addLoading: false,\n showPassword: false,\n sendEnabled: false,\n apinoerror: false,\n userName: \"\",\n secretKey: \"\",\n selectedGroups: [],\n selectedPolicies: [],\n secretKeylength: 0,\n};\n\nexport const createUserSlice = createSlice({\n name: \"createUser\",\n initialState,\n reducers: {\n setAddLoading: (state, action: PayloadAction) => {\n state.addLoading = action.payload;\n },\n setUserName: (state, action: PayloadAction) => {\n state.userName = action.payload;\n },\n setSelectedGroups: (state, action: PayloadAction) => {\n state.selectedGroups = action.payload;\n },\n setSecretKey: (state, action: PayloadAction) => {\n state.secretKey = action.payload;\n state.secretKeylength = state.secretKey.length;\n },\n setSelectedPolicies: (state, action: PayloadAction) => {\n state.selectedPolicies = action.payload;\n },\n setShowPassword: (state, action: PayloadAction) => {\n state.showPassword = action.payload;\n },\n setSendEnabled: (state) => {\n state.sendEnabled = state.userName.trim() !== \"\";\n },\n setApinoerror: (state, action: PayloadAction) => {\n state.apinoerror = action.payload;\n },\n },\n extraReducers: (builder) => {\n builder\n .addCase(resetFormAsync.fulfilled, (state, action) => {\n state.userName = \"\";\n state.selectedGroups = [];\n state.secretKey = \"\";\n state.selectedPolicies = [];\n state.showPassword = false;\n })\n .addCase(createUserAsync.pending, (state, action) => {\n state.addLoading = true;\n })\n .addCase(createUserAsync.rejected, (state, action) => {\n state.addLoading = false;\n })\n .addCase(createUserAsync.fulfilled, (state, action) => {\n state.apinoerror = true;\n });\n },\n});\n\nexport const {\n setUserName,\n setSelectedGroups,\n setSecretKey,\n setSelectedPolicies,\n setShowPassword,\n setAddLoading,\n setSendEnabled,\n setApinoerror,\n} = createUserSlice.actions;\n\nexport default createUserSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport {\n setAddLoading,\n setSecretKey,\n setSelectedGroups,\n setSelectedPolicies,\n setShowPassword,\n setUserName,\n} from \"../AddUsersSlice\";\nimport { AppState } from \"../../../../store\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport { setErrorSnackMessage } from \"../../../../systemSlice\";\n\nexport const resetFormAsync = createAsyncThunk(\n \"resetForm/resetFormAsync\",\n async (_, { dispatch }) => {\n dispatch(setSelectedGroups([]));\n dispatch(setUserName(\"\"));\n dispatch(setSecretKey(\"\"));\n dispatch(setSelectedPolicies([]));\n dispatch(setShowPassword(false));\n }\n);\n\nexport const createUserAsync = createAsyncThunk(\n \"createTenant/createNamespaceAsync\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n const accessKey = state.createUser.userName;\n const secretKey = state.createUser.secretKey;\n const selectedGroups = state.createUser.selectedGroups;\n const selectedPolicies = state.createUser.selectedPolicies;\n return api\n .invoke(\"POST\", \"/api/v1/users\", {\n accessKey,\n secretKey,\n groups: selectedGroups,\n policies: selectedPolicies,\n })\n .then((res) => {\n dispatch(setAddLoading(false));\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setAddLoading(false));\n dispatch(setErrorSnackMessage(err));\n });\n }\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { EventInfo } from \"./types\";\n\nexport interface WatchState {\n messages: EventInfo[];\n}\n\nconst initialState: WatchState = {\n messages: [],\n};\n\nexport const watchSlice = createSlice({\n name: \"trace\",\n initialState,\n reducers: {\n watchMessageReceived: (state, action: PayloadAction) => {\n state.messages.push(action.payload);\n },\n watchResetMessages: (state) => {\n state.messages = [];\n },\n },\n});\n\nexport const { watchResetMessages, watchMessageReceived } = watchSlice.actions;\n\nexport default watchSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { ISessionResponse } from \"./types\";\nimport { AppState } from \"../../store\";\n\nexport interface ConsoleState {\n session: ISessionResponse;\n}\n\nconst initialState: ConsoleState = {\n session: {\n status: \"\",\n features: [],\n distributedMode: false,\n permissions: {},\n allowResources: null,\n customStyles: null,\n envConstants: null,\n serverEndPoint: \"\",\n },\n};\n\nexport const consoleSlice = createSlice({\n name: \"console\",\n initialState,\n reducers: {\n saveSessionResponse: (state, action: PayloadAction) => {\n state.session = action.payload;\n },\n resetSession: (state) => {\n state.session = initialState.session;\n },\n },\n});\n\nexport const { saveSessionResponse, resetSession } = consoleSlice.actions;\nexport const selSession = (state: AppState) => state.console.session;\nexport const selFeatures = (state: AppState) =>\n state.console.session ? state.console.session.features : [];\n\nexport default consoleSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { TextFieldProps } from \"@mui/material\";\nimport TextField from \"@mui/material/TextField\";\nimport React from \"react\";\n\nconst inputStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n \"& .MuiOutlinedInput-root\": {\n paddingLeft: 0,\n \"& svg\": {\n marginLeft: 4,\n height: 14,\n color: theme.palette.primary.main,\n },\n \"& input\": {\n padding: 10,\n fontSize: 14,\n paddingLeft: 0,\n \"&::placeholder\": {\n fontSize: 12,\n },\n \"@media (max-width: 900px)\": {\n padding: 10,\n },\n },\n \"& fieldset\": {},\n\n \"& fieldset:hover\": {\n borderBottom: \"2px solid #000000\",\n borderRadius: 0,\n },\n },\n },\n })\n);\n\nexport const LoginField = (props: TextFieldProps) => {\n const classes = inputStyles();\n\n return (\n \n );\n};\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport Grid from \"@mui/material/Grid\";\nimport React from \"react\";\nimport {\n Button,\n LockFilledIcon,\n LogoutIcon,\n PasswordKeyIcon,\n UserFilledIcon,\n} from \"mds\";\nimport { setAccessKey, setSecretKey, setSTS, setUseSTS } from \"./loginSlice\";\nimport {\n InputAdornment,\n LinearProgress,\n MenuItem,\n Select,\n SelectChangeEvent,\n} from \"@mui/material\";\nimport { AppState, useAppDispatch } from \"../../store\";\nimport { useSelector } from \"react-redux\";\nimport { LoginField } from \"./LoginField\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport { spacingUtils } from \"../Console/Common/FormComponents/common/styleLibrary\";\nimport { doLoginAsync } from \"./loginThunks\";\nimport { IStrategyForm } from \"./types\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n },\n submit: {\n margin: \"30px 0px 8px\",\n height: 40,\n width: \"100%\",\n boxShadow: \"none\",\n padding: \"16px 30px\",\n },\n submitContainer: {\n textAlign: \"right\",\n marginTop: 30,\n },\n linearPredef: {\n height: 10,\n },\n ...spacingUtils,\n })\n);\n\nconst StrategyForm = ({ redirectRules }: IStrategyForm) => {\n const dispatch = useAppDispatch();\n const classes = useStyles();\n\n const accessKey = useSelector((state: AppState) => state.login.accessKey);\n const secretKey = useSelector((state: AppState) => state.login.secretKey);\n const sts = useSelector((state: AppState) => state.login.sts);\n const useSTS = useSelector((state: AppState) => state.login.useSTS);\n\n const loginSending = useSelector(\n (state: AppState) => state.login.loginSending\n );\n\n const formSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n dispatch(doLoginAsync());\n };\n\n let ssoOptions: React.ReactNode = null;\n\n if (redirectRules.length > 0) {\n ssoOptions = redirectRules.map((r, idx) => (\n \n \n {r.displayName}\n {r.serviceType ? ` - ${r.serviceType}` : \"\"}\n \n ));\n }\n\n const extraActionSelector = (e: SelectChangeEvent) => {\n const value = e.target.value;\n\n if (value) {\n console.log(value);\n if (value.includes(\"use-sts\")) {\n console.log(\"si\");\n dispatch(setUseSTS(!useSTS));\n\n return;\n }\n\n window.location.href = e.target.value as string;\n }\n };\n\n return (\n \n
\n \n \n ) =>\n dispatch(setAccessKey(e.target.value))\n }\n placeholder={useSTS ? \"STS Username\" : \"Username\"}\n name=\"accessKey\"\n autoComplete=\"username\"\n disabled={loginSending}\n variant={\"outlined\"}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n }}\n />\n \n \n ) =>\n dispatch(setSecretKey(e.target.value))\n }\n name=\"secretKey\"\n type=\"password\"\n id=\"secretKey\"\n autoComplete=\"current-password\"\n disabled={loginSending}\n placeholder={useSTS ? \"STS Secret\" : \"Password\"}\n variant={\"outlined\"}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n }}\n />\n \n {useSTS && (\n \n ) =>\n dispatch(setSTS(e.target.value))\n }\n placeholder={\"STS Token\"}\n name=\"STS\"\n autoComplete=\"sts\"\n disabled={loginSending}\n variant={\"outlined\"}\n InputProps={{\n startAdornment: (\n \n \n \n ),\n }}\n />\n \n )}\n \n\n \n \n \n \n {loginSending && }\n \n \n \"Other Authentication Methods\"}\n sx={{\n width: \"100%\",\n height: \"38px\",\n fontSize: \"14px\",\n borderRadius: \"4px\",\n }}\n >\n 0}\n >\n {useSTS ? \"Use Credentials\" : \"Use STS\"}\n \n {ssoOptions}\n \n \n \n
\n );\n};\n\nexport default StrategyForm;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React, { Fragment, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { Button, Loader, LoginWrapper, RefreshIcon } from \"mds\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport makeStyles from \"@mui/styles/makeStyles\";\nimport { loginStrategyType, redirectRule } from \"./types\";\nimport MainError from \"../Console/Common/MainError/MainError\";\nimport { spacingUtils } from \"../Console/Common/FormComponents/common/styleLibrary\";\nimport { AppState, useAppDispatch } from \"../../store\";\nimport { useSelector } from \"react-redux\";\nimport { getFetchConfigurationAsync, getVersionAsync } from \"./loginThunks\";\nimport { resetForm } from \"./loginSlice\";\nimport StrategyForm from \"./StrategyForm\";\nimport { redirectRules } from \"../../utils/sortFunctions\";\nimport { getLogoVar } from \"../../config\";\n\nconst useStyles = makeStyles((theme: Theme) =>\n createStyles({\n root: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"auto\",\n },\n form: {\n width: \"100%\", // Fix IE 11 issue.\n },\n submit: {\n margin: \"30px 0px 8px\",\n height: 40,\n width: \"100%\",\n boxShadow: \"none\",\n padding: \"16px 30px\",\n },\n loginSsoText: {\n fontWeight: \"700\",\n marginBottom: \"15px\",\n },\n ssoSelect: {\n width: \"100%\",\n fontSize: \"13px\",\n fontWeight: \"700\",\n color: \"grey\",\n },\n ssoMenuItem: {\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: theme.palette.primary.light,\n \"&.MuiMenuItem-divider:last-of-type\": {\n borderBottom: \"none\",\n },\n \"&.Mui-focusVisible\": {\n backgroundColor: theme.palette.grey[\"100\"],\n },\n },\n ssoLoginIcon: {\n height: \"13px\",\n marginRight: \"25px\",\n },\n ssoSubmit: {\n marginTop: \"15px\",\n \"&:first-of-type\": {\n marginTop: 0,\n },\n },\n separator: {\n marginLeft: 4,\n marginRight: 4,\n },\n linkHolder: {\n marginTop: 20,\n font: \"normal normal normal 14px/16px Inter\",\n },\n miniLinks: {\n margin: \"auto\",\n textAlign: \"center\",\n color: \"#B2DEF5\",\n \"& a\": {\n color: \"#B2DEF5\",\n textDecoration: \"none\",\n },\n \"& .min-icon\": {\n width: 10,\n color: \"#B2DEF5\",\n },\n },\n miniLogo: {\n marginTop: 8,\n \"& .min-icon\": {\n height: 12,\n paddingTop: 2,\n marginRight: 2,\n },\n },\n loginPage: {\n height: \"100%\",\n margin: \"auto\",\n },\n buttonRetry: {\n display: \"flex\",\n justifyContent: \"center\",\n },\n loginContainer: {\n flexDirection: \"column\",\n maxWidth: 400,\n margin: \"auto\",\n \"& .right-items\": {\n backgroundColor: \"white\",\n padding: 40,\n },\n \"& .consoleTextBanner\": {\n fontWeight: 300,\n fontSize: \"calc(3vw + 3vh + 1.5vmin)\",\n lineHeight: 1.15,\n color: theme.palette.primary.main,\n flex: 1,\n height: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n margin: \"auto\",\n\n \"& .logoLine\": {\n display: \"flex\",\n alignItems: \"center\",\n fontSize: 18,\n },\n \"& .left-items\": {\n marginTop: 100,\n background:\n \"transparent linear-gradient(180deg, #FBFAFA 0%, #E4E4E4 100%) 0% 0% no-repeat padding-box\",\n padding: 40,\n },\n \"& .left-logo\": {\n \"& .min-icon\": {\n color: theme.palette.primary.main,\n width: 108,\n },\n marginBottom: 10,\n },\n \"& .text-line1\": {\n font: \" 100 44px 'Inter'\",\n },\n \"& .text-line2\": {\n fontSize: 80,\n fontWeight: 100,\n textTransform: \"uppercase\",\n },\n \"& .text-line3\": {\n fontSize: 14,\n fontWeight: \"bold\",\n },\n \"& .logo-console\": {\n display: \"flex\",\n alignItems: \"center\",\n\n \"@media (max-width: 900px)\": {\n marginTop: 20,\n flexFlow: \"column\",\n\n \"& svg\": {\n width: \"50%\",\n },\n },\n },\n },\n },\n \"@media (max-width: 900px)\": {\n loginContainer: {\n display: \"flex\",\n flexFlow: \"column\",\n\n \"& .consoleTextBanner\": {\n margin: 0,\n flex: 2,\n\n \"& .left-items\": {\n alignItems: \"center\",\n textAlign: \"center\",\n },\n\n \"& .logoLine\": {\n justifyContent: \"center\",\n },\n },\n },\n },\n loginStrategyMessage: {\n textAlign: \"center\",\n },\n loadingLoginStrategy: {\n textAlign: \"center\",\n width: 40,\n height: 40,\n },\n submitContainer: {\n textAlign: \"right\",\n marginTop: 30,\n },\n linearPredef: {\n height: 10,\n },\n retryButton: {\n alignSelf: \"flex-end\",\n },\n iconLogo: {\n \"& .min-icon\": {\n width: \"100%\",\n },\n },\n ...spacingUtils,\n })\n);\n\nexport interface LoginStrategyPayload {\n accessKey: string;\n secretKey: string;\n sts?: string;\n}\n\nexport const getTargetPath = () => {\n let targetPath = \"/\";\n if (\n localStorage.getItem(\"redirect-path\") &&\n localStorage.getItem(\"redirect-path\") !== \"\"\n ) {\n targetPath = `${localStorage.getItem(\"redirect-path\")}`;\n localStorage.setItem(\"redirect-path\", \"\");\n }\n return targetPath;\n};\n\nconst Login = () => {\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const classes = useStyles();\n\n const loginStrategy = useSelector(\n (state: AppState) => state.login.loginStrategy\n );\n const loadingFetchConfiguration = useSelector(\n (state: AppState) => state.login.loadingFetchConfiguration\n );\n const loadingVersion = useSelector(\n (state: AppState) => state.login.loadingVersion\n );\n const navigateTo = useSelector((state: AppState) => state.login.navigateTo);\n\n const isK8S = useSelector((state: AppState) => state.login.isK8S);\n\n useEffect(() => {\n if (navigateTo !== \"\") {\n dispatch(resetForm());\n navigate(navigateTo);\n }\n }, [navigateTo, dispatch, navigate]);\n\n useEffect(() => {\n if (loadingFetchConfiguration) {\n dispatch(getFetchConfigurationAsync());\n }\n }, [loadingFetchConfiguration, dispatch]);\n\n useEffect(() => {\n if (loadingVersion) {\n dispatch(getVersionAsync());\n }\n }, [dispatch, loadingVersion]);\n\n let loginComponent;\n\n switch (loginStrategy.loginStrategy) {\n case loginStrategyType.redirect:\n case loginStrategyType.form: {\n let redirectItems: redirectRule[] = [];\n\n if (\n loginStrategy.redirectRules &&\n loginStrategy.redirectRules.length > 0\n ) {\n redirectItems = [...loginStrategy.redirectRules].sort(redirectRules);\n }\n\n loginComponent = ;\n break;\n }\n default:\n loginComponent = (\n
\n {loadingFetchConfiguration ? (\n \n ) : (\n \n
\n

\n An error has occurred\n
\n The backend cannot be reached.\n

\n
\n
\n {\n dispatch(getFetchConfigurationAsync());\n }}\n icon={}\n iconLocation={\"end\"}\n variant=\"regular\"\n id=\"retry\"\n label={\"Retry\"}\n />\n
\n
\n )}\n
\n );\n }\n\n let docsURL = \"https://min.io/docs/minio/linux/index.html?ref=con\";\n if (isK8S) {\n docsURL =\n \"https://min.io/docs/minio/kubernetes/upstream/index.html?ref=con\";\n }\n\n return (\n \n \n \n \n Documentation\n \n |\n \n Github\n \n |\n \n Support\n \n |\n \n Download\n \n \n }\n promoHeader={Multi-Cloud Object Store}\n promoInfo={\n \n MinIO's high-performance, Kubernetes-native object store is licensed\n under GNU AGPL v3 and is available on every cloud - public, private\n and edge. For more information on the terms of the license or to\n learn more about commercial licensing options visit the{\" \"}\n \n pricing page\n \n .\n \n }\n />\n \n );\n};\n\nexport default Login;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { ILoginDetails, loginStrategyType } from \"./types\";\nimport {\n doLoginAsync,\n getFetchConfigurationAsync,\n getVersionAsync,\n} from \"./loginThunks\";\n\nexport interface LoginState {\n accessKey: string;\n secretKey: string;\n sts: string;\n useSTS: boolean;\n\n loginStrategy: ILoginDetails;\n\n loginSending: boolean;\n loadingFetchConfiguration: boolean;\n\n latestMinIOVersion: string;\n loadingVersion: boolean;\n isDirectPV: boolean;\n isK8S: boolean;\n\n navigateTo: string;\n}\n\nconst initialState: LoginState = {\n accessKey: \"\",\n secretKey: \"\",\n sts: \"\",\n useSTS: false,\n loginStrategy: {\n loginStrategy: loginStrategyType.unknown,\n redirectRules: [],\n },\n loginSending: false,\n loadingFetchConfiguration: true,\n latestMinIOVersion: \"\",\n loadingVersion: true,\n isDirectPV: false,\n isK8S: false,\n\n navigateTo: \"\",\n};\n\nexport const loginSlice = createSlice({\n name: \"login\",\n initialState,\n reducers: {\n setAccessKey: (state, action: PayloadAction) => {\n state.accessKey = action.payload;\n },\n setSecretKey: (state, action: PayloadAction) => {\n state.secretKey = action.payload;\n },\n setUseSTS: (state, action: PayloadAction) => {\n state.useSTS = action.payload;\n },\n setSTS: (state, action: PayloadAction) => {\n state.sts = action.payload;\n },\n setNavigateTo: (state, action: PayloadAction) => {\n state.navigateTo = action.payload;\n },\n resetForm: (state) => initialState,\n },\n extraReducers: (builder) => {\n builder\n .addCase(getVersionAsync.pending, (state, action) => {\n state.loadingVersion = true;\n })\n .addCase(getVersionAsync.rejected, (state, action) => {\n state.loadingVersion = false;\n })\n .addCase(getVersionAsync.fulfilled, (state, action) => {\n state.loadingVersion = false;\n if (action.payload) {\n state.latestMinIOVersion = action.payload;\n }\n })\n .addCase(getFetchConfigurationAsync.pending, (state, action) => {\n state.loadingFetchConfiguration = true;\n })\n .addCase(getFetchConfigurationAsync.rejected, (state, action) => {\n state.loadingFetchConfiguration = false;\n })\n .addCase(getFetchConfigurationAsync.fulfilled, (state, action) => {\n state.loadingFetchConfiguration = false;\n if (action.payload) {\n state.loginStrategy = action.payload;\n state.isDirectPV = !!action.payload.isDirectPV;\n state.isK8S = !!action.payload.isK8S;\n }\n })\n .addCase(doLoginAsync.pending, (state, action) => {\n state.loginSending = true;\n })\n .addCase(doLoginAsync.rejected, (state, action) => {\n state.loginSending = false;\n })\n .addCase(doLoginAsync.fulfilled, (state, action) => {\n state.loginSending = false;\n });\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const {\n setAccessKey,\n setSecretKey,\n setUseSTS,\n setSTS,\n setNavigateTo,\n resetForm,\n} = loginSlice.actions;\n\nexport default loginSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { AppState } from \"../../store\";\nimport api from \"../../common/api\";\nimport { ErrorResponseHandler } from \"../../common/types\";\nimport { setErrorSnackMessage, userLogged } from \"../../systemSlice\";\nimport { ILoginDetails } from \"./types\";\nimport { setNavigateTo } from \"./loginSlice\";\nimport { getTargetPath, LoginStrategyPayload } from \"./LoginPage\";\n\nexport const doLoginAsync = createAsyncThunk(\n \"login/doLoginAsync\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n const state = getState() as AppState;\n const accessKey = state.login.accessKey;\n const secretKey = state.login.secretKey;\n const sts = state.login.sts;\n const useSTS = state.login.useSTS;\n\n let loginStrategyPayload: LoginStrategyPayload = {\n accessKey,\n secretKey,\n };\n if (useSTS) {\n loginStrategyPayload = {\n accessKey,\n secretKey,\n sts,\n };\n }\n\n return api\n .invoke(\"POST\", \"/api/v1/login\", loginStrategyPayload)\n .then((res) => {\n // We set the state in redux\n dispatch(userLogged(true));\n localStorage.setItem(\"userLoggedIn\", accessKey);\n dispatch(setNavigateTo(getTargetPath()));\n })\n .catch((err) => {\n dispatch(setErrorSnackMessage(err));\n });\n }\n);\nexport const getFetchConfigurationAsync = createAsyncThunk(\n \"login/getFetchConfigurationAsync\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n return api\n .invoke(\"GET\", \"/api/v1/login\")\n .then((loginDetails: ILoginDetails) => {\n return loginDetails;\n })\n .catch((err: ErrorResponseHandler) => {\n dispatch(setErrorSnackMessage(err));\n });\n }\n);\n\nexport const getVersionAsync = createAsyncThunk(\n \"login/getVersionAsync\",\n async (_, { getState, rejectWithValue, dispatch }) => {\n return api\n .invoke(\"GET\", \"/api/v1/check-version\")\n .then(\n ({\n current_version,\n latest_version,\n }: {\n current_version: string;\n latest_version: string;\n }) => {\n return latest_version;\n }\n )\n .catch((err: ErrorResponseHandler) => {\n return err.errorMessage;\n });\n }\n);\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nexport interface ILoginDetails {\n loginStrategy: loginStrategyType;\n redirectRules: redirectRule[];\n isDirectPV?: boolean;\n isK8S?: boolean;\n}\n\nexport interface redirectRule {\n redirect: string;\n displayName: string;\n serviceType?: string;\n}\n\nexport interface IStrategyForm {\n redirectRules: redirectRule[];\n}\n\nexport enum loginStrategyType {\n unknown = \"unknown\",\n form = \"form\",\n redirect = \"redirect\",\n serviceAccount = \"service-account\",\n redirectServiceAccount = \"redirect-service-account\",\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport Link from \"@mui/material/Link\";\n\nexport default function Copyright() {\n return (\n \n {\"Copyright © \"}\n \n MinIO\n {\" \"}\n {new Date().getFullYear()}\n {\".\"}\n \n );\n}\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport React from \"react\";\nimport Box from \"@mui/material/Box\";\nimport Copyright from \"../common/Copyright\";\nimport PageLayout from \"./Console/Common/Layout/PageLayout\";\n\nconst NotFound: React.FC = () => {\n return (\n \n \n \n 404 Error\n \n \n Sorry, the page could not be found.\n \n \n \n \n \n \n );\n};\n\nexport default NotFound;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport { useDispatch } from \"react-redux\";\nimport { combineReducers, configureStore } from \"@reduxjs/toolkit\";\n\nimport systemReducer from \"./systemSlice\";\nimport loginReducer from \"./screens/LoginPage/loginSlice\";\nimport traceReducer from \"./screens/Console/Trace/traceSlice\";\nimport logReducer from \"./screens/Console/Logs/logsSlice\";\nimport healthInfoReducer from \"./screens/Console/HealthInfo/healthInfoSlice\";\nimport watchReducer from \"./screens/Console/Watch/watchSlice\";\nimport consoleReducer from \"./screens/Console/consoleSlice\";\nimport bucketsReducer from \"./screens/Console/Buckets/ListBuckets/AddBucket/addBucketsSlice\";\nimport bucketDetailsReducer from \"./screens/Console/Buckets/BucketDetails/bucketDetailsSlice\";\nimport objectBrowserReducer from \"./screens/Console/ObjectBrowser/objectBrowserSlice\";\nimport dashboardReducer from \"./screens/Console/Dashboard/dashboardSlice\";\nimport createUserReducer from \"./screens/Console/Users/AddUsersSlice\";\nimport licenseReducer from \"./screens/Console/License/licenseSlice\";\nimport registerReducer from \"./screens/Console/Support/registerSlice\";\n\nconst rootReducer = combineReducers({\n system: systemReducer,\n login: loginReducer,\n trace: traceReducer,\n logs: logReducer,\n watch: watchReducer,\n console: consoleReducer,\n addBucket: bucketsReducer,\n bucketDetails: bucketDetailsReducer,\n objectBrowser: objectBrowserReducer,\n healthInfo: healthInfoReducer,\n dashboard: dashboardReducer,\n register: registerReducer,\n createUser: createUserReducer,\n license: licenseReducer,\n});\n\nexport const store = configureStore({\n reducer: rootReducer,\n});\n\nif (process.env.NODE_ENV !== \"production\" && module.hot) {\n module.hot.accept(() => {\n store.replaceReducer(rootReducer);\n });\n}\n\nexport type AppState = ReturnType;\n\nexport type AppDispatch = typeof store.dispatch;\nexport const useAppDispatch = () => useDispatch();\n\nexport default store;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2022 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\nimport { snackBarMessage, SRInfoStateType } from \"./types\";\nimport { ErrorResponseHandler, IEmbeddedCustomStyles } from \"./common/types\";\nimport { AppState } from \"./store\";\nimport { SubnetInfo } from \"./screens/Console/License/types\";\n\n// determine whether we have the sidebar state stored on localstorage\nconst initSideBarOpen = localStorage.getItem(\"sidebarOpen\")\n ? JSON.parse(localStorage.getItem(\"sidebarOpen\")!)[\"open\"]\n : true;\n\nexport interface SystemState {\n value: number;\n loggedIn: boolean;\n showMarketplace: boolean;\n sidebarOpen: boolean;\n session: string;\n userName: string;\n serverNeedsRestart: boolean;\n serverIsLoading: boolean;\n loadingConfigurations: boolean;\n loadingProgress: number;\n snackBar: snackBarMessage;\n modalSnackBar: snackBarMessage;\n serverDiagnosticStatus: string;\n distributedSetup: boolean;\n siteReplicationInfo: SRInfoStateType;\n licenseInfo: null | SubnetInfo;\n overrideStyles: null | IEmbeddedCustomStyles;\n anonymousMode: boolean;\n}\n\nconst initialState: SystemState = {\n value: 0,\n loggedIn: false,\n showMarketplace: false,\n session: \"\",\n userName: \"\",\n sidebarOpen: initSideBarOpen,\n siteReplicationInfo: { siteName: \"\", curSite: false, enabled: false },\n serverNeedsRestart: false,\n serverIsLoading: false,\n loadingConfigurations: true,\n loadingProgress: 100,\n snackBar: {\n message: \"\",\n detailedErrorMsg: \"\",\n type: \"message\",\n },\n modalSnackBar: {\n message: \"\",\n detailedErrorMsg: \"\",\n type: \"message\",\n },\n serverDiagnosticStatus: \"\",\n distributedSetup: false,\n licenseInfo: null,\n overrideStyles: null,\n anonymousMode: false,\n};\n\nexport const systemSlice = createSlice({\n name: \"system\",\n initialState,\n reducers: {\n userLogged: (state, action: PayloadAction) => {\n state.loggedIn = action.payload;\n },\n showMarketplace: (state, action: PayloadAction) => {\n state.showMarketplace = action.payload;\n },\n menuOpen: (state, action: PayloadAction) => {\n // persist preference to local storage\n localStorage.setItem(\n \"sidebarOpen\",\n JSON.stringify({ open: action.payload })\n );\n state.sidebarOpen = action.payload;\n },\n setServerNeedsRestart: (state, action: PayloadAction) => {\n state.serverNeedsRestart = action.payload;\n },\n serverIsLoading: (state, action: PayloadAction) => {\n state.serverIsLoading = action.payload;\n },\n configurationIsLoading: (state, action: PayloadAction) => {\n state.loadingConfigurations = action.payload;\n },\n setLoadingProgress: (state, action: PayloadAction) => {\n state.loadingProgress = action.payload;\n },\n setSnackBarMessage: (state, action: PayloadAction) => {\n state.snackBar = {\n message: action.payload,\n detailedErrorMsg: \"\",\n type: \"message\",\n };\n },\n setErrorSnackMessage: (\n state,\n action: PayloadAction\n ) => {\n state.snackBar = {\n message: action.payload.errorMessage,\n detailedErrorMsg: action.payload.detailedError,\n type: \"error\",\n };\n },\n setModalSnackMessage: (state, action: PayloadAction) => {\n state.modalSnackBar = {\n message: action.payload,\n detailedErrorMsg: \"\",\n type: \"message\",\n };\n },\n setModalErrorSnackMessage: (\n state,\n action: PayloadAction<{ errorMessage: string; detailedError: string }>\n ) => {\n state.modalSnackBar = {\n message: action.payload.errorMessage,\n detailedErrorMsg: action.payload.detailedError,\n type: \"error\",\n };\n },\n setServerDiagStat: (state, action: PayloadAction) => {\n state.serverDiagnosticStatus = action.payload;\n },\n globalSetDistributedSetup: (state, action: PayloadAction) => {\n state.distributedSetup = action.payload;\n },\n setSiteReplicationInfo: (state, action: PayloadAction) => {\n state.siteReplicationInfo = action.payload;\n },\n setSystemLicenseInfo: (state, action: PayloadAction) => {\n state.licenseInfo = action.payload;\n },\n setOverrideStyles: (\n state,\n action: PayloadAction\n ) => {\n state.overrideStyles = action.payload;\n },\n setAnonymousMode: (state) => {\n state.anonymousMode = true;\n state.loggedIn = true;\n },\n resetSystem: () => {\n return initialState;\n },\n },\n});\n\n// Action creators are generated for each case reducer function\nexport const {\n userLogged,\n showMarketplace,\n menuOpen,\n setServerNeedsRestart,\n serverIsLoading,\n setLoadingProgress,\n setSnackBarMessage,\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n setModalSnackMessage,\n setServerDiagStat,\n globalSetDistributedSetup,\n setSiteReplicationInfo,\n setSystemLicenseInfo,\n setOverrideStyles,\n setAnonymousMode,\n resetSystem,\n configurationIsLoading,\n} = systemSlice.actions;\n\nexport const selDistSet = (state: AppState) => state.system.distributedSetup;\nexport const selSiteRep = (state: AppState) => state.system.siteReplicationInfo;\n\nexport default systemSlice.reducer;\n","// This file is part of MinIO Console Server\n// Copyright (c) 2021 MinIO, Inc.\n//\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU Affero General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU Affero General Public License for more details.\n//\n// You should have received a copy of the GNU Affero General Public License\n// along with this program. If not, see .\n\nimport { Policy } from \"../api/consoleApi\";\nimport { redirectRule } from \"../screens/LoginPage/types\";\n\ninterface userInterface {\n accessKey: string;\n}\n\ninterface policyDetailsInterface {\n policy: string;\n}\n\nexport const usersSort = (a: userInterface, b: userInterface) => {\n if (a.accessKey > b.accessKey) {\n return 1;\n }\n if (a.accessKey < b.accessKey) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policySort = (a: Policy, b: Policy) => {\n if (a.name! > b.name!) {\n return 1;\n }\n if (a.name! < b.name!) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const stringSort = (a: string, b: string) => {\n if (a > b) {\n return 1;\n }\n if (a < b) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const policyDetailsSort = (\n a: policyDetailsInterface,\n b: policyDetailsInterface\n) => {\n if (a.policy > b.policy) {\n return 1;\n }\n if (a.policy < b.policy) {\n return -1;\n }\n // a must be equal to b\n return 0;\n};\n\nexport const redirectRules = (a: redirectRule, b: redirectRule) => {\n if (a.displayName > b.displayName) {\n return 1;\n }\n if (a.displayName < b.displayName) {\n return -1;\n }\n return 0;\n};\n","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\n","import {IMPORT, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset:\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d m s\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = element.parent === children[0]; // in nested rules comments become children of the \"auto-inserted\" rule\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? children[0].children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if ( key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport default createCache;\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.6\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.6\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.6\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.6\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import * as React from 'react';\nimport { useLayoutEffect } from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n var maybeStyles = cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n if (!Number.isNaN(tabindexAttr)) {\n return tabindexAttr;\n }\n\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n // in Chrome,
,