\ No newline at end of file
diff --git a/portal-ui/build/static/css/2024.16d04f59.chunk.css b/portal-ui/build/static/css/2024.8e16189d.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/2024.16d04f59.chunk.css
rename to portal-ui/build/static/css/2024.8e16189d.chunk.css
index 58bb4a84b..5f1d8506b 100644
--- a/portal-ui/build/static/css/2024.16d04f59.chunk.css
+++ b/portal-ui/build/static/css/2024.8e16189d.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=2024.16d04f59.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=2024.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/4084.16d04f59.chunk.css.map b/portal-ui/build/static/css/2024.8e16189d.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/4084.16d04f59.chunk.css.map
rename to portal-ui/build/static/css/2024.8e16189d.chunk.css.map
index b3ba23db4..48d89a1cd 100644
--- a/portal-ui/build/static/css/4084.16d04f59.chunk.css.map
+++ b/portal-ui/build/static/css/2024.8e16189d.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/4084.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/2024.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/4084.16d04f59.chunk.css b/portal-ui/build/static/css/3816.8e16189d.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/4084.16d04f59.chunk.css
rename to portal-ui/build/static/css/3816.8e16189d.chunk.css
index 14e4eed54..430860bf4 100644
--- a/portal-ui/build/static/css/4084.16d04f59.chunk.css
+++ b/portal-ui/build/static/css/3816.8e16189d.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=4084.16d04f59.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=3816.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/2024.16d04f59.chunk.css.map b/portal-ui/build/static/css/3816.8e16189d.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/2024.16d04f59.chunk.css.map
rename to portal-ui/build/static/css/3816.8e16189d.chunk.css.map
index d15ddfaa1..30b1602d3 100644
--- a/portal-ui/build/static/css/2024.16d04f59.chunk.css.map
+++ b/portal-ui/build/static/css/3816.8e16189d.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/2024.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/3816.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3816.16d04f59.chunk.css b/portal-ui/build/static/css/4084.8e16189d.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/3816.16d04f59.chunk.css
rename to portal-ui/build/static/css/4084.8e16189d.chunk.css
index 31ce23611..8080c352e 100644
--- a/portal-ui/build/static/css/3816.16d04f59.chunk.css
+++ b/portal-ui/build/static/css/4084.8e16189d.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=3816.16d04f59.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=4084.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5673.16d04f59.chunk.css.map b/portal-ui/build/static/css/4084.8e16189d.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/5673.16d04f59.chunk.css.map
rename to portal-ui/build/static/css/4084.8e16189d.chunk.css.map
index 2a1c1e39c..afe34ac27 100644
--- a/portal-ui/build/static/css/5673.16d04f59.chunk.css.map
+++ b/portal-ui/build/static/css/4084.8e16189d.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/5673.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/4084.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/5673.16d04f59.chunk.css b/portal-ui/build/static/css/5822.8e16189d.chunk.css
similarity index 96%
rename from portal-ui/build/static/css/5673.16d04f59.chunk.css
rename to portal-ui/build/static/css/5822.8e16189d.chunk.css
index 8b92bed33..65d193aa9 100644
--- a/portal-ui/build/static/css/5673.16d04f59.chunk.css
+++ b/portal-ui/build/static/css/5822.8e16189d.chunk.css
@@ -1,2 +1,2 @@
.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=5673.16d04f59.chunk.css.map*/
\ No newline at end of file
+/*# sourceMappingURL=5822.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/3816.16d04f59.chunk.css.map b/portal-ui/build/static/css/5822.8e16189d.chunk.css.map
similarity index 97%
rename from portal-ui/build/static/css/3816.16d04f59.chunk.css.map
rename to portal-ui/build/static/css/5822.8e16189d.chunk.css.map
index c15789ba8..8d6279062 100644
--- a/portal-ui/build/static/css/3816.16d04f59.chunk.css.map
+++ b/portal-ui/build/static/css/5822.8e16189d.chunk.css.map
@@ -1 +1 @@
-{"version":3,"file":"static/css/3816.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"static/css/5822.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.16d04f59.chunk.css b/portal-ui/build/static/css/8724.16d04f59.chunk.css
deleted file mode 100644
index 88fcdc7b4..000000000
--- a/portal-ui/build/static/css/8724.16d04f59.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=8724.16d04f59.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.16d04f59.chunk.css.map b/portal-ui/build/static/css/8724.16d04f59.chunk.css.map
deleted file mode 100644
index edabf66d9..000000000
--- a/portal-ui/build/static/css/8724.16d04f59.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/8724.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.8e16189d.chunk.css b/portal-ui/build/static/css/8724.8e16189d.chunk.css
new file mode 100644
index 000000000..e4054eb5c
--- /dev/null
+++ b/portal-ui/build/static/css/8724.8e16189d.chunk.css
@@ -0,0 +1,2 @@
+.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
+/*# sourceMappingURL=8724.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/8724.8e16189d.chunk.css.map b/portal-ui/build/static/css/8724.8e16189d.chunk.css.map
new file mode 100644
index 000000000..56301dd72
--- /dev/null
+++ b/portal-ui/build/static/css/8724.8e16189d.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/8724.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9645.16d04f59.chunk.css b/portal-ui/build/static/css/9645.16d04f59.chunk.css
deleted file mode 100644
index 8c2f99fb4..000000000
--- a/portal-ui/build/static/css/9645.16d04f59.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=9645.16d04f59.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9645.16d04f59.chunk.css.map b/portal-ui/build/static/css/9645.16d04f59.chunk.css.map
deleted file mode 100644
index 4ed81b6b6..000000000
--- a/portal-ui/build/static/css/9645.16d04f59.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/9645.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9645.8e16189d.chunk.css b/portal-ui/build/static/css/9645.8e16189d.chunk.css
new file mode 100644
index 000000000..918d574b9
--- /dev/null
+++ b/portal-ui/build/static/css/9645.8e16189d.chunk.css
@@ -0,0 +1,2 @@
+.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
+/*# sourceMappingURL=9645.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9645.8e16189d.chunk.css.map b/portal-ui/build/static/css/9645.8e16189d.chunk.css.map
new file mode 100644
index 000000000..286ddbe72
--- /dev/null
+++ b/portal-ui/build/static/css/9645.8e16189d.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/9645.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.16d04f59.chunk.css b/portal-ui/build/static/css/9807.16d04f59.chunk.css
deleted file mode 100644
index 67fc25733..000000000
--- a/portal-ui/build/static/css/9807.16d04f59.chunk.css
+++ /dev/null
@@ -1,2 +0,0 @@
-.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
-/*# sourceMappingURL=9807.16d04f59.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.16d04f59.chunk.css.map b/portal-ui/build/static/css/9807.16d04f59.chunk.css.map
deleted file mode 100644
index d7850825a..000000000
--- a/portal-ui/build/static/css/9807.16d04f59.chunk.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/css/9807.16d04f59.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.8e16189d.chunk.css b/portal-ui/build/static/css/9807.8e16189d.chunk.css
new file mode 100644
index 000000000..69cadd19f
--- /dev/null
+++ b/portal-ui/build/static/css/9807.8e16189d.chunk.css
@@ -0,0 +1,2 @@
+.cm-s-dracula.CodeMirror,.cm-s-dracula .CodeMirror-gutters{background-color:#282a36!important;border:none;color:#f8f8f2!important}.cm-s-dracula .CodeMirror-gutters{color:#282a36}.cm-s-dracula .CodeMirror-cursor{border-left:thin solid #f8f8f0}.cm-s-dracula .CodeMirror-linenumber{color:#6d8a88}.cm-s-dracula .CodeMirror-selected{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::selection,.cm-s-dracula .CodeMirror-line>span::selection,.cm-s-dracula .CodeMirror-line>span>span::selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-line::-moz-selection,.cm-s-dracula .CodeMirror-line>span::-moz-selection,.cm-s-dracula .CodeMirror-line>span>span::-moz-selection{background:hsla(0,0%,100%,.1)}.cm-s-dracula span.cm-comment{color:#6272a4}.cm-s-dracula span.cm-string,.cm-s-dracula span.cm-string-2{color:#f1fa8c}.cm-s-dracula span.cm-number{color:#bd93f9}.cm-s-dracula span.cm-variable{color:#50fa7b}.cm-s-dracula span.cm-variable-2{color:#fff}.cm-s-dracula span.cm-def{color:#50fa7b}.cm-s-dracula span.cm-keyword,.cm-s-dracula span.cm-operator{color:#ff79c6}.cm-s-dracula span.cm-atom{color:#bd93f9}.cm-s-dracula span.cm-meta{color:#f8f8f2}.cm-s-dracula span.cm-tag{color:#ff79c6}.cm-s-dracula span.cm-attribute,.cm-s-dracula span.cm-qualifier{color:#50fa7b}.cm-s-dracula span.cm-property{color:#66d9ef}.cm-s-dracula span.cm-builtin{color:#50fa7b}.cm-s-dracula span.cm-type,.cm-s-dracula span.cm-variable-3{color:#ffb86c}.cm-s-dracula .CodeMirror-activeline-background{background:hsla(0,0%,100%,.1)}.cm-s-dracula .CodeMirror-matchingbracket{color:#fff!important;text-decoration:underline}
+/*# sourceMappingURL=9807.8e16189d.chunk.css.map*/
\ No newline at end of file
diff --git a/portal-ui/build/static/css/9807.8e16189d.chunk.css.map b/portal-ui/build/static/css/9807.8e16189d.chunk.css.map
new file mode 100644
index 000000000..c4329caf4
--- /dev/null
+++ b/portal-ui/build/static/css/9807.8e16189d.chunk.css.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/css/9807.8e16189d.chunk.css","mappings":"AAUA,2DACE,kCAAoC,CAEpC,WAAY,CADZ,uBAEF,CACA,kCAAoC,aAAgB,CACpD,iCAAmC,8BAAiC,CACpE,qCAAuC,aAAgB,CACvD,mCAAqC,6BAAuC,CAC5E,6IAAuJ,6BAAuC,CAC9L,4JAAsK,6BAAuC,CAC7M,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAC/E,6BAA+B,aAAgB,CAC/C,+BAAiC,aAAgB,CACjD,iCAAmC,UAAc,CACjD,0BAA4B,aAAgB,CAE5C,6DAAgC,aAAgB,CAChD,2BAA6B,aAAgB,CAC7C,2BAA6B,aAAgB,CAC7C,0BAA4B,aAAgB,CAE5C,gEAAkC,aAAgB,CAClD,+BAAiC,aAAgB,CACjD,8BAAgC,aAAgB,CAChD,4DAA+D,aAAgB,CAE/E,gDAAkD,6BAAmC,CACrF,0CAAwE,oBAAuB,CAAnD,yBAAqD","sources":["../node_modules/codemirror/theme/dracula.css"],"sourcesContent":["/*\n\n Name: dracula\n Author: Michael Kaminsky (http://github.com/mkaminsky11)\n\n Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme)\n\n*/\n\n\n.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters {\n background-color: #282a36 !important;\n color: #f8f8f2 !important;\n border: none;\n}\n.cm-s-dracula .CodeMirror-gutters { color: #282a36; }\n.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; }\n.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; }\n.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); }\n.cm-s-dracula span.cm-comment { color: #6272a4; }\n.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; }\n.cm-s-dracula span.cm-number { color: #bd93f9; }\n.cm-s-dracula span.cm-variable { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-2 { color: white; }\n.cm-s-dracula span.cm-def { color: #50fa7b; }\n.cm-s-dracula span.cm-operator { color: #ff79c6; }\n.cm-s-dracula span.cm-keyword { color: #ff79c6; }\n.cm-s-dracula span.cm-atom { color: #bd93f9; }\n.cm-s-dracula span.cm-meta { color: #f8f8f2; }\n.cm-s-dracula span.cm-tag { color: #ff79c6; }\n.cm-s-dracula span.cm-attribute { color: #50fa7b; }\n.cm-s-dracula span.cm-qualifier { color: #50fa7b; }\n.cm-s-dracula span.cm-property { color: #66d9ef; }\n.cm-s-dracula span.cm-builtin { color: #50fa7b; }\n.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; }\n\n.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); }\n.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n"],"names":[],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1056.369ba3ab.chunk.js b/portal-ui/build/static/js/1056.369ba3ab.chunk.js
new file mode 100644
index 000000000..7de844eca
--- /dev/null
+++ b/portal-ui/build/static/js/1056.369ba3ab.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1056,1140],{29316:function(e,t,n){n(50390);var r=n(6369),a=n(86509),s=n(4285),i=n(85615),o=n(62559);t.Z=(0,s.Z)((function(e){return(0,a.Z)({link:{display:"flex",alignItems:"center",textDecoration:"none",maxWidth:"300px",padding:"2rem 2rem 0rem 2rem",color:e.palette.primary.light,fontSize:".8rem","&:hover":{textDecoration:"underline"}},icon:{marginRight:".3rem",display:"flex",alignItems:"center",justifyContent:"center","& svg.min-icon":{width:12}}})}))((function(e){var t=e.to,n=e.label,a=e.classes,s=e.className,l=e.executeOnClick;return(0,o.jsxs)(r.rU,{to:t,className:"".concat(a.link," ").concat(s||""),onClick:function(){l&&l()},children:[(0,o.jsx)("div",{className:a.icon,children:(0,o.jsx)(i.xN,{})}),(0,o.jsx)("div",{className:a.label,children:n})]})}))},39080:function(e,t,n){n.r(t),n.d(t,{default:function(){return Z}});var r=n(18489),a=n(35531),s=n(50390),i=n(38342),o=n.n(i),l=n(86509),c=n(4285),u=n(66946),d=n(76352),m=n(25594),g=n(58217),p=n(65771),f=n(70758),h=n(33034),x=n.n(h),v=n(85615),y=n(72462),S=n(62559),C=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,r.Z)((0,r.Z)({},y.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var t=e.label,n=void 0===t?"":t,r=e.value,a=void 0===r?"":r,s=e.classes,i=void 0===s?{}:s;return(0,S.jsxs)("div",{className:i.container,children:[(0,S.jsxs)("div",{className:i.inputLabel,children:[n,":"]}),(0,S.jsx)("div",{className:i.inputWithCopy,children:(0,S.jsx)(g.Z,{value:a,readOnly:!0,endAdornment:(0,S.jsx)(p.Z,{position:"end",children:(0,S.jsx)(x(),{text:a,children:(0,S.jsx)(f.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,S.jsx)(v.TI,{})})})})})})]})})),j=n(47424),Z=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var t=e.classes,n=e.newServiceAccount,i=e.open,l=e.closeModal,c=e.entity;if(!n)return null;var g=o()(n,"console",null),p=o()(n,"idp",!1);return(0,S.jsx)(d.Z,{modalOpen:i,onClose:function(){l()},title:(0,S.jsx)("div",{className:t.promptTitle,children:(0,S.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,S.jsx)(v.tV,{}),children:(0,S.jsxs)(m.ZP,{container:!0,children:[(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.formScrollable,children:["A new ",c," has been created with the following details:",!p&&g&&(0,S.jsx)(s.Fragment,{children:(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.credentialsPanel,children:[(0,S.jsx)("div",{className:t.credentialTitle,children:"Console Credentials"}),Array.isArray(g)&&g.map((function(e,t){return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(C,{label:"Access Key",value:e.accessKey}),(0,S.jsx)(C,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(g)&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(C,{label:"Access Key",value:g.accessKey}),(0,S.jsx)(C,{label:"Secret Key",value:g.secretKey})]})]})}),p?(0,S.jsx)("div",{className:t.warningBlock,children:"Please Login via the configured external identity provider."}):(0,S.jsxs)("div",{className:t.warningBlock,children:[(0,S.jsx)(j.Z,{}),(0,S.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.buttonContainer,children:[(0,S.jsx)(u.Z,{id:"done-button",variant:"outlined",className:t.buttonSpacer,onClick:function(){l()},color:"primary",children:"Done"}),!p&&(0,S.jsx)(u.Z,{id:"download-button",onClick:function(){var e={};if(g)if(Array.isArray(g)){var t=g.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,a.Z)(t)}}else e={console:[{url:g.url,access_key:g.accessKey,secret_key:g.secretKey,api:"s3v4",path:"auto"}]};!function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}("credentials.json",JSON.stringify((0,r.Z)({},e)))},endIcon:(0,S.jsx)(v._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))},82461:function(e,t,n){n.d(t,{Z:function(){return S}});var r=n(23430),a=n(18489),s=n(50390),i=n(38342),o=n.n(i),l=n(25594),c=n(36554),u=n(94187),d=n(95467),m=n(46529),g=n(94258),p=n(86509),f=n(4285),h=n(72462),x=n(97538),v=n(82981),y=n(62559),S=(0,f.Z)((function(e){return(0,p.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,a.Z)((0,a.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,a.Z)((0,a.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var t=e.label,n=e.classes,a=e.onChange,i=e.id,p=e.name,f=e.disabled,h=void 0!==f&&f,S=e.tooltip,C=void 0===S?"":S,j=e.required,Z=e.error,_=void 0===Z?"":Z,b=e.accept,P=void 0===b?"":b,N=e.value,I=void 0===N?"":N,A=(0,s.useState)(!1),T=(0,r.Z)(A,2),k=T[0],R=T[1];return(0,y.jsx)(s.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==_?n.errorInField:""),children:[""!==t&&(0,y.jsxs)(c.Z,{htmlFor:i,className:"".concat(""!==_?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,y.jsxs)("span",{children:[t,j?"*":""]}),""!==C&&(0,y.jsx)("div",{className:n.tooltipContainer,children:(0,y.jsx)(u.Z,{title:C,placement:"top-start",children:(0,y.jsx)("div",{className:n.tooltip,children:(0,y.jsx)(x.Z,{})})})})]}),k||""===I?(0,y.jsxs)("div",{className:n.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:p,onChange:function(e){var t=o()(e,"target.files[0].name","");!function(e,t){var n=e.target.files[0],r=new FileReader;r.readAsDataURL(n),r.onload=function(){var e=r.result;if(e){var n=e.toString().split("base64,");2===n.length&&t(n[1])}}}(e,(function(e){a(e,t)}))},accept:P,required:j,disabled:h,className:n.fileInputField}),""!==I&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(g.Z,{})}),""!==_&&(0,y.jsx)(v.Z,{errorMessage:_})]}):(0,y.jsxs)("div",{className:n.fileReselect,children:[(0,y.jsx)("div",{className:n.valueString,children:I}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},25534:function(e,t,n){var r=n(18489),a=(n(50390),n(25594)),s=n(86509),i=n(4285),o=n(72462),l=n(62559);t.Z=(0,i.Z)((function(e){return(0,s.Z)((0,r.Z)({},o.Bw))}))((function(e){var t=e.classes,n=e.className,r=void 0===n?"":n,s=e.children;return(0,l.jsx)("div",{className:t.contentSpacer,children:(0,l.jsx)(a.ZP,{container:!0,children:(0,l.jsx)(a.ZP,{item:!0,xs:12,className:r,children:s})})})}))},1056:function(e,t,n){n.r(t),n.d(t,{default:function(){return we}});var r,a,s=n(23430),i=n(18489),o=n(50390),l=n(38342),c=n.n(l),u=n(34424),d=n(25594),m=n(81378),g=n(86509),p=n(4285),f=n(72462),h=n(30324),x=n(28948),v=n(76295),y=n(44149),S=n(93127),C=n(39080),j=n(46864),Z=n(35531),_=n(46981),b=n(10369),P=n(84201),N=n(92440),I=n(66964),A=n(67754),T=n(1365),k=n(62559),R=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,tenantSecurityContext:e.tenants.createTenant.fields.configure.tenantSecurityContext,logSearchSecurityContext:e.tenants.createTenant.fields.configure.logSearchSecurityContext,logSearchPostgresSecurityContext:e.tenants.createTenant.fields.configure.logSearchPostgresSecurityContext,prometheusSecurityContext:e.tenants.createTenant.fields.configure.prometheusSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO}),z=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,i.Z)((0,i.Z)({},f.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15},prometheusCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},f.oO),f.AK))}))(R((function(e){var t=e.classes,n=e.storageClasses,r=e.customImage,a=e.imageName,l=e.customDockerhub,c=e.imageRegistry,u=e.imageRegistryUsername,m=e.imageRegistryPassword,g=e.exposeMinIO,p=e.exposeConsole,f=e.prometheusCustom,h=e.tenantCustom,x=e.logSearchCustom,v=e.logSearchVolumeSize,y=(e.logSearchSizeFactor,e.logSearchImage),S=e.kesImage,C=e.logSearchPostgresImage,j=e.logSearchPostgresInitImage,R=e.prometheusVolumeSize,z=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),w=e.prometheusSelectedStorageClass,D=e.prometheusImage,F=e.prometheusSidecarImage,E=e.prometheusInitImage,U=e.updateAddField,K=e.isPageValid,G=e.selectedStorageClass,q=e.tenantSecurityContext,L=e.logSearchSecurityContext,M=e.logSearchPostgresSecurityContext,V=e.prometheusSecurityContext,O=(0,o.useState)({}),B=(0,s.Z)(O,2),$=B[0],W=B[1],H=[{label:"Default",value:"default"}].concat((0,Z.Z)(n)),Y=(0,o.useCallback)((function(e,t){U("configure",e,t)}),[U]);(0,o.useEffect)((function(){var e=[];h&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:q.runAsUser,customValidation:""===q.runAsUser||parseInt(q.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:q.runAsGroup,customValidation:""===q.runAsGroup||parseInt(q.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:q.fsGroup,customValidation:""===q.fsGroup||parseInt(q.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:w,customValidation:""===w,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:R,customValidation:""===R||parseInt(R)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:V.runAsUser,customValidation:""===V.runAsUser||parseInt(V.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:V.runAsGroup,customValidation:""===V.runAsGroup||parseInt(V.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:V.fsGroup,customValidation:""===V.fsGroup||parseInt(V.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),x&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:z,customValidation:""===z,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:v,customValidation:""===v||parseInt(v)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:L.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:M.runAsUser,customValidation:""===M.runAsUser||parseInt(M.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:V.runAsGroup,customValidation:""===M.runAsGroup||parseInt(M.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:M.fsGroup,customValidation:""===M.fsGroup||parseInt(M.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),r&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:a,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:y,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:S,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:C,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:E,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),l&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:c},{fieldKey:"registryUsername",required:!0,value:u},{fieldKey:"registryPassword",required:!0,value:m}])));var t=(0,P.R)(e);K("configure",0===Object.keys(t).length),W(t)}),[r,a,y,S,C,j,D,F,E,l,c,u,m,K,f,h,x,w,R,z,v,q,L,M,V]),(0,o.useEffect)((function(){n.length>0&&(0===n.filter((function(e){return e.value===w})).length&&Y("prometheusSelectedStorageClass","default"),0===n.filter((function(e){return e.value===z})).length&&Y("logSearchSelectedStorageClass","default"))}),[z,w,G,n,Y]);var Q=function(e){W((0,b.h)($,e))};return(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Configure"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Basic configurations for tenant management"})]}),(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Expose Services"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Whether the tenant's services should request an external IP."})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:g,onChange:function(e){var t=e.target.checked;Y("exposeMinIO",t)},label:"Expose MiniO Service"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:p,onChange:function(e){var t=e.target.checked;Y("exposeConsole",t)},label:"Expose Console Service"})}),(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Additional Configurations"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Configure SecurityContext, Storage Classes & Storage size for Log Search, Prometheus add-ons and your Tenant"})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:h,onChange:function(e){var t=e.target.checked;Y("tenantCustom",t)},label:"Override Tenant defaults"})}),h&&(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for MinIO"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.containerItem,children:(0,k.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsUser:e.target.value})),Q("tenant_securityContext_runAsUser")},label:"Run As User",value:q.runAsUser,required:!0,error:$.tenant_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.containerItem,children:(0,k.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsGroup:e.target.value})),Q("tenant_securityContext_runAsGroup")},label:"Run As Group",value:q.runAsGroup,required:!0,error:$.tenant_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.containerItem,children:(0,k.jsx)(I.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{fsGroup:e.target.value})),Q("tenant_securityContext_fsGroup")},label:"FsGroup",value:q.fsGroup,required:!0,error:$.tenant_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:q.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"logSearchConfig",id:"log_search_configuration",name:"log_search_configuration",checked:x,onChange:function(e){var t=e.target.checked;Y("logSearchCustom",t)},label:"Override Log Search defaults"})}),x&&(0,k.jsxs)(d.ZP,{xs:12,className:t.logSearchCustomFields,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){Y("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:z,options:H,disabled:H.length<1})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(I.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){Y("logSearchVolumeSize",e.target.value),Q("log_search_volume_size")},label:"Storage Size",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:v,required:!0,error:$.log_search_volume_size||"",min:"0"})})}),(0,k.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for LogSearch"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsUser:e.target.value})),Q("logSearch_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:$.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsGroup:e.target.value})),Q("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:$.logSearch_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{fsGroup:e.target.value})),Q("logSearch_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:$.logSearch_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]}),(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsUser:e.target.value})),Q("postgres_securityContext_runAsUser")},label:"Run As User",value:M.runAsUser,required:!0,error:$.postgres_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsGroup:e.target.value})),Q("postgres_securityContext_runAsGroup")},label:"Run As Group",value:M.runAsGroup,required:!0,error:$.postgres_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{fsGroup:e.target.value})),Q("postgres_securityContext_fsGroup")},label:"FsGroup",value:M.fsGroup,required:!0,error:$.postgres_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:M.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)(N.Z,{value:"prometheusConfig",id:"prometheus_configuration",name:"prometheus_configuration",checked:f,onChange:function(e){var t=e.target.checked;Y("prometheusCustom",t)},label:"Override Prometheus defaults"})}),f&&(0,k.jsxs)(d.ZP,{xs:12,className:t.prometheusCustomFields,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){Y("prometheusSelectedStorageClass",e.target.value)},label:"Prometheus Storage Class",value:w,options:H,disabled:H.length<1})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){Y("prometheusVolumeSize",e.target.value),Q("prometheus_volume_size")},label:"Storage Size",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:R,required:!0,error:$.prometheus_volume_size||"",min:"0"})})}),(0,k.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for Prometheus"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{runAsUser:e.target.value})),Q("prometheus_securityContext_runAsUser")},label:"Run As User",value:V.runAsUser,required:!0,error:$.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{runAsGroup:e.target.value})),Q("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:V.runAsGroup,required:!0,error:$.prometheus_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:t.configSectionItem,children:(0,k.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{fsGroup:e.target.value})),Q("prometheus_securityContext_fsGroup")},label:"FsGroup",value:V.fsGroup,required:!0,error:$.prometheus_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,k.jsx)("div",{className:"".concat(t.multiContainer," ").concat(t.fieldSpaceTop),children:(0,k.jsx)(N.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:V.runAsNonRoot,onChange:function(e){var t=e.target.checked;Y("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},V),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})}))),w=n(94187),D=n(95467),F=n(35477),E=n(94759),U=n(43615),K=n(27207),G=n(96152),q=n(35150),L=(0,u.$j)((function(e){return{idpSelection:e.tenants.createTenant.fields.identityProvider.idpSelection,accessKeys:e.tenants.createTenant.fields.identityProvider.accessKeys,secretKeys:e.tenants.createTenant.fields.identityProvider.secretKeys,openIDConfigurationURL:e.tenants.createTenant.fields.identityProvider.openIDConfigurationURL,openIDClientID:e.tenants.createTenant.fields.identityProvider.openIDClientID,openIDSecretID:e.tenants.createTenant.fields.identityProvider.openIDSecretID,openIDCallbackURL:e.tenants.createTenant.fields.identityProvider.openIDCallbackURL,openIDClaimName:e.tenants.createTenant.fields.identityProvider.openIDClaimName,openIDScopes:e.tenants.createTenant.fields.identityProvider.openIDScopes,ADURL:e.tenants.createTenant.fields.identityProvider.ADURL,ADSkipTLS:e.tenants.createTenant.fields.identityProvider.ADSkipTLS,ADServerInsecure:e.tenants.createTenant.fields.identityProvider.ADServerInsecure,ADUserNameSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserNameSearchFilter,ADGroupSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADGroupSearchBaseDN,ADGroupSearchFilter:e.tenants.createTenant.fields.identityProvider.ADGroupSearchFilter,ADGroupNameAttribute:e.tenants.createTenant.fields.identityProvider.ADGroupNameAttribute,ADUserDNs:e.tenants.createTenant.fields.identityProvider.ADUserDNs,ADUserNameFormat:e.tenants.createTenant.fields.identityProvider.ADUserNameFormat,ADLookupBindDN:e.tenants.createTenant.fields.identityProvider.ADLookupBindDN,ADLookupBindPassword:e.tenants.createTenant.fields.identityProvider.ADLookupBindPassword,ADUserDNSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,ADUserDNSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchFilter,ADServerStartTLS:e.tenants.createTenant.fields.identityProvider.ADServerStartTLS}}),{updateAddField:j.HM,isPageValid:j.NO}),M=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},protocolRadioOptions:{display:"flex",flexFlow:"column",marginBottom:10,"& label":{fontSize:14},"& div":{display:"flex",flexFlow:"column",alignItems:"baseline"}},adUserDnRows:{display:"flex"}},f.QV),f.DF),f.oO),f.AK))}))(L((function(e){var t=e.classes,n=e.idpSelection,r=e.accessKeys,a=e.secretKeys,i=e.openIDConfigurationURL,l=e.openIDClientID,c=e.openIDSecretID,u=e.openIDCallbackURL,m=e.openIDClaimName,g=e.openIDScopes,p=e.ADURL,f=e.ADSkipTLS,h=e.ADServerInsecure,x=e.ADUserNameSearchFilter,v=e.ADGroupSearchBaseDN,y=e.ADGroupSearchFilter,S=e.ADGroupNameAttribute,C=e.ADUserDNs,j=e.ADUserNameFormat,A=e.ADLookupBindDN,T=e.ADLookupBindPassword,R=e.ADUserDNSearchBaseDN,z=e.ADUserDNSearchFilter,L=e.ADServerStartTLS,M=e.updateAddField,V=e.isPageValid,O=(0,o.useState)({}),B=(0,s.Z)(O,2),$=B[0],W=B[1],H=(0,o.useCallback)((function(e,t){M("identityProvider",e,t)}),[M]),Y=function(e,t){var n=(0,Z.Z)(r);n[e]=t,H("accessKeys",n)},Q=function(e,t){var n=(0,Z.Z)(a);n[e]=t,H("secretKeys",n)},X=function(e,t){var n=(0,Z.Z)(C);n[e]=t,H("ADUserDNs",n)},J=function(e){W((0,b.h)($,e))};(0,o.useEffect)((function(){var e=[];if("Built-in"===n){e=(0,Z.Z)(e);for(var t=0;t1&&(r.splice(n,1),a.splice(n,1),Y(r.length-1,r[r.length-1]))},children:(0,k.jsx)(q.Z,{})})})}),(0,k.jsx)(w.Z,{title:"Randomize Credentials","aria-label":"add",children:(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{onClick:function(){Y(n,(0,b.z)(16)),Q(n,(0,b.z)(32))},size:"small",children:(0,k.jsx)(E.Z,{})})})})]})]})},"identityField-".concat(n.toString()))}))),"AD"===n&&(ee=C.map((function(e,n){return(0,k.jsx)(o.Fragment,{children:(0,k.jsxs)("div",{className:t.adUserDnRows,children:[(0,k.jsx)(I.Z,{id:"ad-userdn-".concat(n.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(n.toString()),value:C[n],onChange:function(e){X(n,e.target.value),J("ad-userdn-".concat(n.toString()))},index:n,error:$["ad-userdn-".concat(n.toString())]||""},"csv-ad-userdn-".concat(n.toString())),(0,k.jsxs)("div",{className:t.buttonTray,children:[(0,k.jsx)(w.Z,{title:"Add User","aria-label":"add",children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){C.push(""),X(C.length-1,"")},children:(0,k.jsx)(G.Z,{})})}),(0,k.jsx)(w.Z,{title:"Remove","aria-label":"add",children:(0,k.jsx)(D.Z,{size:"small",style:{marginLeft:16},onClick:function(){C.length>1&&(C.splice(n,1),Y(C.length-1,C[C.length-1]))},children:(0,k.jsx)(U.Z,{})})})]})]})},"identityField-".concat(n.toString()))}))),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Identity Provider"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Access to the tenant can be controlled via an external Identity Manager."})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.protocolRadioOptions,children:[(0,k.jsx)("label",{children:"Protocol"}),(0,k.jsx)(K.Z,{currentSelection:n,id:"idp-options",name:"idp-options",label:" ",onChange:function(e){H("idpSelection",e.target.value)},selectorOptions:[{label:"Built-in",value:"Built-in"},{label:"OpenID",value:"OpenID"},{label:"Active Directory",value:"AD"}]})]}),"Built-in"===n&&(0,k.jsxs)(o.Fragment,{children:["Add additional users",ee]}),"OpenID"===n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){H("openIDConfigurationURL",e.target.value),J("openID_CONFIGURATION_URL")},label:"Configuration URL",value:i,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:$.openID_CONFIGURATION_URL||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){H("openIDClientID",e.target.value),J("openID_clientID")},label:"Client ID",value:l,error:$.openID_clientID||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){H("openIDSecretID",e.target.value),J("openID_secretID")},label:"Secret ID",value:c,error:$.openID_secretID||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){H("openIDCallbackURL",e.target.value),J("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:$.openID_callbackURL||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){H("openIDClaimName",e.target.value),J("openID_claimName")},label:"Claim Name",value:m,error:$.openID_claimName||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){H("openIDScopes",e.target.value),J("openID_scopes")},label:"Scopes",value:g})})]}),"AD"===n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){H("ADURL",e.target.value),J("AD_URL")},label:"LDAP Server Address",value:p,placeholder:"ldap-server:636",error:$.AD_URL||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:f,onChange:function(e){var t=e.target.checked;H("ADSkipTLS",t)},label:"Skip TLS Verification"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:h,onChange:function(e){var t=e.target.checked;H("ADServerInsecure",t)},label:"Server Insecure"})}),h?(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(F.Z,{className:t.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,k.jsx)("br",{})]}):null,(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:L,onChange:function(e){var t=e.target.checked;H("ADServerStartTLS",t)},label:"Start TLS connection to AD/LDAP server"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userNameFormat",name:"ad_userNameFormat",onChange:function(e){H("ADUserNameFormat",e.target.value)},label:"Username Format",value:j,placeholder:"uid=%s,cn=accounts,dc=myldapserver,dc=com"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userNameFilter",name:"ad_userNameFilter",onChange:function(e){H("ADUserNameSearchFilter",e.target.value)},label:"Username Search Filter",value:x,placeholder:"(|(objectclass=posixAccount)(uid=%s))"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){H("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:v,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){H("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:y,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_groupNameAttribute",name:"ad_groupNameAttribute",onChange:function(e){H("ADGroupNameAttribute",e.target.value)},label:"Group Name Attribute",value:S,placeholder:"cn"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){H("ADLookupBindDN",e.target.value)},label:"Lookup Bind DN",value:A,placeholder:"cn=admin,dc=min,dc=io"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){H("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:T,placeholder:"admin"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){H("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:R,placeholder:"dc=min,dc=io"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){H("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:z,placeholder:"(uid=%s)"})}),(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:ee})]})]})]})}))),V=n(82461),O=n(14792),B=(0,u.$j)((function(e){return{enableTLS:e.tenants.createTenant.fields.security.enableTLS,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,caCertificates:e.tenants.createTenant.certificates.caCertificates}}),{updateAddField:j.HM,isPageValid:j.NO,addFileToCaCertificates:j.Eq,deleteCaCertificate:j.IG,addCaCertificate:j.fK,addKeyPair:j.Mg,addFileToKeyPair:j.aN,deleteKeyPair:j.XX}),$=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},minioCertsContainer:{marginBottom:15},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},f.QV),f.oO),f.AK))}))(B((function(e){var t=e.classes,n=e.enableTLS,r=e.enableAutoCert,a=e.enableCustomCerts,s=e.minioCertificates,i=e.caCertificates,l=e.updateAddField,c=e.isPageValid,u=e.addFileToCaCertificates,m=e.deleteCaCertificate,g=e.addCaCertificate,p=e.addKeyPair,f=e.addFileToKeyPair,h=e.deleteKeyPair,x=(0,o.useCallback)((function(e,t){l("security",e,t)}),[l]);return(0,o.useEffect)((function(){c("security",!n||(!!r||!!a))}),[n,r,a,c]),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsx)("div",{className:t.headerElement,children:(0,k.jsx)("h3",{className:t.h3Section,children:"Security"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(N.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:n,onChange:function(e){var t=e.target.checked;x("enableTLS",t)},label:"Enable TLS"}),"Enable TLS for the tenant, this is required for Encryption Configuration",n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("br",{}),(0,k.jsx)("br",{}),(0,k.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"AutoCert: MinIO Operator will generate all TLS certificates automatically"}),(0,k.jsx)(F.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"Custom certificates: Allow user to provide your own certificates"}),(0,k.jsx)("br",{})]})]}),n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(N.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:r,onChange:function(e){var t=e.target.checked;x("enableAutoCert",t)},label:"Enable AutoCert"}),(0,k.jsx)(N.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:a,onChange:function(e){var t=e.target.checked;x("enableCustomCerts",t)},label:"Custom Certificates"})]}),a&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"MinIO Certificates"}),s.map((function(e){return(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,k.jsx)(V.Z,{onChange:function(t,n){f(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,k.jsx)(V.Z,{onChange:function(t,n){f(e.id,"key",n,t)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:p,children:(0,k.jsx)(O.Z,{})})}),(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){h(e.id)},children:(0,k.jsx)(q.Z,{})})})]})]},e.id)}))]})})}),(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"MinIO CA Certificates"}),i.map((function(e){return(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,k.jsx)(d.ZP,{item:!0,xs:6,children:(0,k.jsx)(V.Z,{onChange:function(t,n){u(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,k.jsx)(d.ZP,{item:!0,xs:6,children:(0,k.jsxs)("div",{className:t.rowActions,children:[(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:g,children:(0,k.jsx)(O.Z,{})})}),(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){m(e.id)},children:(0,k.jsx)(q.Z,{})})})]})})]},e.id)}))]})})})]})]})]})}))),W=(0,u.$j)((function(e){return{replicas:e.tenants.createTenant.fields.encryption.replicas,enableEncryption:e.tenants.createTenant.fields.encryption.enableEncryption,encryptionType:e.tenants.createTenant.fields.encryption.encryptionType,gemaltoEndpoint:e.tenants.createTenant.fields.encryption.gemaltoEndpoint,gemaltoToken:e.tenants.createTenant.fields.encryption.gemaltoToken,gemaltoDomain:e.tenants.createTenant.fields.encryption.gemaltoDomain,gemaltoRetry:e.tenants.createTenant.fields.encryption.gemaltoRetry,awsEndpoint:e.tenants.createTenant.fields.encryption.awsEndpoint,awsRegion:e.tenants.createTenant.fields.encryption.awsRegion,awsKMSKey:e.tenants.createTenant.fields.encryption.awsKMSKey,awsAccessKey:e.tenants.createTenant.fields.encryption.awsAccessKey,awsSecretKey:e.tenants.createTenant.fields.encryption.awsSecretKey,awsToken:e.tenants.createTenant.fields.encryption.awsToken,vaultEndpoint:e.tenants.createTenant.fields.encryption.vaultEndpoint,vaultEngine:e.tenants.createTenant.fields.encryption.vaultEngine,vaultNamespace:e.tenants.createTenant.fields.encryption.vaultNamespace,vaultPrefix:e.tenants.createTenant.fields.encryption.vaultPrefix,vaultAppRoleEngine:e.tenants.createTenant.fields.encryption.vaultAppRoleEngine,vaultId:e.tenants.createTenant.fields.encryption.vaultId,vaultSecret:e.tenants.createTenant.fields.encryption.vaultSecret,vaultRetry:e.tenants.createTenant.fields.encryption.vaultRetry,vaultPing:e.tenants.createTenant.fields.encryption.vaultPing,azureEndpoint:e.tenants.createTenant.fields.encryption.azureEndpoint,azureTenantID:e.tenants.createTenant.fields.encryption.azureTenantID,azureClientID:e.tenants.createTenant.fields.encryption.azureClientID,azureClientSecret:e.tenants.createTenant.fields.encryption.azureClientSecret,gcpProjectID:e.tenants.createTenant.fields.encryption.gcpProjectID,gcpEndpoint:e.tenants.createTenant.fields.encryption.gcpEndpoint,gcpClientEmail:e.tenants.createTenant.fields.encryption.gcpClientEmail,gcpClientID:e.tenants.createTenant.fields.encryption.gcpClientID,gcpPrivateKeyID:e.tenants.createTenant.fields.encryption.gcpPrivateKeyID,gcpPrivateKey:e.tenants.createTenant.fields.encryption.gcpPrivateKey,enableCustomCertsForKES:e.tenants.createTenant.fields.encryption.enableCustomCertsForKES,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableTLS:e.tenants.createTenant.fields.security.enableTLS,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,serverCertificate:e.tenants.createTenant.certificates.serverCertificate,clientCertificate:e.tenants.createTenant.certificates.clientCertificate,vaultCertificate:e.tenants.createTenant.certificates.vaultCertificate,vaultCA:e.tenants.createTenant.certificates.vaultCA,gemaltoCA:e.tenants.createTenant.certificates.gemaltoCA,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,kesSecurityContext:e.tenants.createTenant.fields.encryption.kesSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO,addFileServerCert:j.$1,addFileClientCert:j.BI,addFileVaultCert:j.cl,addFileVaultCa:j.fk,addFileGemaltoCa:j.MX}),H=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}}},f.QV),f.DF),f.oO),f.AK))}))(W((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.addFileServerCert,l=e.addFileClientCert,c=e.addFileVaultCert,u=e.addFileVaultCa,m=e.addFileGemaltoCa,g=e.enableEncryption,p=e.enableCustomCerts,f=e.encryptionType,h=e.gemaltoEndpoint,x=e.gemaltoToken,v=e.gemaltoDomain,y=e.gemaltoRetry,S=e.awsEndpoint,C=e.awsRegion,j=e.awsKMSKey,A=e.awsAccessKey,T=e.awsSecretKey,R=e.awsToken,z=e.vaultEndpoint,w=e.vaultEngine,D=e.vaultNamespace,F=e.vaultPrefix,E=e.vaultAppRoleEngine,U=e.vaultId,G=e.vaultSecret,q=e.vaultRetry,L=e.vaultPing,M=e.azureEndpoint,O=e.azureTenantID,B=e.azureClientID,$=e.azureClientSecret,W=e.gcpProjectID,H=e.gcpEndpoint,Y=e.gcpClientEmail,Q=e.gcpClientID,X=e.gcpPrivateKeyID,J=e.gcpPrivateKey,ee=e.enableCustomCertsForKES,te=e.enableAutoCert,ne=e.enableTLS,re=e.minioCertificates,ae=e.serverCertificate,se=e.clientCertificate,ie=e.vaultCertificate,oe=e.vaultCA,le=e.gemaltoCA,ce=e.kesSecurityContext,ue=e.replicas,de=(0,o.useState)({}),me=(0,s.Z)(de,2),ge=me[0],pe=me[1],fe=!1;ne&&(te||re&&re.filter((function(e){return e.encoded_key&&e.encoded_cert})).length>0)&&(fe=!0);var he=(0,o.useCallback)((function(e,t){n("encryption",e,t)}),[n]),xe=function(e){pe((0,b.h)(ge,e))};return(0,o.useEffect)((function(){var e=[];g&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"replicas",required:!0,value:ue,customValidation:parseInt(ue)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:ce.runAsUser,customValidation:""===ce.runAsUser||parseInt(ce.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:ce.runAsGroup,customValidation:""===ce.runAsGroup||parseInt(ce.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:ce.fsGroup,customValidation:""===ce.fsGroup||parseInt(ce.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),p&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"serverKey",required:!te,value:ae.encoded_key},{fieldKey:"serverCert",required:!te,value:ae.encoded_cert},{fieldKey:"clientKey",required:!te,value:se.encoded_key},{fieldKey:"clientCert",required:!te,value:se.encoded_cert}])),"vault"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"vault_endpoint",required:!0,value:z},{fieldKey:"vault_id",required:!0,value:U},{fieldKey:"vault_secret",required:!0,value:G},{fieldKey:"vault_ping",required:!1,value:L,customValidation:parseInt(L)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:q,customValidation:parseInt(q)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"aws"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"aws_endpoint",required:!0,value:S},{fieldKey:"aws_region",required:!0,value:C},{fieldKey:"aws_accessKey",required:!0,value:A},{fieldKey:"aws_secretKey",required:!0,value:T}])),"gemalto"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"gemalto_endpoint",required:!0,value:h},{fieldKey:"gemalto_token",required:!0,value:x},{fieldKey:"gemalto_domain",required:!0,value:v},{fieldKey:"gemalto_retry",required:!1,value:y,customValidation:parseInt(y)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"azure"===f&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"azure_endpoint",required:!0,value:M},{fieldKey:"azure_tenant_id",required:!0,value:O},{fieldKey:"azure_client_id",required:!0,value:B},{fieldKey:"azure_client_secret",required:!0,value:$}])));var t=(0,P.R)(e);r("encryption",0===Object.keys(t).length),pe(t)}),[g,f,z,w,U,G,L,q,S,C,T,A,h,x,v,y,W,H,Y,Q,X,J,M,O,B,$,r,te,p,ae.encoded_key,ae.encoded_cert,se.encoded_key,se.encoded_cert,ce,ue]),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Encryption"}),(0,k.jsx)("span",{className:t.descriptionText,children:"How would you like to encrypt the information at rest."})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"enableEncryption",id:"enableEncryption",name:"enableEncryption",checked:g,onChange:function(e){var t=e.target.checked;he("enableEncryption",t)},label:"Enable Server Side Encryption",disabled:!fe})}),g&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.encryptionTypeOptions,children:(0,k.jsx)(K.Z,{currentSelection:f,id:"encryptionType",name:"encryptionType",label:"Encryption Options",onChange:function(e){he("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:ee||!te,onChange:function(e){var t=e.target.checked;he("enableCustomCertsForKES",t)},label:"Custom Certificates",disabled:!te})}),(ee||!te)&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{container:!0,children:(0,k.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Encryption Service Certificates"}),(0,k.jsx)(V.Z,{onChange:function(e,t){a("key",t,e),xe("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:ge.serverKey||"",value:ae.key,required:!te}),(0,k.jsx)(V.Z,{onChange:function(e,t){a("cert",t,e),xe("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:ge.serverCert||"",value:ae.cert,required:!te})]})})}),(0,k.jsx)(d.ZP,{container:!0,style:{marginBottom:15},children:(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication"}),(0,k.jsx)(V.Z,{onChange:function(e,t){l("key",t,e),xe("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:ge.clientKey||"",value:se.key,required:!te}),(0,k.jsx)(V.Z,{onChange:function(e,t){l("cert",t,e),xe("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:ge.clientCert||"",value:se.cert,required:!te})]})})})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:function(e){he("vaultEndpoint",e.target.value),xe("vault_endpoint")},label:"Endpoint",value:z,error:ge.vault_endpoint||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_engine",name:"vault_engine",onChange:function(e){he("vaultEngine",e.target.value),xe("vault_engine")},label:"Engine",value:w})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_namespace",name:"vault_namespace",onChange:function(e){he("vaultNamespace",e.target.value)},label:"Namespace",value:D})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_prefix",name:"vault_prefix",onChange:function(e){he("vaultPrefix",e.target.value)},label:"Prefix",value:F})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"App Role"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:function(e){he("vaultAppRoleEngine",e.target.value)},label:"Engine",value:E})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_id",name:"vault_id",onChange:function(e){he("vaultId",e.target.value),xe("vault_id")},label:"AppRole ID",value:U,error:ge.vault_id||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"vault_secret",name:"vault_secret",onChange:function(e){he("vaultSecret",e.target.value),xe("vault_secret")},label:"AppRole Secret",value:G,error:ge.vault_secret||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:function(e){he("vaultRetry",e.target.value),xe("vault_retry")},label:"Retry (Seconds)",value:q,error:ge.vault_retry||""})})]})}),(0,k.jsx)(d.ZP,{container:!0,className:t.mutualTlsConfig,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication (optional)"}),(0,k.jsx)(V.Z,{onChange:function(e,t){c("key",t,e),xe("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:ie.key}),(0,k.jsx)(V.Z,{onChange:function(e,t){c("cert",t,e),xe("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:ie.cert}),(0,k.jsx)(V.Z,{onChange:function(e,t){u(t,e),xe("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:oe.cert})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,style:{marginTop:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Status"}),(0,k.jsx)(I.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:function(e){he("vaultPing",e.target.value),xe("vault_ping")},label:"Ping (Seconds)",value:L,error:ge.vault_ping||""})]})})]}),"azure"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:function(e){he("azureEndpoint",e.target.value),xe("azure_endpoint")},label:"Endpoint",value:M,error:ge.azure_endpoint||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:function(e){he("azureTenantID",e.target.value),xe("azure_tenant_id")},label:"Tenant ID",value:O,error:ge.azure_tenant_id||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_client_id",name:"azure_client_id",onChange:function(e){he("azureClientID",e.target.value),xe("azure_client_id")},label:"Client ID",value:B,error:ge.azure_client_id||""})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:function(e){he("azureClientSecret",e.target.value),xe("azure_client_secret")},label:"Client Secret",value:$,error:ge.azure_client_secret||""})})]})})]}),"gcp"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:function(e){he("gcpProjectID",e.target.value)},label:"Project ID",value:W})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:function(e){he("gcpEndpoint",e.target.value)},label:"Endpoint",value:H})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:function(e){he("gcpClientEmail",e.target.value)},label:"Client Email",value:Y})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:function(e){he("gcpClientID",e.target.value)},label:"Client ID",value:Q})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:function(e){he("gcpPrivateKeyID",e.target.value)},label:"Private Key ID",value:X})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:function(e){he("gcpPrivateKey",e.target.value)},label:"Private Key",value:J})})]})})]}),"aws"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:function(e){he("awsEndpoint",e.target.value),xe("aws_endpoint")},label:"Endpoint",value:S,error:ge.aws_endpoint||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_region",name:"aws_region",onChange:function(e){he("awsRegion",e.target.value),xe("aws_region")},label:"Region",value:C,error:ge.aws_region||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){he("awsKMSKey",e.target.value)},label:"KMS Key",value:j})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){he("awsAccessKey",e.target.value),xe("aws_accessKey")},label:"Access Key",value:A,error:ge.aws_accessKey||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){he("awsSecretKey",e.target.value),xe("aws_secretKey")},label:"Secret Key",value:T,error:ge.aws_secretKey||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"aws_token",name:"aws_token",onChange:function(e){he("awsToken",e.target.value)},label:"Token",value:R})})]})})]}),"gemalto"===f&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:function(e){he("gemaltoEndpoint",e.target.value),xe("gemalto_endpoint")},label:"Endpoint",value:h,error:ge.gemalto_endpoint||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gemalto_token",name:"gemalto_token",onChange:function(e){he("gemaltoToken",e.target.value),xe("gemalto_token")},label:"Token",value:x,error:ge.gemalto_token||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:function(e){he("gemaltoDomain",e.target.value),xe("gemalto_domain")},label:"Domain",value:v,error:ge.gemalto_domain||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:function(e){he("gemaltoRetry",e.target.value),xe("gemalto_retry")},label:"Retry (seconds)",value:y,error:ge.gemalto_retry||""})})]})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,k.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"Custom CA Root certificate verification"}),(0,k.jsx)(V.Z,{onChange:function(e,t){m(t,e),xe("gemalto_ca")},accept:".cer,.crt,.cert,.pem",id:"gemalto_ca",name:"gemalto_ca",label:"CA",value:le.cert})]})})]}),(0,k.jsx)("div",{className:t.headerElement,children:(0,k.jsx)("h4",{className:t.h3Section,children:"Additional Configurations"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,classes:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){he("replicas",e.target.value),xe("replicas")},label:"Replicas",value:ue,required:!0,error:ge.replicas||""})}),(0,k.jsxs)("fieldset",{className:t.fieldGroup,style:{marginTop:15},children:[(0,k.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for KES pods"}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,k.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,k.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,k.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsUser:e.target.value})),xe("kes_securityContext_runAsUser")},label:"Run As User",value:ce.runAsUser,required:!0,error:ge.kes_securityContext_runAsUser||"",min:"0"})}),(0,k.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,k.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsGroup:e.target.value})),xe("kes_securityContext_runAsGroup")},label:"Run As Group",value:ce.runAsGroup,required:!0,error:ge.kes_securityContext_runAsGroup||"",min:"0"})}),(0,k.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,k.jsx)(I.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{fsGroup:e.target.value})),xe("kes_securityContext_fsGroup")},label:"FsGroup",value:ce.fsGroup,required:!0,error:ge.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.multiContainer,children:(0,k.jsx)(N.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:ce.runAsNonRoot,onChange:function(e){var t=e.target.checked;he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})]})}))),Y=(0,u.$j)((function(e){var t=e.tenants.createTenant;return{podAffinity:t.fields.affinity.podAffinity,nodeSelectorLabels:t.fields.affinity.nodeSelectorLabels,withPodAntiAffinity:t.fields.affinity.withPodAntiAffinity,keyValuePairs:t.nodeSelectorPairs}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,isPageValid:j.NO,setKeyValuePairs:j.i$}),Q=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},fieldContainer:{marginBottom:0},affinityRow:{marginBottom:10,display:"flex"}},f.oO),f.AK))}))(Y((function(e){var t=e.classes,n=e.podAffinity,r=e.nodeSelectorLabels,a=e.withPodAntiAffinity,i=e.setModalErrorSnackMessage,l=e.updateAddField,c=e.keyValuePairs,u=e.setKeyValuePairs,m=e.isPageValid,g=(0,o.useState)({}),p=(0,s.Z)(g,2),f=p[0],x=p[1],v=(0,o.useState)(!0),y=(0,s.Z)(v,2),S=y[0],C=y[1],j=(0,o.useState)({}),b=(0,s.Z)(j,2),T=b[0],R=b[1],z=(0,o.useState)([]),w=(0,s.Z)(z,2),F=w[0],E=w[1],U=(0,o.useCallback)((function(e,t){l("affinity",e,t)}),[l]);return(0,o.useEffect)((function(){S&&h.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){C(!1),R(e);var t=[];for(var n in e)t.push({label:n,value:n});E(t)})).catch((function(e){C(!1),i(e),R({})}))}),[i,S]),(0,o.useEffect)((function(){if(c){var e=c.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,t,n){return n.indexOf(e)===t})).join("&");U("nodeSelectorLabels",e)}}),[c,U]),(0,o.useEffect)((function(){var e=[];if("nodeSelector"===n){var t=!0,a=r.split("&");1===a.length&&""===a[0]&&(t=!1),a.forEach((function(e,n){var r=e.split("=");2!==r.length&&(t=!1),n+1!==a.length&&(""!==r[0]&&""!==r[1]||(t=!1))})),e=[].concat((0,Z.Z)(e),[{fieldKey:"labels",required:!0,value:r,customValidation:!t,customValidationMessage:"You need to add at least one label key-pair"}])}var s=(0,P.R)(e);m("affinity",0===Object.keys(s).length),x(s)}),[m,n,r]),(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Pod Placement"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,k.jsxs)(d.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,k.jsx)("div",{className:t.label,children:"Type"}),(0,k.jsx)("div",{className:"".concat(t.descriptionText," ").concat(t.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,k.jsx)(d.ZP,{item:!0,className:t.radioField,children:(0,k.jsx)(K.Z,{currentSelection:n,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){U("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinnity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===n&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("br",{}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:a,onChange:function(e){var t=e.target.checked;U("withPodAntiAffinity",t)},label:"With Pod Anti-Affinity"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsx)("h3",{children:"Labels"}),(0,k.jsx)("span",{className:t.error,children:f.labels}),(0,k.jsx)(d.ZP,{container:!0,children:c&&c.map((function(e,n){return(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelKey,children:[F.length>0&&(0,k.jsx)(A.Z,{onChange:function(e){var t=e.target.value,r=Object.assign([],c);r[n].key=e.target.value,r[n].value=T[t][0],u(r)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:F}),0===F.length&&(0,k.jsx)(I.Z,{id:"nodeselector-key-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.key,onChange:function(e){var t=Object.assign([],c);t[n].key=e.target.value,u(t)},index:n,placeholder:"Key"})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelValue,children:[F.length>0&&(0,k.jsx)(A.Z,{onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:T[e.key]?T[e.key].map((function(e){return{label:e,value:e}})):[]}),0===F.length&&(0,k.jsx)(I.Z,{id:"nodeselector-value-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.value,onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},index:n,placeholder:"value"})]}),(0,k.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){var e=Object.assign([],c);F.length>0?e.push({key:F[0].value,value:T[F[0].value][0]}):e.push({key:"",value:""}),u(e)},children:(0,k.jsx)(O.Z,{})})}),c.length>1&&(0,k.jsx)("div",{className:t.overlayAction,children:(0,k.jsx)(D.Z,{size:"small",onClick:function(){var e=c.filter((function(e,t){return t!==n}));u(e)},children:(0,k.jsx)(q.Z,{})})})]})]},"affinity-keyVal-".concat(n.toString()))}))})]})]})]})}))),X=n(35721),J=n(24442),ee=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),te=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},f.DF),f.oO),f.AK))}))(ee((function(e){var t=e.classes,n=(e.storageClasses,e.customImage),r=e.imageName,a=e.customDockerhub,i=e.imageRegistry,l=e.imageRegistryUsername,c=e.imageRegistryPassword,u=(e.exposeMinIO,e.exposeConsole,e.prometheusCustom),m=e.tenantCustom,g=e.logSearchCustom,p=e.logSearchVolumeSize,f=(e.logSearchSizeFactor,e.logSearchImage),h=e.kesImage,x=e.logSearchPostgresImage,v=e.logSearchPostgresInitImage,y=e.prometheusVolumeSize,S=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),C=e.prometheusSelectedStorageClass,j=e.prometheusImage,A=e.prometheusSidecarImage,T=e.prometheusInitImage,R=e.updateAddField,z=e.isPageValid,w=(e.selectedStorageClass,(0,o.useState)({})),D=(0,s.Z)(w,2),F=D[0],E=D[1],U=(0,o.useCallback)((function(e,t){R("configure",e,t)}),[R]);(0,o.useEffect)((function(){var e=[];u&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:C,customValidation:""===C,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),g&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:S,customValidation:""===S,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:p,customValidation:""===p||parseInt(p)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),n&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"image",required:!1,value:r,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:f,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:x,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:v,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:T,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),a&&(e=[].concat((0,Z.Z)(e),[{fieldKey:"registry",required:!0,value:i},{fieldKey:"registryUsername",required:!0,value:l},{fieldKey:"registryPassword",required:!0,value:c}])));var t=(0,P.R)(e);z("configure",0===Object.keys(t).length),E(t)}),[n,r,f,h,x,v,j,A,T,a,i,l,c,z,u,m,g,C,y,S,p]);var K=function(e){E((0,b.h)(F,e))};return(0,k.jsxs)(_.Z,{className:t.paperWrapper,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Container Images"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Images used by the Tenant Deployment"})]}),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"image",name:"image",onChange:function(e){U("imageName",e.target.value),K("image")},label:"MinIO's Image",value:r,error:F.image||"",placeholder:"E.g. minio/minio:RELEASE.2022-01-08T03-11-54Z"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){U("logSearchImage",e.target.value),K("logSearchImage")},label:"Log Search API's Image",value:f,error:F.logSearchImage||"",placeholder:"E.g. minio/logsearchapi:v4.1.1"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"kesImage",name:"kesImage",onChange:function(e){U("kesImage",e.target.value),K("kesImage")},label:"KES Image",value:h,error:F.kesImage||"",placeholder:"E.g. minio/kes:v0.14.0"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){U("logSearchPostgresImage",e.target.value),K("logSearchPostgresImage")},label:"Log Search Postgres's Image",value:x,error:F.logSearchPostgresImage||"",placeholder:"E.g. library/postgres:13"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){U("logSearchPostgresInitImage",e.target.value),K("logSearchPostgresInitImage")},label:"Log Search Postgres's Init Image",value:v,error:F.logSearchPostgresInitImage||"",placeholder:"E.g. library/busybox:1.33.1"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){U("prometheusImage",e.target.value),K("prometheusImage")},label:"Prometheus Image",value:j,error:F.prometheusImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){U("prometheusSidecarImage",e.target.value),K("prometheusSidecarImage")},label:"Prometheus Sidecar Image",value:A,error:F.prometheusSidecarImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){U("prometheusInitImage",e.target.value),K("prometheusInitImage")},label:"Prometheus Init Image",value:T,error:F.prometheusInitImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})})]}),n&&(0,k.jsx)(o.Fragment,{children:(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(N.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:a,onChange:function(e){var t=e.target.checked;U("customDockerhub",t)},label:"Set/Update Image Registry"})})}),a&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"registry",name:"registry",onChange:function(e){U("imageRegistry",e.target.value)},label:"Endpoint",value:i,error:F.registry||"",placeholder:"E.g. https://index.docker.io/v1/",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){U("imageRegistryUsername",e.target.value)},label:"Username",value:l,error:F.registryUsername||"",required:!0})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){U("imageRegistryPassword",e.target.value)},label:"Password",value:c,error:F.registryPassword||"",required:!0})})]})]})}))),ne=n(25534),re=n(29316),ae=n(3143),se=n.n(ae),ie=n(32120),oe=n(23473),le=n(60656),ce=n(85615),ue={setErrorSnackMessage:y.Ih},de=(0,u.$j)(null,ue),me=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},f.oO),f.Qw))}))(de((function(e){var t=e.classes,n=e.namespace,r=e.addNamespaceOpen,a=e.closeAddNamespaceModalAndRefresh,i=e.setErrorSnackMessage,l=(0,o.useState)(!1),c=(0,s.Z)(l,2),u=c[0],d=c[1];(0,o.useEffect)((function(){u&&h.Z.invoke("POST","/api/v1/namespace",{name:n}).then((function(e){d(!1),a(!0)})).catch((function(e){d(!1),i(e)}))}),[u,a,n,i]);return(0,k.jsx)(le.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{color:"primary",variant:"contained"},isOpen:r,titleIcon:(0,k.jsx)(ce.Ej,{}),isLoading:u,onConfirm:function(){d(!0)},onClose:function(){a(!1)},confirmationContent:(0,k.jsxs)(o.Fragment,{children:[u&&(0,k.jsx)(m.Z,{}),(0,k.jsxs)(oe.Z,{children:["Are you sure you want to add a namespace called",(0,k.jsx)("br",{}),(0,k.jsx)("b",{className:t.wrapText,children:n}),"?"]})]})})}))),ge=n(4182),pe=n(35044),fe=n(73481),he=n(29399),xe=n(95995),ve=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.fields.tenantSize.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,cpuToUse:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,integrationSelection:e.tenants.createTenant.fields.tenantSize.integrationSelection}}),{updateAddField:j.HM,isPageValid:j.NO}),ye=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},f.oO),f.AK))}))(ve((function(e){var t=e.classes,n=e.nodes,r=e.memoryNode,a=e.ecParity,s=e.distribution,i=e.ecParityCalc,l=e.cpuToUse,c=e.integrationSelection,u=i.storageFactors.find((function(e){return e.erasureCode===a}));return(0,k.jsxs)("div",{className:t.root,children:[(0,k.jsx)("h4",{children:"Resource Allocation"}),(0,k.jsx)(xe.Z,{}),(0,k.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(pe.Z,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Number of Servers"}),(0,k.jsx)(fe.Z,{align:"right",children:parseInt(n)>0?n:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Drives per Server"}),(0,k.jsx)(fe.Z,{align:"right",children:s?s.disks:"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Drive Capacity"}),(0,k.jsx)(fe.Z,{align:"right",children:s?(0,x.ae)(s.pvSize):"-"})]})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Total Volumes"}),(0,k.jsx)(fe.Z,{align:"right",children:s?s.persistentVolumes:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Memory per Node"}),(0,k.jsxs)(fe.Z,{align:"right",children:[r," Gi"]})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,k.jsx)(fe.Z,{style:{borderBottom:0},align:"right",children:l})]})]})]})}),0===i.error&&u&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("h4",{children:"Erasure Code Configuration"}),(0,k.jsx)(xe.Z,{}),(0,k.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(pe.Z,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"EC Parity"}),(0,k.jsx)(fe.Z,{align:"right",children:""!==a?a:"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Raw Capacity"}),(0,k.jsx)(fe.Z,{align:"right",children:(0,x.ae)(i.rawCapacity)})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Usable Capacity"}),(0,k.jsx)(fe.Z,{align:"right",children:(0,x.ae)(u.maxCapacity)})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,k.jsx)(fe.Z,{style:{borderBottom:0},align:"right",children:s?Math.floor(u.maxFailureTolerations/s.disks):"-"})]})]})})]}),""!==c.typeSelection&&""!==c.storageClass&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)("h4",{children:"Single Instance Configuration"}),(0,k.jsx)(xe.Z,{}),(0,k.jsx)(ge.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,k.jsxs)(pe.Z,{children:[(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"CPU"}),(0,k.jsx)(fe.Z,{align:"right",children:0!==c.CPU?c.CPU:"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Memory"}),(0,k.jsx)(fe.Z,{align:"right",children:0!==c.memory?"".concat(c.memory," Gi"):"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{scope:"row",children:"Drives per Server"}),(0,k.jsx)(fe.Z,{align:"right",children:0!==c.drivesPerServer?"".concat(c.drivesPerServer):"-"})]}),(0,k.jsxs)(he.Z,{children:[(0,k.jsx)(fe.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,k.jsxs)(fe.Z,{style:{borderBottom:0},align:"right",children:[c.driveSize.driveSize,c.driveSize.sizeUnit]})]})]})})]})]})}))),Se=n(7262),Ce=(0,u.$j)((function(e){return{nodes:e.tenants.createTenant.fields.tenantSize.nodes,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,maxAllocatableResources:e.tenants.createTenant.fields.tenantSize.maxAllocatableResources,maxCPUsUse:e.tenants.createTenant.fields.tenantSize.maxCPUsUse,maxMemorySize:e.tenants.createTenant.fields.tenantSize.maxMemorySize,resourcesSpecifyLimit:e.tenants.createTenant.fields.tenantSize.resourcesSpecifyLimit,resourcesCPURequestError:e.tenants.createTenant.fields.tenantSize.resourcesCPURequestError,resourcesCPURequest:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,resourcesCPULimitError:e.tenants.createTenant.fields.tenantSize.resourcesCPULimitError,resourcesCPULimit:e.tenants.createTenant.fields.tenantSize.resourcesCPULimit,resourcesMemoryRequestError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequestError,resourcesMemoryRequest:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,resourcesMemoryLimitError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimitError,resourcesMemoryLimit:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimit}}),{updateAddField:j.HM,isPageValid:j.NO}),je=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Ce((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.nodes,s=e.resourcesSize,i=e.selectedStorageClass,l=(e.maxAllocatableResources,e.maxCPUsUse),u=e.maxMemorySize,m=e.resourcesSpecifyLimit,g=e.resourcesCPURequestError,p=e.resourcesCPURequest,f=e.resourcesCPULimitError,x=e.resourcesCPULimit,v=e.resourcesMemoryRequestError,y=e.resourcesMemoryRequest,S=e.resourcesMemoryLimitError,C=e.resourcesMemoryLimit,j=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]);return(0,o.useEffect)((function(){r("tenantSize",""===v&&""===S&&""===g&&""===f)}),[r,v,S,g,f]),(0,o.useEffect)((function(){h.Z.invoke("GET","api/v1/cluster/allocatable-resources?num_nodes=".concat(a)).then((function(e){j("maxAllocatableResources",e);var t=e,n=c()(t,"min_allocatable_mem",!1),r=c()(t,"min_allocatable_cpu",!1);if(!1===n||!1===r)return j("cpuToUse",0),j("maxMemorySize",""),void j("maxCPUsUse","");var a=(0,Se.floor)(e.mem_priority.max_allocatable_mem/1024/1024/1024);j("maxMemorySize",a.toString()),j("maxCPUsUse",e.cpu_priority.max_allocatable_cpu.toString());var s=c()(t,"cpu_priority.max_allocatable_cpu",0),i=Math.max(1,(0,Se.floor)(s/2));""===p&&j("resourcesCPURequest",i);var o=Math.max(2,(0,Se.floor)(a/2));""===y&&j("resourcesMemoryRequest",o)})).catch((function(e){j("maxMemorySize",0),j("resourcesCPURequest",""),j("resourcesMemoryRequest",""),console.error(e)}))}),[a,j]),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Resources"}),(0,k.jsx)("span",{className:t.descriptionText,children:"You may specify the amount of CPU and Memory that MinIO servers should reserve on each node."})]})}),""!==s.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:s.error})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{label:"CPU Request",id:"resourcesCPURequest",name:"resourcesCPURequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPURequestError",""):isNaN(t)?j("resourcesCPURequestError","Invalid number"):t>parseInt(l)?j("resourcesCPURequestError","Request exceeds available cores (".concat(l,")")):e.target.validity.valid?j("resourcesCPURequestError",""):j("resourcesCPURequestError","Invalid configuration"),j("resourcesCPURequest",e.target.value)},value:p,disabled:""===i,max:l,error:g,pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"resourcesMemoryRequest",name:"resourcesMemoryRequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesMemoryRequestError",""):isNaN(t)?j("resourcesMemoryRequestError","Invalid number"):t>parseInt(u)?j("resourcesMemoryRequestError","Request exceeds available memory across ".concat(a," nodes (").concat(u,"Gi)")):t<2?j("resourcesMemoryRequestError","At least 2Gi must be requested"):e.target.validity.valid?j("resourcesMemoryRequestError",""):j("resourcesMemoryRequestError","Invalid configuration"),j("resourcesMemoryRequest",e.target.value)},label:"Memory Request",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:y,disabled:""===i,error:v,pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)(N.Z,{value:"resourcesSpecifyLimit",id:"resourcesSpecifyLimit",name:"resourcesSpecifyLimit",checked:m,onChange:function(e){var t=e.target.checked;j("resourcesSpecifyLimit",t)},label:"Specify Limit"})}),m&&(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{label:"CPU Limit",id:"resourcesCPULimit",name:"resourcesCPULimit",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPULimitError",""):isNaN(t)?j("resourcesCPULimitError","Invalid number"):e.target.validity.valid?j("resourcesCPULimitError",""):j("resourcesCPULimitError","Invalid configuration"),j("resourcesCPULimit",e.target.value)},value:x,disabled:""===i,max:l,error:f,pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"resourcesMemoryLimit",name:"resourcesMemoryLimit",onChange:function(e){var t=parseInt(e.target.value);console.log("value",t),""===e.target.value?j("resourcesMemoryLimitError",""):isNaN(t)?j("resourcesMemoryLimitError","Invalid number"):e.target.validity.valid?j("resourcesMemoryLimitError",""):j("resourcesMemoryLimitError","Invalid configuration"),j("resourcesMemoryLimit",e.target.value)},label:"Memory Limit",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(){},unitSelected:"Gi",unitsList:[{label:"Gi",value:"Gi"}],disabled:!0}),value:C,disabled:""===i,error:S,pattern:"[0-9]*"})})]})]})}))),Ze=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),_e=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Ze((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.volumeSize,i=e.sizeFactor,l=e.drivesPerServer,c=e.nodes,u=e.memoryNode,m=e.ecParity,g=e.ecParityChoices,p=e.cleanECChoices,f=e.resourcesSize,v=e.distribution,y=e.ecParityCalc,S=e.limitSize,C=e.selectedStorageClass,j=(0,o.useState)({}),Z=(0,s.Z)(j,2),_=Z[0],N=Z[1],R=(0,o.useState)(!1),z=(0,s.Z)(R,2),w=z[0],D=z[1],F=(0,o.useState)(""),E=(0,s.Z)(F,2),U=E[0],K=E[1],G=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),q=function(e){N((0,b.h)(_,e))};return(0,o.useEffect)((function(){if(g.length>0&&""===v.error){var e=(0,x.ES)(p,v.persistentVolumes,v.pvSize,v.nodes);G("ecParityCalc",e),p.includes(m)&&""!==m||G("ecParity",e.defaultEC)}}),[m,g.length,v,p,G]),(0,o.useEffect)((function(){var e=a,t=i,n=(0,x.Pw)("12","Ti",!0),r={unit:t,value:e.toString()},s=(0,x.zg)(r,parseInt(c),parseInt(n),parseInt(l));G("distribution",s),D(!1),K("")}),[c,a,i,G,l]),(0,o.useEffect)((function(){var e=(0,x.Pw)(a,i,!0),t=(0,P.R)([{fieldKey:"nodes",required:!0,value:c,customValidation:w,customValidationMessage:U},{fieldKey:"volume_size",required:!0,value:a,customValidation:parseInt(e)<1073741824||parseInt(e)>S[C],customValidationMessage:"Volume size must be greater than 1Gi and less than ".concat((0,x.ae)(S[C],!0))},{fieldKey:"drivesps",required:!0,value:l,customValidation:parseInt(l)<1,customValidationMessage:"There must be at least one drive"}]);r("tenantSize",!("nodes"in t)&&!("volume_size"in t)&&!("drivesps"in t)&&""===v.error&&0===y.error&&""!==m),N(t)}),[c,a,i,u,v,y,f,S,C,r,w,U,l,m]),(0,o.useEffect)((function(){""===v.error&&""!==c.trim()&&0!==v.disks&&h.Z.invoke("GET","api/v1/get-parity/".concat(c,"/").concat(v.disks)).then((function(e){G("ecParityChoices",(0,ie.dv)(e)),G("cleanECChoices",e)})).catch((function(e){G("ecparityChoices",[]),r("tenantSize",!1),G("ecParity","")}))}),[v,r,G,c]),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Capacity"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==v.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:v.error})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){e.target.validity.valid&&(G("nodes",e.target.value),q("nodes"))},label:"Number of Servers",disabled:""===C,value:c,min:"4",required:!0,error:_.nodes||"",pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"drivesps",name:"drivesps",onChange:function(e){e.target.validity.valid&&(G("drivesPerServer",e.target.value),q("drivesps"))},label:"Drives per Server",value:l,disabled:""===C,min:"1",required:!0,error:_.drivesps||"",pattern:"[0-9]*"})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.formFieldRow,children:(0,k.jsx)(I.Z,{type:"number",id:"volume_size",name:"volume_size",onChange:function(e){G("volumeSize",e.target.value),q("volume_size")},label:"Total Size",value:a,disabled:""===C,required:!0,error:_.volume_size||"",min:"0",overlayObject:(0,k.jsx)(T.Z,{id:"size-unit",onUnitChange:function(e){G("sizeFactor",e)},unitSelected:i,unitsList:(0,x.zQ)(["Ki","Mi"]),disabled:""===C})})})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,k.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){G("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===C,value:m,options:g}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]}),(0,k.jsx)(je,{})]})}))),be=n(36222),Pe=(0,u.$j)((function(e){return function(){var t=e.tenants.createTenant,n=t.fields.tenantSize,r=n.memoryNode,a=n.ecParityChoices,s=n.distribution,i=n.cleanECChoices,o=n.sizeFactor,l=n.ecParity,c=n.cpuToUse,u=n.integrationSelection,d=n.resourcesSize,m=n.drivesPerServer,g=n.maxCPUsUse,p=n.ecParityCalc;return{volumeSize:n.volumeSize,sizeFactor:o,drivesPerServer:m,nodes:n.nodes,memoryNode:r,ecParity:l,ecParityChoices:a,cleanECChoices:i,resourcesSize:d,distribution:s,ecParityCalc:p,cpuToUse:c,maxCPUsUse:g,integrationSelection:u,limitSize:t.limitSize,selectedStorageType:t.fields.nameTenant.selectedStorageType}}}),{updateAddField:j.HM,isPageValid:j.NO}),Ne=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Pe((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.volumeSize,i=e.sizeFactor,l=e.drivesPerServer,u=e.nodes,m=e.memoryNode,g=e.ecParity,p=e.ecParityChoices,f=e.cleanECChoices,v=e.resourcesSize,y=e.distribution,S=e.ecParityCalc,C=e.limitSize,j=e.cpuToUse,Z=e.selectedStorageType,_=e.maxCPUsUse,N=e.formToRender,T=e.integrationSelection,R=(0,o.useState)({}),z=(0,s.Z)(R,2),w=z[0],D=z[1],F=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),E=(0,o.useCallback)((function(e,t){n("nameTenant",e,t)}),[n]);return(0,o.useEffect)((function(){if(p.length>0&&""===y.error){var e=(0,x.ES)(f,y.persistentVolumes,y.pvSize,y.nodes);F("ecParityCalc",e),f.includes(g)&&""!==g||F("ecParity",e.defaultEC)}}),[g,p,y,f,F]),(0,o.useEffect)((function(){if(void 0!==N&&parseInt(u)>=4){var e=Ae[N];if(Object.keys(e).length>0){var t=c()(e,"configurations",[]).find((function(e){return e.typeSelection===Z}));if(t){F("integrationSelection",t),E("selectedStorageClass",t.storageClass);var n={pvSize:parseInt((0,x.Pw)(t.driveSize.driveSize,t.driveSize.sizeUnit,!0),10),nodes:parseInt(u),disks:t.drivesPerServer,persistentVolumes:t.drivesPerServer*parseInt(u),error:""};F("distribution",n),F("resourcesCPURequest",Math.max(1,t.CPU/2)),F("resourcesMemoryRequest",Math.max(2,t.memory/2))}}}}),[u,Z,N,F,E]),(0,o.useEffect)((function(){var e=(0,P.R)([{fieldKey:"nodes",required:!0,value:u,customValidation:parseInt(u)<4,customValidationMessage:"Al least 4 servers must be selected"}]);r("tenantSize",!("nodes"in e)&&""===y.error&&0===S.error&&""===v.error&&""!==g&&parseInt(u)>=4),D(e)}),[u,a,i,m,y,S,v,C,Z,j,_,r,l,g]),(0,o.useEffect)((function(){0!==T.drivesPerServer&&""!==u.trim()&&h.Z.invoke("GET","api/v1/get-parity/".concat(u,"/").concat(T.drivesPerServer)).then((function(e){F("ecParityChoices",(0,ie.dv)(e)),F("cleanECChoices",e)})).catch((function(e){F("ecparityChoices",[]),r("tenantSize",!1),F("ecParity","")}))}),[T,u,r,F]),(0,k.jsxs)(o.Fragment,{children:[(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Tenant Size"}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==y.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:y.error})}),""!==v.error&&(0,k.jsx)(d.ZP,{item:!0,xs:12,children:(0,k.jsx)("div",{className:t.error,children:v.error})}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){var t;e.target.validity.valid&&(F("nodes",e.target.value),t="nodes",D((0,b.h)(w,t)))},label:"Number of Servers",disabled:""===Z,value:u,min:"4",required:!0,error:w.nodes||"",pattern:"[0-9]*"})}),(0,k.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,k.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){F("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===Z,value:g,options:p}),(0,k.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]})]})})));!function(e){e[e.aws=0]="aws",e[e.azure=1]="azure",e[e.gcp=2]="gcp",e[e.default=3]="default",e[e[void 0]=4]="undefined"}(a||(a={}));var Ie={"mp-mode-aws":a.aws,"mp-mode-azure":a.azure,"mp-mode-gcp":a.gcp},Ae=(r={},(0,be.Z)(r,a.aws,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"NVME",value:"nvme"},{label:"HDD",value:"hdd"}],configurations:[{typeSelection:"nvme",storageClass:"nvme-i3en-12xlarge",CPU:48,memory:384,driveSize:{driveSize:"7500",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"hdd",storageClass:"hdd-d3en-12xlarge",CPU:8,memory:32,driveSize:{driveSize:"12.7",sizeUnit:"Ti"},drivesPerServer:4}],sizingComponent:(0,k.jsx)(Ne,{formToRender:a.aws})}),(0,be.Z)(r,a.azure,{variantSelectorLabel:"VM Size",variantSelectorValues:[{label:"Standard_L32s_v2",value:"Standard_L32s_v2"},{label:"Standard_L48s_v2",value:"Standard_L48s_v2"},{label:"Standard_L64s_v2",value:"Standard_L64s_v2"}],configurations:[{typeSelection:"Standard_L8s_v2",storageClass:"local-nvme",CPU:8,memory:64,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:1},{typeSelection:"Standard_L16s_v2",storageClass:"local-nvme",CPU:16,memory:128,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:2},{typeSelection:"Standard_L32s_v2",storageClass:"local-nvme",CPU:32,memory:256,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"Standard_L48s_v2",storageClass:"local-nvme",CPU:48,memory:384,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:6},{typeSelection:"Standard_L64s_v2",storageClass:"local-nvme",CPU:64,memory:512,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:8}],sizingComponent:(0,k.jsx)(Ne,{formToRender:a.azure})}),(0,be.Z)(r,a.gcp,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"SSD",value:"ssd"}],configurations:[{typeSelection:"ssd",storageClass:"local-ssd",CPU:32,memory:128,driveSize:{driveSize:"368",sizeUnit:"Gi"},drivesPerServer:24}],sizingComponent:(0,k.jsx)(Ne,{formToRender:a.gcp})}),(0,be.Z)(r,a.default,{}),(0,be.Z)(r,a.undefined,{}),r),Te=(0,u.$j)((function(e){return{tenantName:e.tenants.createTenant.fields.nameTenant.tenantName,namespace:e.tenants.createTenant.fields.nameTenant.namespace,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,selectedStorageType:e.tenants.createTenant.fields.nameTenant.selectedStorageType,storageClasses:e.tenants.createTenant.storageClasses}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,setStorageClassesList:j.wZ,setLimitSize:j.DH,isPageValid:j.NO}),ke=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({sizePreview:{position:"fixed",marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2}},f.DF),f.oO),f.AK))}))(Te((function(e){var t=e.classes,n=e.storageClasses,r=e.tenantName,i=e.namespace,l=e.selectedStorageClass,u=e.selectedStorageType,m=e.formToRender,g=void 0===m?a.default:m,p=e.updateAddField,f=e.setStorageClassesList,x=e.setLimitSize,v=e.isPageValid,y=e.setModalErrorSnackMessage,S=(0,o.useState)({}),C=(0,s.Z)(S,2),j=C[0],Z=C[1],N=(0,o.useState)(!0),T=(0,s.Z)(N,2),R=T[0],z=T[1],w=(0,o.useState)(!1),D=(0,s.Z)(w,2),F=D[0],E=D[1],U=(0,o.useState)(!1),K=(0,s.Z)(U,2),G=K[0],q=K[1],L=(0,o.useState)(!1),M=(0,s.Z)(L,2),V=M[0],B=M[1],$=(0,o.useCallback)((function(e,t){p("nameTenant",e,t)}),[p]),W=(0,o.useCallback)((function(){q(!1),h.Z.invoke("GET","/api/v1/namespaces/".concat(i,"/tenants")).then((function(e){var t=c()(e,"tenants",[]);if(t&&t.length>0)return z(!1),void E(!1);z(!0),h.Z.invoke("GET","/api/v1/namespaces/".concat(i,"/resourcequotas/").concat(i,"-storagequota")).then((function(e){var t=c()(e,"elements",[]);x((0,ie.OU)(e));var n=t.map((function(e){var t=c()(e,"name","").split(".storageclass.storage.k8s.io/requests.storage")[0];return{label:t,value:t}}));f(n);var r=n.findIndex((function(e){return e.value===l}));n.length>0&&-1===r?$("selectedStorageClass",n[0].value):0===n.length&&($("selectedStorageClass",""),f([])),E(!1)})).catch((function(e){E(!1),q(!0),$("selectedStorageClass",""),f([]),console.error("Namespace error: ",e)}))})).catch((function(e){y({errorMessage:"Error validating if namespace already has tenants",detailedError:e.detailedError})}))}),[i,x,y,f,$,l]),H=(0,o.useMemo)((function(){return se()(W,500)}),[W]);(0,o.useEffect)((function(){if(""!==i)return H(),E(!0),H.cancel}),[H,i]),(0,o.useEffect)((function(){var e=!1,t="";R||F?n.length<1&&R&&!F&&(e=!0,t="Please enter a valid namespace"):(e=!0,t="You can only create one tenant per namespace");var s=(0,P.R)([{fieldKey:"tenant-name",required:!0,pattern:/^[a-z0-9-]{3,63}$/,customPatternMessage:"Name only can contain lowercase letters, numbers and '-'. Min. Length: 3",value:r},{fieldKey:"namespace",required:!0,value:i,customValidation:e,customValidationMessage:t}]),o=!("tenant-name"in s)&&!("namespace"in s)&&(g===a.default&&n.length>0||g!==a.default&&""!==u);v("nameTenant",o),Z(s)}),[n,i,r,v,R,F,u,g]);var Y=function(e){Z((0,b.h)(j,e))};return(0,k.jsxs)(o.Fragment,{children:[V&&(0,k.jsx)(me,{addNamespaceOpen:V,closeAddNamespaceModalAndRefresh:function(e){B(!1),e&&H()},namespace:i}),(0,k.jsxs)(d.ZP,{container:!0,children:[(0,k.jsx)(d.ZP,{item:!0,xs:8,md:9,children:(0,k.jsx)(_.Z,{className:t.paperWrapper,sx:{minHeight:550},children:(0,k.jsxs)(d.ZP,{container:!0,children:[(0,k.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,k.jsxs)("div",{className:t.headerElement,children:[(0,k.jsx)("h3",{className:t.h3Section,children:"Name"}),(0,k.jsx)("span",{className:t.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,k.jsx)("div",{className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"tenant-name",name:"tenant-name",onChange:function(e){$("tenantName",e.target.value),Y("tenant-name")},label:"Name",value:r,required:!0,error:j["tenant-name"]||""})})]}),(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(I.Z,{id:"namespace",name:"namespace",onChange:function(e){$("namespace",e.target.value),Y("namespace")},label:"Namespace",value:i,error:j.namespace||"",overlayIcon:G?(0,k.jsx)(O.Z,{}):null,overlayAction:function(){B(!0)},required:!0})}),g===a.default?(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){$("selectedStorageClass",e.target.value)},label:"Storage Class",value:l,options:n,disabled:n.length<1})}):(0,k.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,k.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){$("selectedStorageType",e.target.value)},label:c()(Ae,"".concat(g,".variantSelectorLabel"),"Storage Type"),value:u,options:c()(Ae,"".concat(g,".variantSelectorValues"),[])})}),g===a.default?(0,k.jsx)(_e,{}):c()(Ae,"".concat(g,".sizingComponent"),null)]})})}),(0,k.jsx)(d.ZP,{item:!0,xs:4,md:3,children:(0,k.jsx)("div",{className:t.sizePreview,children:(0,k.jsx)(ye,{})})})]})]})}))),Re=(0,u.$j)((function(e){return{features:e.console.session.features}}),null)((function(e){var t=e.features,n=(0,o.useState)(null),r=(0,s.Z)(n,2),i=r[0],l=r[1];return(0,o.useEffect)((function(){var e=a.default;t&&0!==t.length&&Object.keys(Ie).forEach((function(n){t.includes(n)&&(e=c()(Ie,n,a.default))}));l(e)}),[t]),null===i?null:(0,k.jsx)(ke,{formToRender:i})})),ze=(0,u.$j)((function(e){return{namespace:e.tenants.createTenant.fields.nameTenant.namespace,validPages:e.tenants.createTenant.validPages,fields:e.tenants.createTenant.fields,certificates:e.tenants.createTenant.certificates,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{setErrorSnackMessage:y.Ih,updateAddField:j.HM,resetAddTenantForm:j.dS}),we=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({pageBox:{border:"1px solid #EAEAEA"}},f.oO),f.AK),f.Je))}))(ze((function(e){var t=e.classes,n=e.fields,r=e.certificates,a=e.selectedStorageClass,l=e.namespace,u=e.validPages,g=e.setErrorSnackMessage,p=e.resetAddTenantForm,f=(0,o.useState)(!1),y=(0,s.Z)(f,2),j=y[0],Z=y[1],_=(0,o.useState)(null),b=(0,s.Z)(_,2),P=b[0],N=b[1],I=(0,o.useState)(!1),A=(0,s.Z)(I,2),T=A[0],R=A[1];(0,o.useEffect)((function(){var e=n.nameTenant.tenantName,t=n.nameTenant.selectedStorageClass,a=n.configure.imageName,s=n.configure.customDockerhub,o=n.configure.imageRegistry,u=n.configure.imageRegistryUsername,d=n.configure.imageRegistryPassword,m=n.configure.exposeMinIO,p=n.configure.exposeConsole,f=n.identityProvider.idpSelection,v=n.identityProvider.openIDConfigurationURL,y=n.identityProvider.openIDClientID,C=n.identityProvider.openIDClaimName,j=n.identityProvider.openIDCallbackURL,_=n.identityProvider.openIDScopes,b=n.identityProvider.openIDSecretID,P=n.identityProvider.ADURL,I=n.identityProvider.ADSkipTLS,A=n.identityProvider.ADServerInsecure,k=n.identityProvider.ADUserNameSearchFilter,z=n.identityProvider.ADGroupSearchBaseDN,w=n.identityProvider.ADGroupSearchFilter,D=n.identityProvider.ADGroupNameAttribute,F=n.identityProvider.ADUserDNs,E=n.identityProvider.ADUserNameFormat,U=n.identityProvider.ADLookupBindDN,K=n.identityProvider.ADLookupBindPassword,G=n.identityProvider.ADUserDNSearchBaseDN,q=n.identityProvider.ADUserDNSearchFilter,L=n.identityProvider.ADServerStartTLS,M=n.identityProvider.accessKeys,V=n.identityProvider.secretKeys,O=r.minioCertificates,B=r.caCertificates,$=r.consoleCaCertificates,W=r.consoleCertificate,H=r.serverCertificate,Y=r.clientCertificate,Q=r.vaultCertificate,X=r.vaultCA,J=r.gemaltoCA,ee=n.encryption.enableEncryption,te=n.encryption.encryptionType,ne=n.encryption.gemaltoEndpoint,re=n.encryption.gemaltoToken,ae=n.encryption.gemaltoDomain,se=n.encryption.gemaltoRetry,ie=n.encryption.awsEndpoint,oe=n.encryption.awsRegion,le=n.encryption.awsKMSKey,ce=n.encryption.awsAccessKey,ue=n.encryption.awsSecretKey,de=n.encryption.awsToken,me=n.encryption.vaultEndpoint,ge=n.encryption.vaultEngine,pe=n.encryption.vaultNamespace,fe=n.encryption.vaultPrefix,he=n.encryption.vaultAppRoleEngine,xe=n.encryption.vaultId,ve=n.encryption.vaultSecret,ye=n.encryption.vaultRetry,Se=n.encryption.vaultPing,Ce=n.encryption.azureEndpoint,je=n.encryption.azureTenantID,Ze=n.encryption.azureClientID,_e=n.encryption.azureClientSecret,be=n.encryption.gcpProjectID,Pe=n.encryption.gcpEndpoint,Ne=n.encryption.gcpClientEmail,Ie=n.encryption.gcpClientID,Ae=n.encryption.gcpPrivateKeyID,Te=n.encryption.gcpPrivateKey,ke=n.security.enableAutoCert,Re=n.security.enableTLS,ze=n.tenantSize.ecParity,we=n.tenantSize.distribution,De=n.configure.tenantCustom,Fe=n.configure.logSearchCustom,Ee=n.configure.prometheusCustom,Ue=n.configure.logSearchVolumeSize,Ke=n.configure.logSearchSelectedStorageClass,Ge=n.configure.logSearchImage,qe=n.configure.kesImage,Le=n.configure.logSearchPostgresImage,Me=n.configure.logSearchPostgresInitImage,Ve=n.configure.prometheusImage,Oe=n.configure.prometheusSidecarImage,Be=n.configure.prometheusInitImage,$e=n.configure.prometheusSelectedStorageClass,We=n.configure.prometheusVolumeSize,He=n.affinity.podAffinity,Ye=n.affinity.nodeSelectorLabels,Qe=n.affinity.withPodAntiAffinity,Xe=n.configure.tenantSecurityContext,Je=n.configure.logSearchSecurityContext,et=n.configure.logSearchPostgresSecurityContext,tt=n.configure.prometheusSecurityContext,nt=n.encryption.kesSecurityContext,rt=n.encryption.replicas;if(T){var at=(0,x.en)([]),st={};switch(He){case"default":st={affinity:(0,S.P)(e,at)};break;case"nodeSelector":st={affinity:(0,S.q)(Ye,Qe,e,at)}}var it=ze.split(":")[1],ot={name:e,namespace:l,access_key:"",secret_key:"",access_keys:[],secret_keys:[],enable_tls:Re&&ke,enable_console:!0,enable_prometheus:!0,service_name:"",image:a,expose_minio:m,expose_console:p,pools:[(0,i.Z)({name:at,servers:we.nodes,volumes_per_server:we.disks,volume_configuration:{size:we.pvSize,storage_class_name:t},securityContext:De?Xe:null},st)],erasureCodingParity:parseInt(it,10)};""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryRequest&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources={},""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesMemoryRequest||(ot.pools[0].resources.requests={},""!==n.tenantSize.resourcesCPURequest&&(ot.pools[0].resources.requests.cpu=parseInt(n.tenantSize.resourcesCPURequest)),""!==n.tenantSize.resourcesMemoryRequest&&(ot.pools[0].resources.requests.memory=parseInt((0,x.Pw)(n.tenantSize.resourcesMemoryRequest,"Gi",!0)))),""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources.limits={},""!==n.tenantSize.resourcesCPULimit&&(ot.pools[0].resources.limits.cpu=parseInt(n.tenantSize.resourcesCPULimit)),""!==n.tenantSize.resourcesMemoryLimit&&(ot.pools[0].resources.limits.memory=parseInt((0,x.Pw)(n.tenantSize.resourcesMemoryLimit,"Gi",!0))))),s&&(ot=(0,i.Z)((0,i.Z)({},ot),{},{image_registry:{registry:o,username:u,password:d}})),ot=Fe?(0,i.Z)((0,i.Z)({},ot),{},{logSearchConfiguration:{storageClass:"default"===Ke?"":Ke,storageSize:parseInt(Ue),image:Ge,postgres_image:Le,postgres_init_image:Me,securityContext:Je,postgres_securityContext:et}}):(0,i.Z)((0,i.Z)({},ot),{},{logSearchConfiguration:{image:Ge,postgres_image:Le,postgres_init_image:Me}}),ot=Ee?(0,i.Z)((0,i.Z)({},ot),{},{prometheusConfiguration:{storageClass:"default"===$e?"":$e,storageSize:parseInt(We),image:Ve,sidecar_image:Oe,init_image:Be,securityContext:tt}}):(0,i.Z)((0,i.Z)({},ot),{},{prometheusConfiguration:{image:Ve,sidecar_image:Oe,init_image:Be}});var lt=null,ct=null,ut=null,dt=null;if(B.length>0&&(ut={ca_certificates:B.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),$.length>0&&(dt={console_ca_certificates:$.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),Re&&O.length>0&&(lt={minio:O.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key}))}),Re&&""!==W.encoded_cert&&""!==W.encoded_key&&(ct={console:{crt:W.encoded_cert,key:W.encoded_key}}),(lt||ct||ut||dt)&&(ot=(0,i.Z)((0,i.Z)({},ot),{},{tls:(0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},lt),ct),ut),dt)})),ee){var mt={};switch(te){case"gemalto":var gt={};""!==J.encoded_cert&&(gt={ca:J.encoded_cert}),mt={gemalto:{keysecure:{endpoint:ne,credentials:{token:re,domain:ae,retry:parseInt(se)},tls:(0,i.Z)({},gt)}}};break;case"aws":mt={aws:{secretsmanager:{endpoint:ie,region:oe,kmskey:le,credentials:{accesskey:ce,secretkey:ue,token:de}}}};break;case"azure":mt={azure:{keyvault:{endpoint:Ce,credentials:{tenant_id:je,client_id:Ze,client_secret:_e}}}};break;case"gcp":mt={gcp:{secretmanager:{project_id:be,endpoint:Pe,credentials:{client_email:Ne,client_id:Ie,private_key_id:Ae,private_key:Te}}}};break;case"vault":var pt=null,ft=null;""!==Q.encoded_key&&""!==Q.encoded_cert&&(pt={key:Q.encoded_key,crt:Q.encoded_cert}),""!==X.encoded_cert&&(ft={ca:X.encoded_cert});var ht=null;(pt||X)&&(ht={tls:(0,i.Z)((0,i.Z)({},pt),ft)}),mt={vault:(0,i.Z)((0,i.Z)({endpoint:me,engine:ge,namespace:pe,prefix:fe,approle:{engine:he,id:xe,secret:ve,retry:parseInt(ye)}},ht),{},{status:{ping:parseInt(Se)}})}}var xt={},vt={};""!==Y.encoded_key&&""!==Y.encoded_cert&&(vt={client:{key:Y.encoded_key,crt:Y.encoded_cert}}),""!==H.encoded_key&&""!==H.encoded_cert&&(xt={server:{key:H.encoded_key,crt:H.encoded_cert}}),ot=(0,i.Z)((0,i.Z)({},ot),{},{encryption:(0,i.Z)((0,i.Z)((0,i.Z)({replicas:rt,securityContext:nt,image:qe},vt),xt),mt)})}var yt={};switch(f){case"Built-in":for(var St=[],Ct=0;Ct.\n\nimport React from \"react\";\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 { BackSettingsIcon } from \"../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n link: {\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n maxWidth: \"300px\",\n padding: \"2rem 2rem 0rem 2rem\",\n color: theme.palette.primary.light,\n fontSize: \".8rem\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n icon: {\n marginRight: \".3rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& svg.min-icon\": {\n width: 12,\n },\n },\n });\n\ninterface IBackLink {\n classes: any;\n to: string;\n label: string;\n className?: any;\n executeOnClick?: () => void;\n}\n\nconst BackLink = ({\n to,\n label,\n classes,\n className,\n executeOnClick,\n}: IBackLink) => {\n return (\n {\n if (executeOnClick) {\n executeOnClick();\n }\n }}\n >\n
\n \n
\n
{label}
\n \n );\n};\n\nexport default withStyles(styles)(BackLink);\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 { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\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 get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\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\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\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 get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\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 fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n
\n \n \n {children}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\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 { Opts } from \"../../../ListTenants/utils\";\nimport TenantSizeMK from \"./TenantSizeMK\";\n\nexport enum IMkEnvs {\n \"aws\",\n \"azure\",\n \"gcp\",\n \"default\",\n undefined,\n}\n\nexport interface IDriveSizing {\n driveSize: string;\n sizeUnit: string;\n}\n\nexport interface IntegrationConfiguration {\n typeSelection: string;\n storageClass: string;\n CPU: number;\n memory: number;\n drivesPerServer: number;\n driveSize: IDriveSizing;\n}\n\nexport const AWSStorageTypes: Opts[] = [\n { label: \"NVME\", value: \"nvme\" },\n { label: \"HDD\", value: \"hdd\" },\n];\n\nexport const AzureStorageTypes: Opts[] = [\n { label: \"Standard_L32s_v2\", value: \"Standard_L32s_v2\" },\n { label: \"Standard_L48s_v2\", value: \"Standard_L48s_v2\" },\n { label: \"Standard_L64s_v2\", value: \"Standard_L64s_v2\" },\n];\n\nexport const resourcesConfigurations = {\n \"mp-mode-aws\": IMkEnvs.aws,\n \"mp-mode-azure\": IMkEnvs.azure,\n \"mp-mode-gcp\": IMkEnvs.gcp,\n};\n\nexport const AWSConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"nvme\",\n storageClass: \"nvme-i3en-12xlarge\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"7500\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"hdd\",\n storageClass: \"hdd-d3en-12xlarge\",\n CPU: 8,\n memory: 32,\n driveSize: { driveSize: \"12.7\", sizeUnit: \"Ti\" },\n drivesPerServer: 4,\n },\n];\n\nexport const AzureConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"Standard_L8s_v2\",\n storageClass: \"local-nvme\",\n CPU: 8,\n memory: 64,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 1,\n },\n {\n typeSelection: \"Standard_L16s_v2\",\n storageClass: \"local-nvme\",\n CPU: 16,\n memory: 128,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 2,\n },\n {\n typeSelection: \"Standard_L32s_v2\",\n storageClass: \"local-nvme\",\n CPU: 32,\n memory: 256,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"Standard_L48s_v2\",\n storageClass: \"local-nvme\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 6,\n },\n {\n typeSelection: \"Standard_L64s_v2\",\n storageClass: \"local-nvme\",\n CPU: 64,\n memory: 512,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 8,\n },\n];\n\nexport const GCPStorageTypes: Opts[] = [{ label: \"SSD\", value: \"ssd\" }];\n\nexport const GCPConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"ssd\",\n storageClass: \"local-ssd\",\n CPU: 32,\n memory: 128,\n driveSize: { driveSize: \"368\", sizeUnit: \"Gi\" },\n drivesPerServer: 24,\n },\n];\n\nexport const mkPanelConfigurations = {\n [IMkEnvs.aws]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: AWSStorageTypes,\n configurations: AWSConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.azure]: {\n variantSelectorLabel: \"VM Size\",\n variantSelectorValues: AzureStorageTypes,\n configurations: AzureConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.gcp]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: GCPStorageTypes,\n configurations: GCPConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.default]: {},\n [IMkEnvs.undefined]: {},\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, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { ISecurityContext } from \"../../types\";\nimport InputUnitMenu from \"../../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\ninterface IConfigureProps {\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n storageClasses: any;\n classes: any;\n customImage: boolean;\n imageName: string;\n customDockerhub: boolean;\n imageRegistry: string;\n imageRegistryUsername: string;\n imageRegistryPassword: string;\n exposeMinIO: boolean;\n exposeConsole: boolean;\n prometheusCustom: boolean;\n tenantCustom: boolean;\n logSearchCustom: boolean;\n logSearchVolumeSize: string;\n logSearchSizeFactor: string;\n prometheusVolumeSize: string;\n prometheusSizeFactor: string;\n logSearchSelectedStorageClass: string;\n logSearchImage: string;\n kesImage: string;\n logSearchPostgresImage: string;\n logSearchPostgresInitImage: string;\n prometheusSelectedStorageClass: string;\n prometheusImage: string;\n prometheusSidecarImage: string;\n prometheusInitImage: string;\n selectedStorageClass: string;\n tenantSecurityContext: ISecurityContext;\n logSearchSecurityContext: ISecurityContext;\n logSearchPostgresSecurityContext: ISecurityContext;\n prometheusSecurityContext: ISecurityContext;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Configure = ({\n classes,\n storageClasses,\n customImage,\n imageName,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n exposeMinIO,\n exposeConsole,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n logSearchVolumeSize,\n logSearchSizeFactor,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusVolumeSize,\n prometheusSizeFactor,\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n updateAddField,\n isPageValid,\n selectedStorageClass,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n}: IConfigureProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"configure\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/logsearchapi:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"configure\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n isPageValid,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n
Configure
\n \n Basic configurations for tenant management\n \n
\n
\n
Expose Services
\n \n Whether the tenant's services should request an external IP.\n \n
\n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n tenantName: state.tenants.createTenant.fields.nameTenant.tenantName,\n namespace: state.tenants.createTenant.fields.nameTenant.namespace,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n selectedStorageType:\n state.tenants.createTenant.fields.nameTenant.selectedStorageType,\n storageClasses: state.tenants.createTenant.storageClasses,\n});\n\nconst connector = connect(mapState, {\n setModalErrorSnackMessage,\n updateAddField,\n setStorageClassesList,\n setLimitSize,\n isPageValid,\n});\n\nexport default withStyles(styles)(connector(NameTenantMain));\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 } from \"react-redux\";\nimport get from \"lodash/get\";\nimport NameTenantMain from \"./NameTenantMain\";\nimport { IMkEnvs, resourcesConfigurations } from \"./utils\";\nimport { AppState } from \"../../../../../../store\";\n\ninterface ITenantResources {\n features?: string[];\n}\n\nconst TenantResources = ({ features }: ITenantResources) => {\n const [formRender, setFormRender] = useState(null);\n\n useEffect(() => {\n let setConfiguration = IMkEnvs.default;\n\n if (features && features.length !== 0) {\n const possibleVariables = Object.keys(resourcesConfigurations);\n\n possibleVariables.forEach((element) => {\n if (features.includes(element)) {\n setConfiguration = get(\n resourcesConfigurations,\n element,\n IMkEnvs.default\n );\n }\n });\n }\n\n setFormRender(setConfiguration);\n }, [features]);\n\n if (formRender === null) {\n return null;\n }\n\n return ;\n};\n\nconst mapState = (state: AppState) => ({\n features: state.console.session.features,\n});\n\nconst connector = connect(mapState, null);\n\nexport default connector(TenantResources);\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 get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport { LinearProgress } from \"@mui/material\";\n\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n modalBasic,\n settingsCommon,\n wizardCommon,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport api from \"../../../../common/api\";\nimport { generatePoolName, getBytes } from \"../../../../common/utils\";\nimport GenericWizard from \"../../Common/GenericWizard/GenericWizard\";\nimport { IWizardElement } from \"../../Common/GenericWizard/types\";\nimport { NewServiceAccount } from \"../../Common/CredentialsPrompt/types\";\nimport { ErrorResponseHandler, ITenantCreator } from \"../../../../common/types\";\nimport { KeyPair } from \"../ListTenants/utils\";\n\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { getDefaultAffinity, getNodeSelector } from \"../TenantDetails/utils\";\nimport CredentialsPrompt from \"../../Common/CredentialsPrompt/CredentialsPrompt\";\nimport { AppState } from \"../../../../store\";\nimport { ICertificatesItems, IFieldStore } from \"../types\";\nimport { resetAddTenantForm, updateAddField } from \"../actions\";\nimport Configure from \"./Steps/Configure\";\nimport IdentityProvider from \"./Steps/IdentityProvider\";\nimport Security from \"./Steps/Security\";\nimport Encryption from \"./Steps/Encryption\";\nimport Affinity from \"./Steps/Affinity\";\nimport PageHeader from \"../../Common/PageHeader/PageHeader\";\nimport history from \"../../../../history\";\nimport Images from \"./Steps/Images\";\nimport PageLayout from \"../../Common/Layout/PageLayout\";\nimport BackLink from \"../../../../common/BackLink\";\nimport TenantResources from \"./Steps/TenantResources/TenantResources\";\n\ninterface IAddTenantProps {\n setErrorSnackMessage: typeof setErrorSnackMessage;\n resetAddTenantForm: typeof resetAddTenantForm;\n updateAddField: typeof updateAddField;\n fields: IFieldStore;\n certificates: ICertificatesItems;\n selectedStorageClass: string;\n namespace: string;\n validPages: string[];\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n pageBox: {\n border: \"1px solid #EAEAEA\",\n },\n ...modalBasic,\n ...wizardCommon,\n ...settingsCommon,\n });\n\nconst AddTenant = ({\n classes,\n fields,\n certificates,\n selectedStorageClass,\n namespace,\n validPages,\n setErrorSnackMessage,\n resetAddTenantForm,\n}: IAddTenantProps) => {\n // Modals\n const [showNewCredentials, setShowNewCredentials] = useState(false);\n const [createdAccount, setCreatedAccount] =\n useState(null);\n\n // Fields\n const [addSending, setAddSending] = useState(false);\n\n /* Send Information to backend */\n useEffect(() => {\n const tenantName = fields.nameTenant.tenantName;\n const selectedStorageClass = fields.nameTenant.selectedStorageClass;\n const imageName = fields.configure.imageName;\n const customDockerhub = fields.configure.customDockerhub;\n const imageRegistry = fields.configure.imageRegistry;\n const imageRegistryUsername = fields.configure.imageRegistryUsername;\n const imageRegistryPassword = fields.configure.imageRegistryPassword;\n const exposeMinIO = fields.configure.exposeMinIO;\n const exposeConsole = fields.configure.exposeConsole;\n const idpSelection = fields.identityProvider.idpSelection;\n const openIDConfigurationURL =\n fields.identityProvider.openIDConfigurationURL;\n const openIDClientID = fields.identityProvider.openIDClientID;\n const openIDClaimName = fields.identityProvider.openIDClaimName;\n const openIDCallbackURL = fields.identityProvider.openIDCallbackURL;\n const openIDScopes = fields.identityProvider.openIDScopes;\n const openIDSecretID = fields.identityProvider.openIDSecretID;\n const ADURL = fields.identityProvider.ADURL;\n const ADSkipTLS = fields.identityProvider.ADSkipTLS;\n const ADServerInsecure = fields.identityProvider.ADServerInsecure;\n const ADUserNameSearchFilter =\n fields.identityProvider.ADUserNameSearchFilter;\n const ADGroupSearchBaseDN = fields.identityProvider.ADGroupSearchBaseDN;\n const ADGroupSearchFilter = fields.identityProvider.ADGroupSearchFilter;\n const ADGroupNameAttribute = fields.identityProvider.ADGroupNameAttribute;\n const ADUserDNs = fields.identityProvider.ADUserDNs;\n const ADUserNameFormat = fields.identityProvider.ADUserNameFormat;\n const ADLookupBindDN = fields.identityProvider.ADLookupBindDN;\n const ADLookupBindPassword = fields.identityProvider.ADLookupBindPassword;\n const ADUserDNSearchBaseDN = fields.identityProvider.ADUserDNSearchBaseDN;\n const ADUserDNSearchFilter = fields.identityProvider.ADUserDNSearchFilter;\n const ADServerStartTLS = fields.identityProvider.ADServerStartTLS;\n const accessKeys = fields.identityProvider.accessKeys;\n const secretKeys = fields.identityProvider.secretKeys;\n const minioCertificates = certificates.minioCertificates;\n const caCertificates = certificates.caCertificates;\n const consoleCaCertificates = certificates.consoleCaCertificates;\n const consoleCertificate = certificates.consoleCertificate;\n const serverCertificate = certificates.serverCertificate;\n const clientCertificate = certificates.clientCertificate;\n const vaultCertificate = certificates.vaultCertificate;\n const vaultCA = certificates.vaultCA;\n const gemaltoCA = certificates.gemaltoCA;\n const enableEncryption = fields.encryption.enableEncryption;\n const encryptionType = fields.encryption.encryptionType;\n const gemaltoEndpoint = fields.encryption.gemaltoEndpoint;\n const gemaltoToken = fields.encryption.gemaltoToken;\n const gemaltoDomain = fields.encryption.gemaltoDomain;\n const gemaltoRetry = fields.encryption.gemaltoRetry;\n const awsEndpoint = fields.encryption.awsEndpoint;\n const awsRegion = fields.encryption.awsRegion;\n const awsKMSKey = fields.encryption.awsKMSKey;\n const awsAccessKey = fields.encryption.awsAccessKey;\n const awsSecretKey = fields.encryption.awsSecretKey;\n const awsToken = fields.encryption.awsToken;\n const vaultEndpoint = fields.encryption.vaultEndpoint;\n const vaultEngine = fields.encryption.vaultEngine;\n const vaultNamespace = fields.encryption.vaultNamespace;\n const vaultPrefix = fields.encryption.vaultPrefix;\n const vaultAppRoleEngine = fields.encryption.vaultAppRoleEngine;\n const vaultId = fields.encryption.vaultId;\n const vaultSecret = fields.encryption.vaultSecret;\n const vaultRetry = fields.encryption.vaultRetry;\n const vaultPing = fields.encryption.vaultPing;\n const azureEndpoint = fields.encryption.azureEndpoint;\n const azureTenantID = fields.encryption.azureTenantID;\n const azureClientID = fields.encryption.azureClientID;\n const azureClientSecret = fields.encryption.azureClientSecret;\n const gcpProjectID = fields.encryption.gcpProjectID;\n const gcpEndpoint = fields.encryption.gcpEndpoint;\n const gcpClientEmail = fields.encryption.gcpClientEmail;\n const gcpClientID = fields.encryption.gcpClientID;\n const gcpPrivateKeyID = fields.encryption.gcpPrivateKeyID;\n const gcpPrivateKey = fields.encryption.gcpPrivateKey;\n const enableAutoCert = fields.security.enableAutoCert;\n const enableTLS = fields.security.enableTLS;\n const ecParity = fields.tenantSize.ecParity;\n const distribution = fields.tenantSize.distribution;\n const tenantCustom = fields.configure.tenantCustom;\n const logSearchCustom = fields.configure.logSearchCustom;\n const prometheusCustom = fields.configure.prometheusCustom;\n const logSearchVolumeSize = fields.configure.logSearchVolumeSize;\n const logSearchSelectedStorageClass =\n fields.configure.logSearchSelectedStorageClass;\n const logSearchImage = fields.configure.logSearchImage;\n const kesImage = fields.configure.kesImage;\n const logSearchPostgresImage = fields.configure.logSearchPostgresImage;\n const logSearchPostgresInitImage =\n fields.configure.logSearchPostgresInitImage;\n const prometheusImage = fields.configure.prometheusImage;\n const prometheusSidecarImage = fields.configure.prometheusSidecarImage;\n const prometheusInitImage = fields.configure.prometheusInitImage;\n const prometheusSelectedStorageClass =\n fields.configure.prometheusSelectedStorageClass;\n const prometheusVolumeSize = fields.configure.prometheusVolumeSize;\n const affinityType = fields.affinity.podAffinity;\n const nodeSelectorLabels = fields.affinity.nodeSelectorLabels;\n const withPodAntiAffinity = fields.affinity.withPodAntiAffinity;\n\n const tenantSecurityContext = fields.configure.tenantSecurityContext;\n const logSearchSecurityContext = fields.configure.logSearchSecurityContext;\n const logSearchPostgresSecurityContext =\n fields.configure.logSearchPostgresSecurityContext;\n const prometheusSecurityContext =\n fields.configure.prometheusSecurityContext;\n const kesSecurityContext = fields.encryption.kesSecurityContext;\n const kesReplicas = fields.encryption.replicas;\n\n if (addSending) {\n const poolName = generatePoolName([]);\n\n let affinityObject = {};\n\n switch (affinityType) {\n case \"default\":\n affinityObject = {\n affinity: getDefaultAffinity(tenantName, poolName),\n };\n break;\n case \"nodeSelector\":\n affinityObject = {\n affinity: getNodeSelector(\n nodeSelectorLabels,\n withPodAntiAffinity,\n tenantName,\n poolName\n ),\n };\n break;\n }\n\n const erasureCode = ecParity.split(\":\")[1];\n\n let dataSend: ITenantCreator = {\n name: tenantName,\n namespace: namespace,\n access_key: \"\",\n secret_key: \"\",\n access_keys: [],\n secret_keys: [],\n enable_tls: enableTLS && enableAutoCert,\n enable_console: true,\n enable_prometheus: true,\n service_name: \"\",\n image: imageName,\n expose_minio: exposeMinIO,\n expose_console: exposeConsole,\n pools: [\n {\n name: poolName,\n servers: distribution.nodes,\n volumes_per_server: distribution.disks,\n volume_configuration: {\n size: distribution.pvSize,\n storage_class_name: selectedStorageClass,\n },\n securityContext: tenantCustom ? tenantSecurityContext : null,\n ...affinityObject,\n },\n ],\n erasureCodingParity: parseInt(erasureCode, 10),\n };\n\n // Set Resources\n if (\n fields.tenantSize.resourcesCPURequest !== \"\" ||\n fields.tenantSize.resourcesCPULimit !== \"\" ||\n fields.tenantSize.resourcesMemoryRequest !== \"\" ||\n fields.tenantSize.resourcesMemoryLimit !== \"\"\n ) {\n dataSend.pools[0].resources = {};\n // requests\n if (\n fields.tenantSize.resourcesCPURequest !== \"\" ||\n fields.tenantSize.resourcesMemoryRequest !== \"\"\n ) {\n dataSend.pools[0].resources.requests = {};\n if (fields.tenantSize.resourcesCPURequest !== \"\") {\n dataSend.pools[0].resources.requests.cpu = parseInt(\n fields.tenantSize.resourcesCPURequest\n );\n }\n if (fields.tenantSize.resourcesMemoryRequest !== \"\") {\n dataSend.pools[0].resources.requests.memory = parseInt(\n getBytes(fields.tenantSize.resourcesMemoryRequest, \"Gi\", true)\n );\n }\n }\n // limits\n if (\n fields.tenantSize.resourcesCPULimit !== \"\" ||\n fields.tenantSize.resourcesMemoryLimit !== \"\"\n ) {\n dataSend.pools[0].resources.limits = {};\n if (fields.tenantSize.resourcesCPULimit !== \"\") {\n dataSend.pools[0].resources.limits.cpu = parseInt(\n fields.tenantSize.resourcesCPULimit\n );\n }\n if (fields.tenantSize.resourcesMemoryLimit !== \"\") {\n dataSend.pools[0].resources.limits.memory = parseInt(\n getBytes(fields.tenantSize.resourcesMemoryLimit, \"Gi\", true)\n );\n }\n }\n }\n if (customDockerhub) {\n dataSend = {\n ...dataSend,\n image_registry: {\n registry: imageRegistry,\n username: imageRegistryUsername,\n password: imageRegistryPassword,\n },\n };\n }\n\n if (logSearchCustom) {\n dataSend = {\n ...dataSend,\n logSearchConfiguration: {\n storageClass:\n logSearchSelectedStorageClass === \"default\"\n ? \"\"\n : logSearchSelectedStorageClass,\n storageSize: parseInt(logSearchVolumeSize),\n image: logSearchImage,\n postgres_image: logSearchPostgresImage,\n postgres_init_image: logSearchPostgresInitImage,\n securityContext: logSearchSecurityContext,\n postgres_securityContext: logSearchPostgresSecurityContext,\n },\n };\n } else {\n dataSend = {\n ...dataSend,\n logSearchConfiguration: {\n image: logSearchImage,\n postgres_image: logSearchPostgresImage,\n postgres_init_image: logSearchPostgresInitImage,\n },\n };\n }\n\n if (prometheusCustom) {\n dataSend = {\n ...dataSend,\n prometheusConfiguration: {\n storageClass:\n prometheusSelectedStorageClass === \"default\"\n ? \"\"\n : prometheusSelectedStorageClass,\n storageSize: parseInt(prometheusVolumeSize),\n image: prometheusImage,\n sidecar_image: prometheusSidecarImage,\n init_image: prometheusInitImage,\n securityContext: prometheusSecurityContext,\n },\n };\n } else {\n dataSend = {\n ...dataSend,\n prometheusConfiguration: {\n image: prometheusImage,\n sidecar_image: prometheusSidecarImage,\n init_image: prometheusInitImage,\n },\n };\n }\n\n let tenantCerts: any = null;\n let consoleCerts: any = null;\n let caCerts: any = null;\n let consoleCaCerts: any = null;\n\n if (caCertificates.length > 0) {\n caCerts = {\n ca_certificates: caCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((keyPair) => keyPair),\n };\n }\n\n if (consoleCaCertificates.length > 0) {\n consoleCaCerts = {\n console_ca_certificates: consoleCaCertificates\n .map((keyPair: KeyPair) => keyPair.encoded_cert)\n .filter((keyPair) => keyPair),\n };\n }\n\n if (enableTLS && minioCertificates.length > 0) {\n tenantCerts = {\n minio: minioCertificates\n .map((keyPair: KeyPair) => ({\n crt: keyPair.encoded_cert,\n key: keyPair.encoded_key,\n }))\n .filter((keyPair) => keyPair.crt && keyPair.key),\n };\n }\n\n if (\n enableTLS &&\n consoleCertificate.encoded_cert !== \"\" &&\n consoleCertificate.encoded_key !== \"\"\n ) {\n consoleCerts = {\n console: {\n crt: consoleCertificate.encoded_cert,\n key: consoleCertificate.encoded_key,\n },\n };\n }\n\n if (tenantCerts || consoleCerts || caCerts || consoleCaCerts) {\n dataSend = {\n ...dataSend,\n tls: {\n ...tenantCerts,\n ...consoleCerts,\n ...caCerts,\n ...consoleCaCerts,\n },\n };\n }\n\n if (enableEncryption) {\n let insertEncrypt = {};\n\n switch (encryptionType) {\n case \"gemalto\":\n let gemaltoCAIntroduce = {};\n\n if (gemaltoCA.encoded_cert !== \"\") {\n gemaltoCAIntroduce = {\n ca: gemaltoCA.encoded_cert,\n };\n }\n insertEncrypt = {\n gemalto: {\n keysecure: {\n endpoint: gemaltoEndpoint,\n credentials: {\n token: gemaltoToken,\n domain: gemaltoDomain,\n retry: parseInt(gemaltoRetry),\n },\n tls: {\n ...gemaltoCAIntroduce,\n },\n },\n },\n };\n break;\n case \"aws\":\n insertEncrypt = {\n aws: {\n secretsmanager: {\n endpoint: awsEndpoint,\n region: awsRegion,\n kmskey: awsKMSKey,\n credentials: {\n accesskey: awsAccessKey,\n secretkey: awsSecretKey,\n token: awsToken,\n },\n },\n },\n };\n break;\n case \"azure\":\n insertEncrypt = {\n azure: {\n keyvault: {\n endpoint: azureEndpoint,\n credentials: {\n tenant_id: azureTenantID,\n client_id: azureClientID,\n client_secret: azureClientSecret,\n },\n },\n },\n };\n break;\n case \"gcp\":\n insertEncrypt = {\n gcp: {\n secretmanager: {\n project_id: gcpProjectID,\n endpoint: gcpEndpoint,\n credentials: {\n client_email: gcpClientEmail,\n client_id: gcpClientID,\n private_key_id: gcpPrivateKeyID,\n private_key: gcpPrivateKey,\n },\n },\n },\n };\n break;\n case \"vault\":\n let vaultKeyPair = null;\n let vaultCAInsert = null;\n if (\n vaultCertificate.encoded_key !== \"\" &&\n vaultCertificate.encoded_cert !== \"\"\n ) {\n vaultKeyPair = {\n key: vaultCertificate.encoded_key,\n crt: vaultCertificate.encoded_cert,\n };\n }\n if (vaultCA.encoded_cert !== \"\") {\n vaultCAInsert = {\n ca: vaultCA.encoded_cert,\n };\n }\n let vaultTLS = null;\n if (vaultKeyPair || vaultCA) {\n vaultTLS = {\n tls: {\n ...vaultKeyPair,\n ...vaultCAInsert,\n },\n };\n }\n insertEncrypt = {\n vault: {\n endpoint: vaultEndpoint,\n engine: vaultEngine,\n namespace: vaultNamespace,\n prefix: vaultPrefix,\n approle: {\n engine: vaultAppRoleEngine,\n id: vaultId,\n secret: vaultSecret,\n retry: parseInt(vaultRetry),\n },\n ...vaultTLS,\n status: {\n ping: parseInt(vaultPing),\n },\n },\n };\n break;\n }\n\n let encryptionServerKeyPair: any = {};\n let encryptionClientKeyPair: any = {};\n\n if (\n clientCertificate.encoded_key !== \"\" &&\n clientCertificate.encoded_cert !== \"\"\n ) {\n encryptionClientKeyPair = {\n client: {\n key: clientCertificate.encoded_key,\n crt: clientCertificate.encoded_cert,\n },\n };\n }\n\n if (\n serverCertificate.encoded_key !== \"\" &&\n serverCertificate.encoded_cert !== \"\"\n ) {\n encryptionServerKeyPair = {\n server: {\n key: serverCertificate.encoded_key,\n crt: serverCertificate.encoded_cert,\n },\n };\n }\n\n dataSend = {\n ...dataSend,\n encryption: {\n replicas: kesReplicas,\n securityContext: kesSecurityContext,\n image: kesImage,\n ...encryptionClientKeyPair,\n ...encryptionServerKeyPair,\n ...insertEncrypt,\n },\n };\n }\n\n let dataIDP: any = {};\n switch (idpSelection) {\n case \"Built-in\":\n let keyarray = [];\n for (let i = 0; i < accessKeys.length; i++) {\n keyarray.push({\n access_key: accessKeys[i],\n secret_key: secretKeys[i],\n });\n }\n dataIDP = {\n keys: keyarray,\n };\n break;\n case \"OpenID\":\n dataIDP = {\n oidc: {\n configuration_url: openIDConfigurationURL,\n client_id: openIDClientID,\n secret_id: openIDSecretID,\n claim_name: openIDClaimName,\n callback_url: openIDCallbackURL,\n scopes: openIDScopes,\n },\n };\n break;\n case \"AD\":\n dataIDP = {\n active_directory: {\n url: ADURL,\n skip_tls_verification: ADSkipTLS,\n server_insecure: ADServerInsecure,\n username_format: ADUserNameFormat,\n username_search_filter: ADUserNameSearchFilter,\n group_search_base_dn: ADGroupSearchBaseDN,\n group_search_filter: ADGroupSearchFilter,\n group_name_attribute: ADGroupNameAttribute,\n user_dns: ADUserDNs,\n lookup_bind_dn: ADLookupBindDN,\n lookup_bind_password: ADLookupBindPassword,\n user_dn_search_base_dn: ADUserDNSearchBaseDN,\n user_dn_search_filter: ADUserDNSearchFilter,\n server_start_tls: ADServerStartTLS,\n },\n };\n break;\n }\n\n dataSend = {\n ...dataSend,\n idp: { ...dataIDP },\n };\n api\n .invoke(\"POST\", `/api/v1/tenants`, dataSend)\n .then((res) => {\n const consoleSAList = get(res, \"console\", []);\n\n let newSrvAcc: NewServiceAccount = {\n idp: get(res, \"externalIDP\", false),\n console: [],\n };\n\n if (consoleSAList) {\n if (Array.isArray(consoleSAList)) {\n const consoleItem = consoleSAList.map((consoleKey) => {\n return {\n accessKey: consoleKey.access_key,\n secretKey: consoleKey.secret_key,\n api: \"s3v4\",\n path: \"auto\",\n url: consoleKey.url,\n };\n });\n\n newSrvAcc.console = consoleItem;\n } else {\n newSrvAcc = {\n console: {\n accessKey: res.console.access_key,\n secretKey: res.console.secret_key,\n url: res.console.url,\n },\n };\n }\n }\n setAddSending(false);\n setShowNewCredentials(true);\n setCreatedAccount(newSrvAcc);\n })\n .catch((err: ErrorResponseHandler) => {\n setAddSending(false);\n setErrorSnackMessage(err);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [addSending]);\n\n const cancelButton = {\n label: \"Cancel\",\n type: \"other\",\n enabled: true,\n action: () => {\n resetAddTenantForm();\n history.push(\"/tenants\");\n },\n };\n const requiredPages = [\n \"nameTenant\",\n \"tenantSize\",\n \"configure\",\n \"affinity\",\n \"identityProvider\",\n \"security\",\n \"encryption\",\n ];\n const createButton = {\n label: \"Create\",\n type: \"submit\",\n enabled:\n !addSending &&\n selectedStorageClass !== \"\" &&\n requiredPages.every((v) => validPages.includes(v)),\n action: () => {\n setAddSending(true);\n },\n };\n\n const wizardSteps: IWizardElement[] = [\n {\n label: \"Setup\",\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Configure\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Images\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Pod Placement\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Identity Provider\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Security\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n {\n label: \"Encryption\",\n advancedOnly: true,\n componentRender: ,\n buttons: [cancelButton, createButton],\n },\n ];\n\n let filteredWizardSteps = wizardSteps;\n\n const closeCredentialsModal = () => {\n resetAddTenantForm();\n history.push(\"/tenants\");\n };\n\n return (\n \n {showNewCredentials && (\n {\n closeCredentialsModal();\n }}\n entity=\"Tenant\"\n />\n )}\n \n \n \n {addSending && (\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n namespace: state.tenants.createTenant.fields.nameTenant.namespace,\n validPages: state.tenants.createTenant.validPages,\n fields: state.tenants.createTenant.fields,\n certificates: state.tenants.createTenant.certificates,\n selectedStorageClass:\n state.tenants.createTenant.fields.nameTenant.selectedStorageClass,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n updateAddField,\n resetAddTenantForm,\n});\n\nexport default withStyles(styles)(connector(AddTenant));\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 get from \"lodash/get\";\nimport { ITenant } from \"./types\";\n\nexport interface Opts {\n label: string;\n value: string;\n}\n\nexport interface IQuotaElement {\n hard: number;\n name: string;\n}\n\nexport interface IQuotas {\n elements?: IQuotaElement[];\n name: string;\n}\n\nexport const minMemReq = 2147483648;\n\nexport interface KeyPair {\n id: string;\n encoded_cert: string;\n encoded_key: string;\n cert: string;\n key: string;\n}\n\nexport const ecListTransform = (ecList: string[]): Opts[] => {\n return ecList.map((value) => {\n return { label: value, value };\n });\n};\n\nexport const getLimitSizes = (resourceQuotas: IQuotas) => {\n const quotas: IQuotaElement[] = get(resourceQuotas, \"elements\", []);\n\n const returnQuotas: any = {};\n\n quotas.forEach((rsQuota) => {\n const stCName = rsQuota.name.split(\n \".storageclass.storage.k8s.io/requests.storage\"\n )[0];\n const hard = get(rsQuota, \"hard\", 0);\n const used = get(rsQuota, \"used\", 0);\n\n returnQuotas[stCName] = hard - used;\n });\n\n return returnQuotas;\n};\n\nexport const tenantIsOnline = (tenant: ITenant): boolean => {\n if (tenant.currentState === \"\") {\n return false;\n }\n if (\n !tenant.status &&\n tenant.health_status !== \"green\" &&\n tenant.health_status !== \"yellow\"\n ) {\n return false;\n }\n if (\n tenant.status &&\n tenant.status.health_status !== \"green\" &&\n tenant.status.health_status !== \"yellow\"\n ) {\n return false;\n }\n return true;\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 .\nimport { IAffinityModel } from \"../../../../common/types\";\n\nexport const getDefaultAffinity = (tenantName: string, poolName: string) => {\n const defaultAffinity: IAffinityModel = {\n podAntiAffinity: {\n requiredDuringSchedulingIgnoredDuringExecution: [\n {\n labelSelector: {\n matchExpressions: [\n {\n key: \"v1.min.io/tenant\",\n operator: \"In\",\n values: [tenantName],\n },\n {\n key: \"v1.min.io/pool\",\n operator: \"In\",\n values: [poolName],\n },\n ],\n },\n topologyKey: \"kubernetes.io/hostname\",\n },\n ],\n },\n };\n return defaultAffinity;\n};\n\nexport const getNodeSelector = (\n labels: string,\n withPodAntiAffinity: boolean,\n tenantName: string,\n poolName: string\n) => {\n // Labels in the form of key1=value1&key2=value2&key3=value3...\n const splittedLabels = labels.split(\"&\");\n let matchExpressions: any = [];\n\n splittedLabels.forEach((label: string) => {\n const splitKeyValue = label.split(\"=\");\n if (splitKeyValue.length === 2) {\n matchExpressions.push({\n key: splitKeyValue[0],\n operator: \"In\",\n values: [splitKeyValue[1]],\n });\n }\n });\n\n const nodeSelector: IAffinityModel = {\n nodeAffinity: {\n requiredDuringSchedulingIgnoredDuringExecution: {\n nodeSelectorTerms: [\n {\n matchExpressions: matchExpressions,\n },\n ],\n },\n },\n };\n if (withPodAntiAffinity) {\n const def = getDefaultAffinity(tenantName, poolName);\n nodeSelector.podAntiAffinity = def.podAntiAffinity;\n }\n console.log(nodeSelector);\n return nodeSelector;\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 { ITenant } from \"./ListTenants/types\";\nimport { Opts } from \"./ListTenants/utils\";\nimport {\n ADD_TENANT_ADD_CA_KEYPAIR,\n ADD_TENANT_ADD_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_ADD_CONSOLE_CERT,\n ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR,\n ADD_TENANT_ADD_FILE_TO_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR,\n ADD_TENANT_ADD_MINIO_KEYPAIR,\n ADD_TENANT_DELETE_CA_KEYPAIR,\n ADD_TENANT_DELETE_CONSOLE_CA_KEYPAIR,\n ADD_TENANT_DELETE_MINIO_KEYPAIR,\n ADD_TENANT_ENCRYPTION_CLIENT_CERT,\n ADD_TENANT_ENCRYPTION_GEMALTO_CA,\n ADD_TENANT_ENCRYPTION_SERVER_CERT,\n ADD_TENANT_ENCRYPTION_VAULT_CA,\n ADD_TENANT_ENCRYPTION_VAULT_CERT,\n ADD_TENANT_RESET_FORM,\n ADD_TENANT_SET_CURRENT_PAGE,\n ADD_TENANT_SET_LIMIT_SIZE,\n ADD_TENANT_SET_PAGE_VALID,\n ADD_TENANT_SET_STORAGE_CLASSES_LIST,\n ADD_TENANT_UPDATE_FIELD,\n TENANT_DETAILS_SET_CURRENT_TENANT,\n TENANT_DETAILS_SET_LOADING,\n TENANT_DETAILS_SET_TAB,\n TENANT_DETAILS_SET_TENANT,\n ADD_TENANT_SET_KEY_PAIR_VALUE,\n LabelKeyPair,\n} from \"./types\";\n\n// Basic actions\nexport const setWizardPage = (page: number) => {\n return {\n type: ADD_TENANT_SET_CURRENT_PAGE,\n page,\n };\n};\n\nexport const updateAddField = (\n pageName: string,\n fieldName: string,\n value: any\n) => {\n return {\n type: ADD_TENANT_UPDATE_FIELD,\n pageName,\n field: fieldName,\n value,\n };\n};\n\nexport const isPageValid = (pageName: string, valid: boolean) => {\n return {\n type: ADD_TENANT_SET_PAGE_VALID,\n pageName,\n valid,\n };\n};\n\n// Name Tenant actions\n\nexport const setStorageClassesList = (storageClasses: Opts[]) => {\n return {\n type: ADD_TENANT_SET_STORAGE_CLASSES_LIST,\n storageClasses,\n };\n};\n\nexport const setLimitSize = (limitSize: any) => {\n return {\n type: ADD_TENANT_SET_LIMIT_SIZE,\n limitSize,\n };\n};\n\n// Security actions\n\nexport const addCaCertificate = () => {\n return {\n type: ADD_TENANT_ADD_CA_KEYPAIR,\n };\n};\n\nexport const deleteCaCertificate = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_CA_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToCaCertificates = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addConsoleCaCertificate = () => {\n return {\n type: ADD_TENANT_ADD_CONSOLE_CA_KEYPAIR,\n };\n};\n\nexport const deleteConsoleCaCertificate = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_CONSOLE_CA_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToConsoleCaCertificates = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_CONSOLE_CA_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addKeyPair = () => {\n return {\n type: ADD_TENANT_ADD_MINIO_KEYPAIR,\n };\n};\n\nexport const deleteKeyPair = (id: string) => {\n return {\n type: ADD_TENANT_DELETE_MINIO_KEYPAIR,\n id,\n };\n};\n\nexport const addFileToKeyPair = (\n id: string,\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR,\n id,\n key,\n fileName,\n value,\n };\n};\n\nexport const addConsoleCertificate = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ADD_CONSOLE_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileServerCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_SERVER_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileClientCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_CLIENT_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileVaultCert = (\n key: string,\n fileName: string,\n value: string\n) => {\n return {\n type: ADD_TENANT_ENCRYPTION_VAULT_CERT,\n key,\n fileName,\n value,\n };\n};\n\nexport const addFileVaultCa = (fileName: string, value: string) => {\n return {\n type: ADD_TENANT_ENCRYPTION_VAULT_CA,\n fileName,\n value,\n };\n};\n\nexport const addFileGemaltoCa = (fileName: string, value: string) => {\n return {\n type: ADD_TENANT_ENCRYPTION_GEMALTO_CA,\n fileName,\n value,\n };\n};\n\nexport const resetAddTenantForm = () => {\n return {\n type: ADD_TENANT_RESET_FORM,\n };\n};\n\nexport const setTenantDetailsLoad = (loading: boolean) => {\n return {\n type: TENANT_DETAILS_SET_LOADING,\n state: loading,\n };\n};\n\nexport const setTenantName = (tenantName: string, tenantNamespace: string) => {\n return {\n type: TENANT_DETAILS_SET_CURRENT_TENANT,\n name: tenantName,\n namespace: tenantNamespace,\n };\n};\n\nexport const setTenantInfo = (tenant: ITenant | null) => {\n return {\n type: TENANT_DETAILS_SET_TENANT,\n tenant,\n };\n};\n\nexport const setTenantTab = (tab: string) => {\n return {\n type: TENANT_DETAILS_SET_TAB,\n tab,\n };\n};\n\nexport const setKeyValuePairs = (newArray: LabelKeyPair[]) => {\n return {\n type: ADD_TENANT_SET_KEY_PAIR_VALUE,\n newArray,\n };\n};\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n"],"names":["withStyles","theme","createStyles","link","display","alignItems","textDecoration","maxWidth","padding","color","palette","primary","light","fontSize","icon","marginRight","justifyContent","width","to","label","classes","className","executeOnClick","onClick","container","flexFlow","inputWithCopy","background","height","inputLabel","fieldBasic","value","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onMouseDown","edge","warningBlock","margin","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","id","variant","consoleExtras","cCreds","itemMap","url","access_key","secret_key","api","path","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon","tooltipHelper","valueString","whiteSpace","overflow","textOverflow","fileInputField","fileInputStyles","textBoxContainer","border","paddingLeft","onChange","name","disabled","required","error","accept","useState","showFileSelector","setShowSelector","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","placement","HelpIcon","type","e","fileName","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","component","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","pageContentStyles","children","contentSpacer","IMkEnvs","connector","connect","state","storageClasses","tenants","createTenant","customImage","fields","configure","imageName","customDockerhub","imageRegistry","imageRegistryUsername","imageRegistryPassword","exposeMinIO","exposeConsole","prometheusCustom","tenantCustom","logSearchCustom","logSearchVolumeSize","logSearchSizeFactor","prometheusVolumeSize","prometheusSizeFactor","logSearchSelectedStorageClass","logSearchImage","kesImage","logSearchPostgresImage","logSearchPostgresInitImage","prometheusSelectedStorageClass","prometheusImage","prometheusSidecarImage","prometheusInitImage","selectedStorageClass","nameTenant","tenantSecurityContext","logSearchSecurityContext","logSearchPostgresSecurityContext","prometheusSecurityContext","updateAddField","isPageValid","configSectionItem","tenantCustomizationFields","marginLeft","containerItem","fieldGroup","createTenantCommon","paddingTop","marginBottom","responsiveSectionItem","logSearchCustomFields","fieldSpaceTop","prometheusCustomFields","modalBasic","wizardCommon","validationErrors","setValidationErrors","configureSTClasses","updateField","useCallback","field","useEffect","customAccountValidation","fieldKey","runAsUser","customValidation","parseInt","customValidationMessage","runAsGroup","fsGroup","pattern","customPatternMessage","commonVal","commonFormValidation","Object","keys","filter","cleanValidation","fieldName","clearValidationError","Paper","paperWrapper","headerElement","h3Section","descriptionText","FormSwitchWrapper","checked","multiContainer","InputBoxWrapper","min","runAsNonRoot","SelectWrapper","options","overlayObject","InputUnitMenu","onUnitChange","unitSelected","unitsList","idpSelection","identityProvider","accessKeys","secretKeys","openIDConfigurationURL","openIDClientID","openIDSecretID","openIDCallbackURL","openIDClaimName","openIDScopes","ADURL","ADSkipTLS","ADServerInsecure","ADUserNameSearchFilter","ADGroupSearchBaseDN","ADGroupSearchFilter","ADGroupNameAttribute","ADUserDNs","ADUserNameFormat","ADLookupBindDN","ADLookupBindPassword","ADUserDNSearchBaseDN","ADUserDNSearchFilter","ADServerStartTLS","shortened","gridTemplateColumns","gridGap","buttonTray","overlayAction","protocolRadioOptions","adUserDnRows","formFieldStyles","updateUserField","newUserField","updatePwordField","updateADUserField","newADUserDNsField","customIDPValidation","i","push","inputs","_","Fragment","placeholder","Add","splice","RemoveIcon","getRandomString","Casino","Delete","RadioGroupSelector","currentSelection","selectorOptions","formFieldRow","Typography","gutterBottom","enableTLS","security","enableAutoCert","enableCustomCerts","minioCertificates","certificates","caCertificates","addFileToCaCertificates","deleteCaCertificate","addCaCertificate","addKeyPair","addFileToKeyPair","deleteKeyPair","minioCertificateRows","borderBottom","flex","fileItem","minWidth","minioCertsContainer","minioCACertsRow","rowActions","keyPair","FileSelector","encodedValue","cert","key","AddIcon","replicas","encryption","enableEncryption","encryptionType","gemaltoEndpoint","gemaltoToken","gemaltoDomain","gemaltoRetry","awsEndpoint","awsRegion","awsKMSKey","awsAccessKey","awsSecretKey","awsToken","vaultEndpoint","vaultEngine","vaultNamespace","vaultPrefix","vaultAppRoleEngine","vaultId","vaultSecret","vaultRetry","vaultPing","azureEndpoint","azureTenantID","azureClientID","azureClientSecret","gcpProjectID","gcpEndpoint","gcpClientEmail","gcpClientID","gcpPrivateKeyID","gcpPrivateKey","enableCustomCertsForKES","serverCertificate","clientCertificate","vaultCertificate","vaultCA","gemaltoCA","kesSecurityContext","addFileServerCert","addFileClientCert","addFileVaultCert","addFileVaultCa","addFileGemaltoCa","encryptionTypeOptions","mutualTlsConfig","rightSpacer","responsiveContainer","encryptionAvailable","encoded_key","encoded_cert","encryptionValidation","podAffinity","affinity","nodeSelectorLabels","withPodAntiAffinity","keyValuePairs","nodeSelectorPairs","setModalErrorSnackMessage","setKeyValuePairs","affinityConfigField","affinityFieldLabel","radioField","affinityLabelKey","affinityLabelValue","affinityRow","loading","setLoading","keyValueMap","setKeyValueMap","keyOptions","setKeyOptions","then","res","k","catch","err","vl","kvp","kvs","a","indexOf","join","valid","splittedLabels","forEach","splitItem","affinityHelpText","newKey","arrCp","assign","v","mapDispatchToProps","setErrorSnackMessage","wrapText","wordWrap","deleteDialogStyles","namespace","addNamespaceOpen","closeAddNamespaceModalAndRefresh","addNamespaceLoading","setAddNamespaceLoading","ConfirmDialog","confirmText","confirmButtonProps","isOpen","isLoading","onConfirm","confirmationContent","LinearProgress","DialogContentText","volumeSize","tenantSize","sizeFactor","drivesPerServer","nodes","memoryNode","resourcesMemoryRequest","ecParity","ecParityChoices","cleanECChoices","resourcesSize","distribution","ecParityCalc","limitSize","cpuToUse","resourcesCPURequest","integrationSelection","root","table","usableInformation","storageFactors","find","erasureCode","Divider","Table","TableBody","TableRow","TableCell","scope","align","typeSelection","storageClass","disks","niceBytes","pvSize","persistentVolumes","rawCapacity","maxCapacity","Math","floor","maxFailureTolerations","CPU","memory","driveSize","sizeUnit","maxAllocatableResources","maxCPUsUse","maxMemorySize","resourcesSpecifyLimit","resourcesCPURequestError","resourcesCPULimitError","resourcesCPULimit","resourcesMemoryRequestError","resourcesMemoryLimitError","resourcesMemoryLimit","compositeFieldContainer","compositeAddOn","memoryExists","cpuExists","maxMemory","mem_priority","max_allocatable_mem","cpu_priority","max_allocatable_cpu","maxAllocatableCPU","baseCpuUse","max","baseMemoryUse","isNaN","validity","log","errorFlag","setErrorFlag","nodeError","setNodeError","ecCodeValidated","erasureCodeCalc","includes","defaultEC","factor","getBytes","clusterCapacity","unit","distrCalculate","calculateDistribution","parsedSize","commonValidation","trim","ecList","ecListTransform","newValue","k8sScalarUnitsExcluding","selectedStorageType","formToRender","updateMainField","undefined","setConfigs","mkPanelConfigurations","mainSelection","resourcesConfigurations","aws","azure","gcp","variantSelectorLabel","variantSelectorValues","configurations","sizingComponent","default","tenantName","setStorageClassesList","setLimitSize","sizePreview","emptyNamespace","setEmptyNamespace","loadingNamespaceInfo","setLoadingNamespaceInfo","showCreateButton","setShowCreateButton","openAddNSConfirm","setOpenAddNSConfirm","getNamespaceInformation","tenantsList","elements","getLimitSizes","newStorage","stExists","findIndex","detailedError","debounceNamespace","useMemo","debounce","cancel","customNamespaceError","isValid","frmValidationCleanup","refresh","md","sx","minHeight","overlayIcon","features","session","formRender","setFormRender","setConfiguration","validPages","resetAddTenantForm","pageBox","settingsCommon","showNewCredentials","setShowNewCredentials","createdAccount","setCreatedAccount","addSending","setAddSending","consoleCaCertificates","consoleCertificate","affinityType","kesReplicas","poolName","generatePoolName","affinityObject","getDefaultAffinity","getNodeSelector","dataSend","access_keys","secret_keys","enable_tls","enable_console","enable_prometheus","service_name","image","expose_minio","expose_console","pools","servers","volumes_per_server","volume_configuration","storage_class_name","securityContext","erasureCodingParity","resources","requests","cpu","limits","image_registry","registry","username","password","logSearchConfiguration","storageSize","postgres_image","postgres_init_image","postgres_securityContext","prometheusConfiguration","sidecar_image","init_image","tenantCerts","consoleCerts","caCerts","consoleCaCerts","ca_certificates","console_ca_certificates","minio","crt","tls","insertEncrypt","gemaltoCAIntroduce","ca","gemalto","keysecure","endpoint","credentials","token","domain","retry","secretsmanager","region","kmskey","accesskey","secretkey","keyvault","tenant_id","client_id","client_secret","secretmanager","project_id","client_email","private_key_id","private_key","vaultKeyPair","vaultCAInsert","vaultTLS","vault","engine","prefix","approle","secret","status","ping","encryptionServerKeyPair","encryptionClientKeyPair","client","server","dataIDP","keyarray","oidc","configuration_url","secret_id","claim_name","callback_url","scopes","active_directory","skip_tls_verification","server_insecure","username_format","username_search_filter","group_search_base_dn","group_search_filter","group_name_attribute","user_dns","lookup_bind_dn","lookup_bind_password","user_dn_search_base_dn","user_dn_search_filter","server_start_tls","consoleSAList","newSrvAcc","consoleItem","consoleKey","cancelButton","enabled","action","history","createButton","every","filteredWizardSteps","componentRender","buttons","advancedOnly","CredentialsPrompt","PageHeader","BackLink","PageLayout","GenericWizard","wizardSteps","resourceQuotas","quotas","returnQuotas","rsQuota","stCName","hard","used","tenantIsOnline","tenant","currentState","health_status","podAntiAffinity","requiredDuringSchedulingIgnoredDuringExecution","labelSelector","matchExpressions","operator","values","topologyKey","labels","splitKeyValue","nodeSelector","nodeAffinity","nodeSelectorTerms","def","pageName","ADD_TENANT_UPDATE_FIELD","ADD_TENANT_SET_PAGE_VALID","ADD_TENANT_SET_STORAGE_CLASSES_LIST","ADD_TENANT_SET_LIMIT_SIZE","ADD_TENANT_ADD_CA_KEYPAIR","ADD_TENANT_DELETE_CA_KEYPAIR","ADD_TENANT_ADD_FILE_TO_CA_KEYPAIR","ADD_TENANT_ADD_MINIO_KEYPAIR","ADD_TENANT_DELETE_MINIO_KEYPAIR","ADD_TENANT_ADD_FILE_TO_MINIO_KEYPAIR","ADD_TENANT_ENCRYPTION_SERVER_CERT","ADD_TENANT_ENCRYPTION_CLIENT_CERT","ADD_TENANT_ENCRYPTION_VAULT_CERT","ADD_TENANT_ENCRYPTION_VAULT_CA","ADD_TENANT_ENCRYPTION_GEMALTO_CA","ADD_TENANT_RESET_FORM","setTenantDetailsLoad","TENANT_DETAILS_SET_LOADING","setTenantName","tenantNamespace","TENANT_DETAILS_SET_CURRENT_TENANT","setTenantInfo","TENANT_DETAILS_SET_TENANT","setTenantTab","tab","TENANT_DETAILS_SET_TAB","newArray","ADD_TENANT_SET_KEY_PAIR_VALUE","errorBlock","main","withBreak"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1056.40bdeca6.chunk.js b/portal-ui/build/static/js/1056.40bdeca6.chunk.js
deleted file mode 100644
index e9618ab07..000000000
--- a/portal-ui/build/static/js/1056.40bdeca6.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1056,1140],{29316:function(e,t,n){n(50390);var r=n(6369),a=n(86509),s=n(4285),i=n(98280),o=n(62559);t.Z=(0,s.Z)((function(e){return(0,a.Z)({link:{display:"flex",alignItems:"center",textDecoration:"none",maxWidth:"300px",padding:"2rem 2rem 0rem 2rem",color:e.palette.primary.light,fontSize:".8rem","&:hover":{textDecoration:"underline"}},icon:{marginRight:".3rem",display:"flex",alignItems:"center",justifyContent:"center","& svg.min-icon":{width:12}}})}))((function(e){var t=e.to,n=e.label,a=e.classes,s=e.className,l=e.executeOnClick;return(0,o.jsxs)(r.rU,{to:t,className:"".concat(a.link," ").concat(s||""),onClick:function(){l&&l()},children:[(0,o.jsx)("div",{className:a.icon,children:(0,o.jsx)(i.xN,{})}),(0,o.jsx)("div",{className:a.label,children:n})]})}))},39080:function(e,t,n){n.r(t),n.d(t,{default:function(){return _}});var r=n(18489),a=n(35531),s=n(50390),i=n(38342),o=n.n(i),l=n(86509),c=n(4285),u=n(66946),d=n(76352),m=n(25594),g=n(58217),p=n(65771),f=n(70758),h=n(33034),x=n.n(h),v=n(98280),y=n(72462),S=n(62559),C=(0,c.Z)((function(e){return(0,l.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,r.Z)((0,r.Z)({},y.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var t=e.label,n=void 0===t?"":t,r=e.value,a=void 0===r?"":r,s=e.classes,i=void 0===s?{}:s;return(0,S.jsxs)("div",{className:i.container,children:[(0,S.jsxs)("div",{className:i.inputLabel,children:[n,":"]}),(0,S.jsx)("div",{className:i.inputWithCopy,children:(0,S.jsx)(g.Z,{value:a,readOnly:!0,endAdornment:(0,S.jsx)(p.Z,{position:"end",children:(0,S.jsx)(x(),{text:a,children:(0,S.jsx)(f.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,S.jsx)(v.TI,{})})})})})})]})})),j=n(47424),_=(0,c.Z)((function(e){return(0,l.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var t=e.classes,n=e.newServiceAccount,i=e.open,l=e.closeModal,c=e.entity;if(!n)return null;var g=o()(n,"console",null),p=o()(n,"idp",!1);return(0,S.jsx)(d.Z,{modalOpen:i,onClose:function(){l()},title:(0,S.jsx)("div",{className:t.promptTitle,children:(0,S.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,S.jsx)(v.tV,{}),children:(0,S.jsxs)(m.ZP,{container:!0,children:[(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.formScrollable,children:["A new ",c," has been created with the following details:",!p&&g&&(0,S.jsx)(s.Fragment,{children:(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.credentialsPanel,children:[(0,S.jsx)("div",{className:t.credentialTitle,children:"Console Credentials"}),Array.isArray(g)&&g.map((function(e,t){return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(C,{label:"Access Key",value:e.accessKey}),(0,S.jsx)(C,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(g)&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(C,{label:"Access Key",value:g.accessKey}),(0,S.jsx)(C,{label:"Secret Key",value:g.secretKey})]})]})}),p?(0,S.jsx)("div",{className:t.warningBlock,children:"Please Login via the configured external identity provider."}):(0,S.jsxs)("div",{className:t.warningBlock,children:[(0,S.jsx)(j.Z,{}),(0,S.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,S.jsxs)(m.ZP,{item:!0,xs:12,className:t.buttonContainer,children:[(0,S.jsx)(u.Z,{variant:"outlined",className:t.buttonSpacer,onClick:function(){l()},color:"primary",children:"Done"}),!p&&(0,S.jsx)(u.Z,{onClick:function(){var e={};if(g)if(Array.isArray(g)){var t=g.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,a.Z)(t)}}else e={console:[{url:g.url,access_key:g.accessKey,secret_key:g.secretKey,api:"s3v4",path:"auto"}]};!function(e,t){var n=document.createElement("a");n.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(t)),n.setAttribute("download",e),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}("credentials.json",JSON.stringify((0,r.Z)({},e)))},endIcon:(0,S.jsx)(v._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))},82461:function(e,t,n){n.d(t,{Z:function(){return S}});var r=n(23430),a=n(18489),s=n(50390),i=n(38342),o=n.n(i),l=n(25594),c=n(36554),u=n(94187),d=n(95467),m=n(46529),g=n(94258),p=n(86509),f=n(4285),h=n(72462),x=n(97538),v=n(82981),y=n(62559),S=(0,f.Z)((function(e){return(0,p.Z)((0,a.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,a.Z)((0,a.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,a.Z)((0,a.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var t=e.label,n=e.classes,a=e.onChange,i=e.id,p=e.name,f=e.disabled,h=void 0!==f&&f,S=e.tooltip,C=void 0===S?"":S,j=e.required,_=e.error,Z=void 0===_?"":_,b=e.accept,P=void 0===b?"":b,N=e.value,I=void 0===N?"":N,A=(0,s.useState)(!1),T=(0,r.Z)(A,2),k=T[0],R=T[1];return(0,y.jsx)(s.Fragment,{children:(0,y.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==Z?n.errorInField:""),children:[""!==t&&(0,y.jsxs)(c.Z,{htmlFor:i,className:"".concat(""!==Z?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,y.jsxs)("span",{children:[t,j?"*":""]}),""!==C&&(0,y.jsx)("div",{className:n.tooltipContainer,children:(0,y.jsx)(u.Z,{title:C,placement:"top-start",children:(0,y.jsx)("div",{className:n.tooltip,children:(0,y.jsx)(x.Z,{})})})})]}),k||""===I?(0,y.jsxs)("div",{className:n.textBoxContainer,children:[(0,y.jsx)("input",{type:"file",name:p,onChange:function(e){var t=o()(e,"target.files[0].name","");!function(e,t){var n=e.target.files[0],r=new FileReader;r.readAsDataURL(n),r.onload=function(){var e=r.result;if(e){var n=e.toString().split("base64,");2===n.length&&t(n[1])}}}(e,(function(e){a(e,t)}))},accept:P,required:j,disabled:h,className:n.fileInputField}),""!==I&&(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(g.Z,{})}),""!==Z&&(0,y.jsx)(v.Z,{errorMessage:Z})]}):(0,y.jsxs)("div",{className:n.fileReselect,children:[(0,y.jsx)("div",{className:n.valueString,children:I}),(0,y.jsx)(d.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){R(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,y.jsx)(m.Z,{})})]})]})})}))},25534:function(e,t,n){var r=n(18489),a=(n(50390),n(25594)),s=n(86509),i=n(4285),o=n(72462),l=n(62559);t.Z=(0,i.Z)((function(e){return(0,s.Z)((0,r.Z)({},o.Bw))}))((function(e){var t=e.classes,n=e.className,r=void 0===n?"":n,s=e.children;return(0,l.jsx)("div",{className:t.contentSpacer,children:(0,l.jsx)(a.ZP,{container:!0,children:(0,l.jsx)(a.ZP,{item:!0,xs:12,className:r,children:s})})})}))},1056:function(e,t,n){n.r(t),n.d(t,{default:function(){return ze}});var r,a,s=n(23430),i=n(18489),o=n(50390),l=n(38342),c=n.n(l),u=n(34424),d=n(25594),m=n(81378),g=n(86509),p=n(4285),f=n(72462),h=n(30324),x=n(28948),v=n(76295),y=n(44149),S=n(93127),C=n(39080),j=n(46864),_=n(35531),Z=n(46981),b=n(10369),P=n(84201),N=n(92440),I=n(66964),A=n(67754),T=n(62559),k=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,tenantSecurityContext:e.tenants.createTenant.fields.configure.tenantSecurityContext,logSearchSecurityContext:e.tenants.createTenant.fields.configure.logSearchSecurityContext,logSearchPostgresSecurityContext:e.tenants.createTenant.fields.configure.logSearchPostgresSecurityContext,prometheusSecurityContext:e.tenants.createTenant.fields.configure.prometheusSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO}),R=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({configSectionItem:{marginRight:15,"& .multiContainer":{border:"1px solid red"}},tenantCustomizationFields:{marginLeft:30,width:"88%",margin:"auto"},containerItem:{marginRight:15},fieldGroup:(0,i.Z)((0,i.Z)({},f.QV.fieldGroup),{},{paddingTop:15,marginBottom:25}),responsiveSectionItem:{"@media (max-width: 900px)":{flexFlow:"column",alignItems:"flex-start","& div > div":{marginBottom:5,marginRight:0}}},logSearchCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"},fieldSpaceTop:{marginTop:15},prometheusCustomFields:{marginLeft:20,padding:10,width:"90%",margin:"auto"}},f.oO),f.AK))}))(k((function(e){var t=e.classes,n=e.storageClasses,r=e.customImage,a=e.imageName,l=e.customDockerhub,c=e.imageRegistry,u=e.imageRegistryUsername,m=e.imageRegistryPassword,g=e.exposeMinIO,p=e.exposeConsole,f=e.prometheusCustom,h=e.tenantCustom,x=e.logSearchCustom,v=e.logSearchVolumeSize,y=(e.logSearchSizeFactor,e.logSearchImage),S=e.kesImage,C=e.logSearchPostgresImage,j=e.logSearchPostgresInitImage,k=e.prometheusVolumeSize,R=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),z=e.prometheusSelectedStorageClass,D=e.prometheusImage,w=e.prometheusSidecarImage,F=e.prometheusInitImage,E=e.updateAddField,U=e.isPageValid,K=e.selectedStorageClass,q=e.tenantSecurityContext,G=e.logSearchSecurityContext,L=e.logSearchPostgresSecurityContext,M=e.prometheusSecurityContext,V=(0,o.useState)({}),O=(0,s.Z)(V,2),B=O[0],$=O[1],W=[{label:"Default",value:"default"}].concat((0,_.Z)(n)),H=(0,o.useCallback)((function(e,t){E("configure",e,t)}),[E]);(0,o.useEffect)((function(){var e=[];h&&(e=[].concat((0,_.Z)(e),[{fieldKey:"tenant_securityContext_runAsUser",required:!0,value:q.runAsUser,customValidation:""===q.runAsUser||parseInt(q.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"tenant_securityContext_runAsGroup",required:!0,value:q.runAsGroup,customValidation:""===q.runAsGroup||parseInt(q.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"tenant_securityContext_fsGroup",required:!0,value:q.fsGroup,customValidation:""===q.fsGroup||parseInt(q.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),f&&(e=[].concat((0,_.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:z,customValidation:""===z,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:k,customValidation:""===k||parseInt(k)<=0,customValidationMessage:"Volume size must be present and be greater than 0"},{fieldKey:"prometheus_securityContext_runAsUser",required:!0,value:M.runAsUser,customValidation:""===M.runAsUser||parseInt(M.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_runAsGroup",required:!0,value:M.runAsGroup,customValidation:""===M.runAsGroup||parseInt(M.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"prometheus_securityContext_fsGroup",required:!0,value:M.fsGroup,customValidation:""===M.fsGroup||parseInt(M.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),x&&(e=[].concat((0,_.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:R,customValidation:""===R,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:v,customValidation:""===v||parseInt(v)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"},{fieldKey:"logSearch_securityContext_runAsUser",required:!0,value:G.runAsUser,customValidation:""===G.runAsUser||parseInt(G.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_runAsGroup",required:!0,value:G.runAsGroup,customValidation:""===G.runAsGroup||parseInt(G.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"logSearch_securityContext_fsGroup",required:!0,value:G.fsGroup,customValidation:""===G.fsGroup||parseInt(G.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsUser",required:!0,value:L.runAsUser,customValidation:""===L.runAsUser||parseInt(L.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"postgres_securityContext_runAsGroup",required:!0,value:M.runAsGroup,customValidation:""===L.runAsGroup||parseInt(L.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"postgres_securityContext_fsGroup",required:!0,value:L.fsGroup,customValidation:""===L.fsGroup||parseInt(L.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}])),r&&(e=[].concat((0,_.Z)(e),[{fieldKey:"image",required:!1,value:a,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:y,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:S,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:C,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:D,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:w,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:F,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),l&&(e=[].concat((0,_.Z)(e),[{fieldKey:"registry",required:!0,value:c},{fieldKey:"registryUsername",required:!0,value:u},{fieldKey:"registryPassword",required:!0,value:m}])));var t=(0,P.R)(e);U("configure",0===Object.keys(t).length),$(t)}),[r,a,y,S,C,j,D,w,F,l,c,u,m,U,f,h,x,z,k,R,v,q,G,L,M]),(0,o.useEffect)((function(){n.length>0&&(0===n.filter((function(e){return e.value===z})).length&&H("prometheusSelectedStorageClass","default"),0===n.filter((function(e){return e.value===R})).length&&H("logSearchSelectedStorageClass","default"))}),[R,z,K,n,H]);var Y=function(e){$((0,b.h)(B,e))};return(0,T.jsxs)(Z.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Configure"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Basic configurations for tenant management"})]}),(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Expose Services"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Whether the tenant's services should request an external IP."})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"expose_minio",id:"expose_minio",name:"expose_minio",checked:g,onChange:function(e){var t=e.target.checked;H("exposeMinIO",t)},label:"Expose MiniO Service"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"expose_console",id:"expose_console",name:"expose_console",checked:p,onChange:function(e){var t=e.target.checked;H("exposeConsole",t)},label:"Expose Console Service"})}),(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Additional Configurations"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Configure SecurityContext, Storage Classes & Storage size for Log Search, Prometheus add-ons and your Tenant"})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"tenantConfig",id:"tenant_configuration",name:"tenant_configuration",checked:h,onChange:function(e){var t=e.target.checked;H("tenantCustom",t)},label:"Override Tenant defaults"})}),h&&(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.tenantCustomizationFields,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for MinIO"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:"".concat(t.configSectionItem),children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsUser",name:"tenant_securityContext_runAsUser",onChange:function(e){H("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsUser:e.target.value})),Y("tenant_securityContext_runAsUser")},label:"Run As User",value:q.runAsUser,required:!0,error:B.tenant_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_runAsGroup",name:"tenant_securityContext_runAsGroup",onChange:function(e){H("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsGroup:e.target.value})),Y("tenant_securityContext_runAsGroup")},label:"Run As Group",value:q.runAsGroup,required:!0,error:B.tenant_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.containerItem,children:(0,T.jsx)(I.Z,{type:"number",id:"tenant_securityContext_fsGroup",name:"tenant_securityContext_fsGroup",onChange:function(e){H("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{fsGroup:e.target.value})),Y("tenant_securityContext_fsGroup")},label:"FsGroup",value:q.fsGroup,required:!0,error:B.tenant_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"tenantSecurityContextRunAsNonRoot",id:"tenant_securityContext_runAsNonRoot",name:"tenant_securityContext_runAsNonRoot",checked:q.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("tenantSecurityContext",(0,i.Z)((0,i.Z)({},q),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"logSearchConfig",id:"log_search_configuration",name:"log_search_configuration",checked:x,onChange:function(e){var t=e.target.checked;H("logSearchCustom",t)},label:"Override Log Search defaults"})}),x&&(0,T.jsxs)(d.ZP,{xs:12,className:t.logSearchCustomFields,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"log_search_storage_class",name:"log_search_storage_class",onChange:function(e){H("logSearchSelectedStorageClass",e.target.value)},label:"Log Search Storage Class",value:R,options:W,disabled:W.length<1})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(I.Z,{type:"number",id:"log_search_volume_size",name:"log_search_volume_size",onChange:function(e){H("logSearchVolumeSize",e.target.value),Y("log_search_volume_size")},label:"Storage Size [Gi]",value:v,required:!0,error:B.log_search_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for LogSearch"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsUser",name:"logSearch_securityContext_runAsUser",onChange:function(e){H("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},G),{},{runAsUser:e.target.value})),Y("logSearch_securityContext_runAsUser")},label:"Run As User",value:G.runAsUser,required:!0,error:B.logSearch_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_runAsGroup",name:"logSearch_securityContext_runAsGroup",onChange:function(e){H("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},G),{},{runAsGroup:e.target.value})),Y("logSearch_securityContext_runAsGroup")},label:"Run As Group",value:G.runAsGroup,required:!0,error:B.logSearch_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"logSearch_securityContext_fsGroup",name:"logSearch_securityContext_fsGroup",onChange:function(e){H("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},G),{},{fsGroup:e.target.value})),Y("logSearch_securityContext_fsGroup")},label:"FsGroup",value:G.fsGroup,required:!0,error:B.logSearch_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"logSearchSecurityContextRunAsNonRoot",id:"logSearch_securityContext_runAsNonRoot",name:"logSearch_securityContext_runAsNonRoot",checked:G.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("logSearchSecurityContext",(0,i.Z)((0,i.Z)({},G),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for PostgreSQL"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsUser",name:"postgres_securityContext_runAsUser",onChange:function(e){H("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsUser:e.target.value})),Y("postgres_securityContext_runAsUser")},label:"Run As User",value:L.runAsUser,required:!0,error:B.postgres_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_runAsGroup",name:"postgres_securityContext_runAsGroup",onChange:function(e){H("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsGroup:e.target.value})),Y("postgres_securityContext_runAsGroup")},label:"Run As Group",value:L.runAsGroup,required:!0,error:B.postgres_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"postgres_securityContext_fsGroup",name:"postgres_securityContext_fsGroup",onChange:function(e){H("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{fsGroup:e.target.value})),Y("postgres_securityContext_fsGroup")},label:"FsGroup",value:L.fsGroup,required:!0,error:B.postgres_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"postgresSecurityContextRunAsNonRoot",id:"postgres_securityContext_runAsNonRoot",name:"postgres_securityContext_runAsNonRoot",checked:L.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("logSearchPostgresSecurityContext",(0,i.Z)((0,i.Z)({},L),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)(N.Z,{value:"prometheusConfig",id:"prometheus_configuration",name:"prometheus_configuration",checked:f,onChange:function(e){var t=e.target.checked;H("prometheusCustom",t)},label:"Override Prometheus defaults"})}),f&&(0,T.jsxs)(d.ZP,{xs:12,className:t.prometheusCustomFields,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(A.Z,{id:"prometheus_storage_class",name:"prometheus_storage_class",onChange:function(e){H("prometheusSelectedStorageClass",e.target.value)},label:"Prometheus Storage Class",value:z,options:W,disabled:W.length<1})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_volume_size",name:"prometheus_volume_size",onChange:function(e){H("prometheusVolumeSize",e.target.value),Y("prometheus_volume_size")},label:"Storage Size [Gi]",value:k,required:!0,error:B.prometheus_volume_size||"",min:"0"})})}),(0,T.jsxs)("fieldset",{className:"".concat(t.fieldGroup," ").concat(t.fieldSpaceTop),children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for Prometheus"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveSectionItem),children:[(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsUser",name:"prometheus_securityContext_runAsUser",onChange:function(e){H("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsUser:e.target.value})),Y("prometheus_securityContext_runAsUser")},label:"Run As User",value:M.runAsUser,required:!0,error:B.prometheus_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_runAsGroup",name:"prometheus_securityContext_runAsGroup",onChange:function(e){H("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsGroup:e.target.value})),Y("prometheus_securityContext_runAsGroup")},label:"Run As Group",value:M.runAsGroup,required:!0,error:B.prometheus_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:t.configSectionItem,children:(0,T.jsx)(I.Z,{type:"number",id:"prometheus_securityContext_fsGroup",name:"prometheus_securityContext_fsGroup",onChange:function(e){H("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{fsGroup:e.target.value})),Y("prometheus_securityContext_fsGroup")},label:"FsGroup",value:M.fsGroup,required:!0,error:B.prometheus_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.configSectionItem,children:(0,T.jsx)("div",{className:"".concat(t.multiContainer," ").concat(t.fieldSpaceTop),children:(0,T.jsx)(N.Z,{value:"prometheusSecurityContextRunAsNonRoot",id:"prometheus_securityContext_runAsNonRoot",name:"prometheus_securityContext_runAsNonRoot",checked:M.runAsNonRoot,onChange:function(e){var t=e.target.checked;H("prometheusSecurityContext",(0,i.Z)((0,i.Z)({},M),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})}))),z=n(94187),D=n(95467),w=n(35477),F=n(94759),E=n(43615),U=n(27207),K=n(96152),q=n(35150),G=(0,u.$j)((function(e){return{idpSelection:e.tenants.createTenant.fields.identityProvider.idpSelection,accessKeys:e.tenants.createTenant.fields.identityProvider.accessKeys,secretKeys:e.tenants.createTenant.fields.identityProvider.secretKeys,openIDConfigurationURL:e.tenants.createTenant.fields.identityProvider.openIDConfigurationURL,openIDClientID:e.tenants.createTenant.fields.identityProvider.openIDClientID,openIDSecretID:e.tenants.createTenant.fields.identityProvider.openIDSecretID,openIDCallbackURL:e.tenants.createTenant.fields.identityProvider.openIDCallbackURL,openIDClaimName:e.tenants.createTenant.fields.identityProvider.openIDClaimName,openIDScopes:e.tenants.createTenant.fields.identityProvider.openIDScopes,ADURL:e.tenants.createTenant.fields.identityProvider.ADURL,ADSkipTLS:e.tenants.createTenant.fields.identityProvider.ADSkipTLS,ADServerInsecure:e.tenants.createTenant.fields.identityProvider.ADServerInsecure,ADUserNameSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserNameSearchFilter,ADGroupSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADGroupSearchBaseDN,ADGroupSearchFilter:e.tenants.createTenant.fields.identityProvider.ADGroupSearchFilter,ADGroupNameAttribute:e.tenants.createTenant.fields.identityProvider.ADGroupNameAttribute,ADUserDNs:e.tenants.createTenant.fields.identityProvider.ADUserDNs,ADUserNameFormat:e.tenants.createTenant.fields.identityProvider.ADUserNameFormat,ADLookupBindDN:e.tenants.createTenant.fields.identityProvider.ADLookupBindDN,ADLookupBindPassword:e.tenants.createTenant.fields.identityProvider.ADLookupBindPassword,ADUserDNSearchBaseDN:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchBaseDN,ADUserDNSearchFilter:e.tenants.createTenant.fields.identityProvider.ADUserDNSearchFilter,ADServerStartTLS:e.tenants.createTenant.fields.identityProvider.ADServerStartTLS}}),{updateAddField:j.HM,isPageValid:j.NO}),L=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({shortened:{gridTemplateColumns:"auto auto 50px 50px",display:"grid",gridGap:15,marginBottom:10,"& input":{fontWeight:400}},buttonTray:{marginLeft:10,display:"flex",height:38,"& button":{background:"#EAEAEA"}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},protocolRadioOptions:{display:"flex",flexFlow:"column",marginBottom:10,"& label":{fontSize:14},"& div":{display:"flex",flexFlow:"column",alignItems:"baseline"}},adUserDnRows:{display:"flex"}},f.QV),f.DF),f.oO),f.AK))}))(G((function(e){var t=e.classes,n=e.idpSelection,r=e.accessKeys,a=e.secretKeys,i=e.openIDConfigurationURL,l=e.openIDClientID,c=e.openIDSecretID,u=e.openIDCallbackURL,m=e.openIDClaimName,g=e.openIDScopes,p=e.ADURL,f=e.ADSkipTLS,h=e.ADServerInsecure,x=e.ADUserNameSearchFilter,v=e.ADGroupSearchBaseDN,y=e.ADGroupSearchFilter,S=e.ADGroupNameAttribute,C=e.ADUserDNs,j=e.ADUserNameFormat,A=e.ADLookupBindDN,k=e.ADLookupBindPassword,R=e.ADUserDNSearchBaseDN,G=e.ADUserDNSearchFilter,L=e.ADServerStartTLS,M=e.updateAddField,V=e.isPageValid,O=(0,o.useState)({}),B=(0,s.Z)(O,2),$=B[0],W=B[1],H=(0,o.useCallback)((function(e,t){M("identityProvider",e,t)}),[M]),Y=function(e,t){var n=(0,_.Z)(r);n[e]=t,H("accessKeys",n)},Q=function(e,t){var n=(0,_.Z)(a);n[e]=t,H("secretKeys",n)},X=function(e,t){var n=(0,_.Z)(C);n[e]=t,H("ADUserDNs",n)},J=function(e){W((0,b.h)($,e))};(0,o.useEffect)((function(){var e=[];if("Built-in"===n){e=(0,_.Z)(e);for(var t=0;t1&&(r.splice(n,1),a.splice(n,1),Y(r.length-1,r[r.length-1]))},children:(0,T.jsx)(q.Z,{})})})}),(0,T.jsx)(z.Z,{title:"Randomize Credentials","aria-label":"add",children:(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{onClick:function(){Y(n,(0,b.z)(16)),Q(n,(0,b.z)(32))},size:"small",children:(0,T.jsx)(F.Z,{})})})})]})]})},"identityField-".concat(n.toString()))}))),"AD"===n&&(ee=C.map((function(e,n){return(0,T.jsx)(o.Fragment,{children:(0,T.jsxs)("div",{className:t.adUserDnRows,children:[(0,T.jsx)(I.Z,{id:"ad-userdn-".concat(n.toString()),label:"",placeholder:"",name:"ad-userdn-".concat(n.toString()),value:C[n],onChange:function(e){X(n,e.target.value),J("ad-userdn-".concat(n.toString()))},index:n,error:$["ad-userdn-".concat(n.toString())]||""},"csv-ad-userdn-".concat(n.toString())),(0,T.jsxs)("div",{className:t.buttonTray,children:[(0,T.jsx)(z.Z,{title:"Add User","aria-label":"add",children:(0,T.jsx)(D.Z,{size:"small",onClick:function(){C.push(""),X(C.length-1,"")},children:(0,T.jsx)(K.Z,{})})}),(0,T.jsx)(z.Z,{title:"Remove","aria-label":"add",children:(0,T.jsx)(D.Z,{size:"small",style:{marginLeft:16},onClick:function(){C.length>1&&(C.splice(n,1),Y(C.length-1,C[C.length-1]))},children:(0,T.jsx)(E.Z,{})})})]})]})},"identityField-".concat(n.toString()))}))),(0,T.jsxs)(Z.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Identity Provider"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Access to the tenant can be controlled via an external Identity Manager."})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.protocolRadioOptions,children:[(0,T.jsx)("label",{children:"Protocol"}),(0,T.jsx)(U.Z,{currentSelection:n,id:"idp-options",name:"idp-options",label:" ",onChange:function(e){H("idpSelection",e.target.value)},selectorOptions:[{label:"Built-in",value:"Built-in"},{label:"OpenID",value:"OpenID"},{label:"Active Directory",value:"AD"}]})]}),"Built-in"===n&&(0,T.jsxs)(o.Fragment,{children:["Add additional users",ee]}),"OpenID"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_CONFIGURATION_URL",name:"openID_CONFIGURATION_URL",onChange:function(e){H("openIDConfigurationURL",e.target.value),J("openID_CONFIGURATION_URL")},label:"Configuration URL",value:i,placeholder:"https://your-identity-provider.com/.well-known/openid-configuration",error:$.openID_CONFIGURATION_URL||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_clientID",name:"openID_clientID",onChange:function(e){H("openIDClientID",e.target.value),J("openID_clientID")},label:"Client ID",value:l,error:$.openID_clientID||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_secretID",name:"openID_secretID",onChange:function(e){H("openIDSecretID",e.target.value),J("openID_secretID")},label:"Secret ID",value:c,error:$.openID_secretID||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_callbackURL",name:"openID_callbackURL",onChange:function(e){H("openIDCallbackURL",e.target.value),J("openID_callbackURL")},label:"Callback URL",value:u,placeholder:"https://your-console-endpoint:9443/oauth_callback",error:$.openID_callbackURL||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_claimName",name:"openID_claimName",onChange:function(e){H("openIDClaimName",e.target.value),J("openID_claimName")},label:"Claim Name",value:m,error:$.openID_claimName||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"openID_scopes",name:"openID_scopes",onChange:function(e){H("openIDScopes",e.target.value),J("openID_scopes")},label:"Scopes",value:g})})]}),"AD"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"AD_URL",name:"AD_URL",onChange:function(e){H("ADURL",e.target.value),J("AD_URL")},label:"LDAP Server Address",value:p,placeholder:"ldap-server:636",error:$.AD_URL||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_skipTLS",id:"ad_skipTLS",name:"ad_skipTLS",checked:f,onChange:function(e){var t=e.target.checked;H("ADSkipTLS",t)},label:"Skip TLS Verification"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_serverInsecure",id:"ad_serverInsecure",name:"ad_serverInsecure",checked:h,onChange:function(e){var t=e.target.checked;H("ADServerInsecure",t)},label:"Server Insecure"})}),h?(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(w.Z,{className:t.error,variant:"caption",display:"block",gutterBottom:!0,children:"Warning: All traffic with Active Directory will be unencrypted"}),(0,T.jsx)("br",{})]}):null,(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"ad_serverStartTLS",id:"ad_serverStartTLS",name:"ad_serverStartTLS",checked:L,onChange:function(e){var t=e.target.checked;H("ADServerStartTLS",t)},label:"Start TLS connection to AD/LDAP server"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userNameFormat",name:"ad_userNameFormat",onChange:function(e){H("ADUserNameFormat",e.target.value)},label:"Username Format",value:j,placeholder:"uid=%s,cn=accounts,dc=myldapserver,dc=com"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userNameFilter",name:"ad_userNameFilter",onChange:function(e){H("ADUserNameSearchFilter",e.target.value)},label:"Username Search Filter",value:x,placeholder:"(|(objectclass=posixAccount)(uid=%s))"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupSearchBaseDN",name:"ad_groupSearchBaseDN",onChange:function(e){H("ADGroupSearchBaseDN",e.target.value)},label:"Group Search Base DN",value:v,placeholder:"ou=hwengg,dc=min,dc=io;ou=swengg,dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupSearchFilter",name:"ad_groupSearchFilter",onChange:function(e){H("ADGroupSearchFilter",e.target.value)},label:"Group Search Filter",value:y,placeholder:"(&(objectclass=groupOfNames)(member=%s))"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_groupNameAttribute",name:"ad_groupNameAttribute",onChange:function(e){H("ADGroupNameAttribute",e.target.value)},label:"Group Name Attribute",value:S,placeholder:"cn"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_lookupBindDN",name:"ad_lookupBindDN",onChange:function(e){H("ADLookupBindDN",e.target.value)},label:"Lookup Bind DN",value:A,placeholder:"cn=admin,dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_lookupBindPassword",name:"ad_lookupBindPassword",onChange:function(e){H("ADLookupBindPassword",e.target.value)},label:"Lookup Bind Password",value:k,placeholder:"admin"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userDNSearchBaseDN",name:"ad_userDNSearchBaseDN",onChange:function(e){H("ADUserDNSearchBaseDN",e.target.value)},label:"User DN Search Base DN",value:R,placeholder:"dc=min,dc=io"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"ad_userDNSearchFilter",name:"ad_userDNSearchFilter",onChange:function(e){H("ADUserDNSearchFilter",e.target.value)},label:"User DN Search Filter",value:G,placeholder:"(uid=%s)"})}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"List of user DNs (Distinguished Names) to be Tenant Administrators"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:ee})]})]})]})}))),M=n(82461),V=n(14792),O=(0,u.$j)((function(e){return{enableTLS:e.tenants.createTenant.fields.security.enableTLS,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,caCertificates:e.tenants.createTenant.certificates.caCertificates}}),{updateAddField:j.HM,isPageValid:j.NO,addFileToCaCertificates:j.Eq,deleteCaCertificate:j.IG,addCaCertificate:j.fK,addKeyPair:j.Mg,addFileToKeyPair:j.aN,deleteKeyPair:j.XX}),B=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({minioCertificateRows:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1}},fileItem:{marginRight:10,display:"flex","& div label":{minWidth:50},"@media (max-width: 900px)":{flexFlow:"column"}},minioCertsContainer:{marginBottom:15},minioCACertsRow:{display:"flex",alignItems:"center",justifyContent:"flex-start",borderBottom:"1px solid #EAEAEA","&:last-child":{borderBottom:0},"@media (max-width: 900px)":{flex:1,"& div label":{minWidth:50}}},rowActions:{display:"flex",justifyContent:"flex-end","@media (max-width: 900px)":{flex:1}},overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}}},f.QV),f.oO),f.AK))}))(O((function(e){var t=e.classes,n=e.enableTLS,r=e.enableAutoCert,a=e.enableCustomCerts,s=e.minioCertificates,i=e.caCertificates,l=e.updateAddField,c=e.isPageValid,u=e.addFileToCaCertificates,m=e.deleteCaCertificate,g=e.addCaCertificate,p=e.addKeyPair,f=e.addFileToKeyPair,h=e.deleteKeyPair,x=(0,o.useCallback)((function(e,t){l("security",e,t)}),[l]);return(0,o.useEffect)((function(){c("security",!n||(!!r||!!a))}),[n,r,a,c]),(0,T.jsxs)(Z.Z,{className:t.paperWrapper,children:[(0,T.jsx)("div",{className:t.headerElement,children:(0,T.jsx)("h3",{className:t.h3Section,children:"Security"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(N.Z,{value:"enableTLS",id:"enableTLS",name:"enableTLS",checked:n,onChange:function(e){var t=e.target.checked;x("enableTLS",t)},label:"Enable TLS"}),"Enable TLS for the tenant, this is required for Encryption Configuration",n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)("br",{}),(0,T.jsx)(w.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"AutoCert: MinIO Operator will generate all TLS certificates automatically"}),(0,T.jsx)(w.Z,{variant:"caption",display:"block",gutterBottom:!0,children:"Custom certificates: Allow user to provide your own certificates"}),(0,T.jsx)("br",{})]})]}),n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(N.Z,{value:"enableAutoCert",id:"enableAutoCert",name:"enableAutoCert",checked:r,onChange:function(e){var t=e.target.checked;x("enableAutoCert",t)},label:"Enable AutoCert"}),(0,T.jsx)(N.Z,{value:"enableCustomCerts",id:"enableCustomCerts",name:"enableCustomCerts",checked:a,onChange:function(e){var t=e.target.checked;x("enableCustomCerts",t)},label:"Custom Certificates"})]}),a&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"MinIO Certificates"}),s.map((function(e){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCertificateRows,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:10,className:t.fileItem,children:[(0,T.jsx)(M.Z,{onChange:function(t,n){f(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert}),(0,T.jsx)(M.Z,{onChange:function(t,n){f(e.id,"key",n,t)},accept:".key,.pem",id:"tlsKey",name:"tlsKey",label:"Key",value:e.key})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{size:"small",onClick:p,children:(0,T.jsx)(V.Z,{})})}),(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{size:"small",onClick:function(){h(e.id)},children:(0,T.jsx)(q.Z,{})})})]})]},e.id)}))]})})}),(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.minioCertsContainer,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"MinIO CA Certificates"}),i.map((function(e){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.minioCACertsRow,children:[(0,T.jsx)(d.ZP,{item:!0,xs:6,children:(0,T.jsx)(M.Z,{onChange:function(t,n){u(e.id,"cert",n,t)},accept:".cer,.crt,.cert,.pem",id:"tlsCert",name:"tlsCert",label:"Cert",value:e.cert})}),(0,T.jsx)(d.ZP,{item:!0,xs:6,children:(0,T.jsxs)("div",{className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{size:"small",onClick:g,children:(0,T.jsx)(V.Z,{})})}),(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{size:"small",onClick:function(){m(e.id)},children:(0,T.jsx)(q.Z,{})})})]})})]},e.id)}))]})})})]})]})]})}))),$=(0,u.$j)((function(e){return{replicas:e.tenants.createTenant.fields.encryption.replicas,enableEncryption:e.tenants.createTenant.fields.encryption.enableEncryption,encryptionType:e.tenants.createTenant.fields.encryption.encryptionType,gemaltoEndpoint:e.tenants.createTenant.fields.encryption.gemaltoEndpoint,gemaltoToken:e.tenants.createTenant.fields.encryption.gemaltoToken,gemaltoDomain:e.tenants.createTenant.fields.encryption.gemaltoDomain,gemaltoRetry:e.tenants.createTenant.fields.encryption.gemaltoRetry,awsEndpoint:e.tenants.createTenant.fields.encryption.awsEndpoint,awsRegion:e.tenants.createTenant.fields.encryption.awsRegion,awsKMSKey:e.tenants.createTenant.fields.encryption.awsKMSKey,awsAccessKey:e.tenants.createTenant.fields.encryption.awsAccessKey,awsSecretKey:e.tenants.createTenant.fields.encryption.awsSecretKey,awsToken:e.tenants.createTenant.fields.encryption.awsToken,vaultEndpoint:e.tenants.createTenant.fields.encryption.vaultEndpoint,vaultEngine:e.tenants.createTenant.fields.encryption.vaultEngine,vaultNamespace:e.tenants.createTenant.fields.encryption.vaultNamespace,vaultPrefix:e.tenants.createTenant.fields.encryption.vaultPrefix,vaultAppRoleEngine:e.tenants.createTenant.fields.encryption.vaultAppRoleEngine,vaultId:e.tenants.createTenant.fields.encryption.vaultId,vaultSecret:e.tenants.createTenant.fields.encryption.vaultSecret,vaultRetry:e.tenants.createTenant.fields.encryption.vaultRetry,vaultPing:e.tenants.createTenant.fields.encryption.vaultPing,azureEndpoint:e.tenants.createTenant.fields.encryption.azureEndpoint,azureTenantID:e.tenants.createTenant.fields.encryption.azureTenantID,azureClientID:e.tenants.createTenant.fields.encryption.azureClientID,azureClientSecret:e.tenants.createTenant.fields.encryption.azureClientSecret,gcpProjectID:e.tenants.createTenant.fields.encryption.gcpProjectID,gcpEndpoint:e.tenants.createTenant.fields.encryption.gcpEndpoint,gcpClientEmail:e.tenants.createTenant.fields.encryption.gcpClientEmail,gcpClientID:e.tenants.createTenant.fields.encryption.gcpClientID,gcpPrivateKeyID:e.tenants.createTenant.fields.encryption.gcpPrivateKeyID,gcpPrivateKey:e.tenants.createTenant.fields.encryption.gcpPrivateKey,enableCustomCertsForKES:e.tenants.createTenant.fields.encryption.enableCustomCertsForKES,enableAutoCert:e.tenants.createTenant.fields.security.enableAutoCert,enableTLS:e.tenants.createTenant.fields.security.enableTLS,minioCertificates:e.tenants.createTenant.certificates.minioCertificates,serverCertificate:e.tenants.createTenant.certificates.serverCertificate,clientCertificate:e.tenants.createTenant.certificates.clientCertificate,vaultCertificate:e.tenants.createTenant.certificates.vaultCertificate,vaultCA:e.tenants.createTenant.certificates.vaultCA,gemaltoCA:e.tenants.createTenant.certificates.gemaltoCA,enableCustomCerts:e.tenants.createTenant.fields.security.enableCustomCerts,kesSecurityContext:e.tenants.createTenant.fields.encryption.kesSecurityContext}}),{updateAddField:j.HM,isPageValid:j.NO,addFileServerCert:j.$1,addFileClientCert:j.BI,addFileVaultCert:j.cl,addFileVaultCa:j.fk,addFileGemaltoCa:j.MX}),W=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({encryptionTypeOptions:{marginBottom:15},mutualTlsConfig:{marginTop:15,"& fieldset":{flex:1}},rightSpacer:{marginRight:15},responsiveContainer:{"@media (max-width: 900px)":{display:"flex",flexFlow:"column"}}},f.QV),f.DF),f.oO),f.AK))}))($((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.addFileServerCert,l=e.addFileClientCert,c=e.addFileVaultCert,u=e.addFileVaultCa,m=e.addFileGemaltoCa,g=e.enableEncryption,p=e.enableCustomCerts,f=e.encryptionType,h=e.gemaltoEndpoint,x=e.gemaltoToken,v=e.gemaltoDomain,y=e.gemaltoRetry,S=e.awsEndpoint,C=e.awsRegion,j=e.awsKMSKey,A=e.awsAccessKey,k=e.awsSecretKey,R=e.awsToken,z=e.vaultEndpoint,D=e.vaultEngine,w=e.vaultNamespace,F=e.vaultPrefix,E=e.vaultAppRoleEngine,K=e.vaultId,q=e.vaultSecret,G=e.vaultRetry,L=e.vaultPing,V=e.azureEndpoint,O=e.azureTenantID,B=e.azureClientID,$=e.azureClientSecret,W=e.gcpProjectID,H=e.gcpEndpoint,Y=e.gcpClientEmail,Q=e.gcpClientID,X=e.gcpPrivateKeyID,J=e.gcpPrivateKey,ee=e.enableCustomCertsForKES,te=e.enableAutoCert,ne=e.enableTLS,re=e.minioCertificates,ae=e.serverCertificate,se=e.clientCertificate,ie=e.vaultCertificate,oe=e.vaultCA,le=e.gemaltoCA,ce=e.kesSecurityContext,ue=e.replicas,de=(0,o.useState)({}),me=(0,s.Z)(de,2),ge=me[0],pe=me[1],fe=!1;ne&&(te||re&&re.filter((function(e){return e.encoded_key&&e.encoded_cert})).length>0)&&(fe=!0);var he=(0,o.useCallback)((function(e,t){n("encryption",e,t)}),[n]),xe=function(e){pe((0,b.h)(ge,e))};return(0,o.useEffect)((function(){var e=[];g&&(e=[].concat((0,_.Z)(e),[{fieldKey:"replicas",required:!0,value:ue,customValidation:parseInt(ue)<1,customValidationMessage:"Replicas needs to be 1 or greater"},{fieldKey:"kes_securityContext_runAsUser",required:!0,value:ce.runAsUser,customValidation:""===ce.runAsUser||parseInt(ce.runAsUser)<0,customValidationMessage:"runAsUser must be present and be 0 or more"},{fieldKey:"kes_securityContext_runAsGroup",required:!0,value:ce.runAsGroup,customValidation:""===ce.runAsGroup||parseInt(ce.runAsGroup)<0,customValidationMessage:"runAsGroup must be present and be 0 or more"},{fieldKey:"kes_securityContext_fsGroup",required:!0,value:ce.fsGroup,customValidation:""===ce.fsGroup||parseInt(ce.fsGroup)<0,customValidationMessage:"fsGroup must be present and be 0 or more"}]),p&&(e=[].concat((0,_.Z)(e),[{fieldKey:"serverKey",required:!te,value:ae.encoded_key},{fieldKey:"serverCert",required:!te,value:ae.encoded_cert},{fieldKey:"clientKey",required:!te,value:se.encoded_key},{fieldKey:"clientCert",required:!te,value:se.encoded_cert}])),"vault"===f&&(e=[].concat((0,_.Z)(e),[{fieldKey:"vault_endpoint",required:!0,value:z},{fieldKey:"vault_id",required:!0,value:K},{fieldKey:"vault_secret",required:!0,value:q},{fieldKey:"vault_ping",required:!1,value:L,customValidation:parseInt(L)<0,customValidationMessage:"Value needs to be 0 or greater"},{fieldKey:"vault_retry",required:!1,value:G,customValidation:parseInt(G)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"aws"===f&&(e=[].concat((0,_.Z)(e),[{fieldKey:"aws_endpoint",required:!0,value:S},{fieldKey:"aws_region",required:!0,value:C},{fieldKey:"aws_accessKey",required:!0,value:A},{fieldKey:"aws_secretKey",required:!0,value:k}])),"gemalto"===f&&(e=[].concat((0,_.Z)(e),[{fieldKey:"gemalto_endpoint",required:!0,value:h},{fieldKey:"gemalto_token",required:!0,value:x},{fieldKey:"gemalto_domain",required:!0,value:v},{fieldKey:"gemalto_retry",required:!1,value:y,customValidation:parseInt(y)<0,customValidationMessage:"Value needs to be 0 or greater"}])),"azure"===f&&(e=[].concat((0,_.Z)(e),[{fieldKey:"azure_endpoint",required:!0,value:V},{fieldKey:"azure_tenant_id",required:!0,value:O},{fieldKey:"azure_client_id",required:!0,value:B},{fieldKey:"azure_client_secret",required:!0,value:$}])));var t=(0,P.R)(e);r("encryption",0===Object.keys(t).length),pe(t)}),[g,f,z,D,K,q,L,G,S,C,k,A,h,x,v,y,W,H,Y,Q,X,J,V,O,B,$,r,te,p,ae.encoded_key,ae.encoded_cert,se.encoded_key,se.encoded_cert,ce,ue]),(0,T.jsxs)(Z.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Encryption"}),(0,T.jsx)("span",{className:t.descriptionText,children:"How would you like to encrypt the information at rest."})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"enableEncryption",id:"enableEncryption",name:"enableEncryption",checked:g,onChange:function(e){var t=e.target.checked;he("enableEncryption",t)},label:"Enable Server Side Encryption",disabled:!fe})}),g&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.encryptionTypeOptions,children:(0,T.jsx)(U.Z,{currentSelection:f,id:"encryptionType",name:"encryptionType",label:"Encryption Options",onChange:function(e){he("encryptionType",e.target.value)},selectorOptions:[{label:"Vault",value:"vault"},{label:"AWS",value:"aws"},{label:"Gemalto",value:"gemalto"},{label:"GCP",value:"gcp"},{label:"Azure",value:"azure"}]})}),"vault"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"enableCustomCertsForKES",id:"enableCustomCertsForKES",name:"enableCustomCertsForKES",checked:ee||!te,onChange:function(e){var t=e.target.checked;he("enableCustomCertsForKES",t)},label:"Custom Certificates",disabled:!te})}),(ee||!te)&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{container:!0,children:(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Encryption Service Certificates"}),(0,T.jsx)(M.Z,{onChange:function(e,t){a("key",t,e),xe("serverKey")},accept:".key,.pem",id:"serverKey",name:"serverKey",label:"Key",error:ge.serverKey||"",value:ae.key,required:!te}),(0,T.jsx)(M.Z,{onChange:function(e,t){a("cert",t,e),xe("serverCert")},accept:".cer,.crt,.cert,.pem",id:"serverCert",name:"serverCert",label:"Cert",error:ge.serverCert||"",value:ae.cert,required:!te})]})})}),(0,T.jsx)(d.ZP,{container:!0,style:{marginBottom:15},children:(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication"}),(0,T.jsx)(M.Z,{onChange:function(e,t){l("key",t,e),xe("clientKey")},accept:".key,.pem",id:"clientKey",name:"clientKey",label:"Key",error:ge.clientKey||"",value:se.key,required:!te}),(0,T.jsx)(M.Z,{onChange:function(e,t){l("cert",t,e),xe("clientCert")},accept:".cer,.crt,.cert,.pem",id:"clientCert",name:"clientCert",label:"Cert",error:ge.clientCert||"",value:se.cert,required:!te})]})})})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_endpoint",name:"vault_endpoint",onChange:function(e){he("vaultEndpoint",e.target.value),xe("vault_endpoint")},label:"Endpoint",value:z,error:ge.vault_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_engine",name:"vault_engine",onChange:function(e){he("vaultEngine",e.target.value),xe("vault_engine")},label:"Engine",value:D})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_namespace",name:"vault_namespace",onChange:function(e){he("vaultNamespace",e.target.value)},label:"Namespace",value:w})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_prefix",name:"vault_prefix",onChange:function(e){he("vaultPrefix",e.target.value)},label:"Prefix",value:F})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"App Role"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_approle_engine",name:"vault_approle_engine",onChange:function(e){he("vaultAppRoleEngine",e.target.value)},label:"Engine",value:E})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_id",name:"vault_id",onChange:function(e){he("vaultId",e.target.value),xe("vault_id")},label:"AppRole ID",value:K,error:ge.vault_id||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"vault_secret",name:"vault_secret",onChange:function(e){he("vaultSecret",e.target.value),xe("vault_secret")},label:"AppRole Secret",value:q,error:ge.vault_secret||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"0",id:"vault_retry",name:"vault_retry",onChange:function(e){he("vaultRetry",e.target.value),xe("vault_retry")},label:"Retry (Seconds)",value:G,error:ge.vault_retry||""})})]})}),(0,T.jsx)(d.ZP,{container:!0,className:t.mutualTlsConfig,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Mutual TLS authentication (optional)"}),(0,T.jsx)(M.Z,{onChange:function(e,t){c("key",t,e),xe("vault_key")},accept:".key,.pem",id:"vault_key",name:"vault_key",label:"Key",value:ie.key}),(0,T.jsx)(M.Z,{onChange:function(e,t){c("cert",t,e),xe("vault_cert")},accept:".cer,.crt,.cert,.pem",id:"vault_cert",name:"vault_cert",label:"Cert",value:ie.cert}),(0,T.jsx)(M.Z,{onChange:function(e,t){u(t,e),xe("vault_ca")},accept:".cer,.crt,.cert,.pem",id:"vault_ca",name:"vault_ca",label:"CA",value:oe.cert})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,style:{marginTop:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Status"}),(0,T.jsx)(I.Z,{type:"number",min:"0",id:"vault_ping",name:"vault_ping",onChange:function(e){he("vaultPing",e.target.value),xe("vault_ping")},label:"Ping (Seconds)",value:L,error:ge.vault_ping||""})]})})]}),"azure"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_endpoint",name:"azure_endpoint",onChange:function(e){he("azureEndpoint",e.target.value),xe("azure_endpoint")},label:"Endpoint",value:V,error:ge.azure_endpoint||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_tenant_id",name:"azure_tenant_id",onChange:function(e){he("azureTenantID",e.target.value),xe("azure_tenant_id")},label:"Tenant ID",value:O,error:ge.azure_tenant_id||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_client_id",name:"azure_client_id",onChange:function(e){he("azureClientID",e.target.value),xe("azure_client_id")},label:"Client ID",value:B,error:ge.azure_client_id||""})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"azure_client_secret",name:"azure_client_secret",onChange:function(e){he("azureClientSecret",e.target.value),xe("azure_client_secret")},label:"Client Secret",value:$,error:ge.azure_client_secret||""})})]})})]}),"gcp"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_project_id",name:"gcp_project_id",onChange:function(e){he("gcpProjectID",e.target.value)},label:"Project ID",value:W})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_endpoint",name:"gcp_endpoint",onChange:function(e){he("gcpEndpoint",e.target.value)},label:"Endpoint",value:H})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_client_email",name:"gcp_client_email",onChange:function(e){he("gcpClientEmail",e.target.value)},label:"Client Email",value:Y})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_client_id",name:"gcp_client_id",onChange:function(e){he("gcpClientID",e.target.value)},label:"Client ID",value:Q})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_private_key_id",name:"gcp_private_key_id",onChange:function(e){he("gcpPrivateKeyID",e.target.value)},label:"Private Key ID",value:X})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gcp_private_key",name:"gcp_private_key",onChange:function(e){he("gcpPrivateKey",e.target.value)},label:"Private Key",value:J})})]})})]}),"aws"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_endpoint",name:"aws_endpoint",onChange:function(e){he("awsEndpoint",e.target.value),xe("aws_endpoint")},label:"Endpoint",value:S,error:ge.aws_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_region",name:"aws_region",onChange:function(e){he("awsRegion",e.target.value),xe("aws_region")},label:"Region",value:C,error:ge.aws_region||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_kmsKey",name:"aws_kmsKey",onChange:function(e){he("awsKMSKey",e.target.value)},label:"KMS Key",value:j})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_accessKey",name:"aws_accessKey",onChange:function(e){he("awsAccessKey",e.target.value),xe("aws_accessKey")},label:"Access Key",value:A,error:ge.aws_accessKey||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_secretKey",name:"aws_secretKey",onChange:function(e){he("awsSecretKey",e.target.value),xe("aws_secretKey")},label:"Secret Key",value:k,error:ge.aws_secretKey||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"aws_token",name:"aws_token",onChange:function(e){he("awsToken",e.target.value)},label:"Token",value:R})})]})})]}),"gemalto"===f&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_endpoint",name:"gemalto_endpoint",onChange:function(e){he("gemaltoEndpoint",e.target.value),xe("gemalto_endpoint")},label:"Endpoint",value:h,error:ge.gemalto_endpoint||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Credentials"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_token",name:"gemalto_token",onChange:function(e){he("gemaltoToken",e.target.value),xe("gemalto_token")},label:"Token",value:x,error:ge.gemalto_token||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"gemalto_domain",name:"gemalto_domain",onChange:function(e){he("gemaltoDomain",e.target.value),xe("gemalto_domain")},label:"Domain",value:v,error:ge.gemalto_domain||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"0",id:"gemalto_retry",name:"gemalto_retry",onChange:function(e){he("gemaltoRetry",e.target.value),xe("gemalto_retry")},label:"Retry (seconds)",value:y,error:ge.gemalto_retry||""})})]})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,style:{marginBottom:15},children:(0,T.jsxs)("fieldset",{className:t.fieldGroup,children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"Custom CA Root certificate verification"}),(0,T.jsx)(M.Z,{onChange:function(e,t){m(t,e),xe("gemalto_ca")},accept:".cer,.crt,.cert,.pem",id:"gemalto_ca",name:"gemalto_ca",label:"CA",value:le.cert})]})})]}),(0,T.jsx)("div",{className:t.headerElement,children:(0,T.jsx)("h4",{className:t.h3Section,children:"Additional Configurations"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,classes:t.formFieldRow,children:(0,T.jsx)(I.Z,{type:"number",min:"1",id:"replicas",name:"replicas",onChange:function(e){he("replicas",e.target.value),xe("replicas")},label:"Replicas",value:ue,required:!0,error:ge.replicas||""})}),(0,T.jsxs)("fieldset",{className:t.fieldGroup,style:{marginTop:15},children:[(0,T.jsx)("legend",{className:t.descriptionText,children:"SecurityContext for KES pods"}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.kesSecurityContext,children:(0,T.jsxs)("div",{className:"".concat(t.multiContainer," ").concat(t.responsiveContainer),children:[(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsUser",name:"kes_securityContext_runAsUser",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsUser:e.target.value})),xe("kes_securityContext_runAsUser")},label:"Run As User",value:ce.runAsUser,required:!0,error:ge.kes_securityContext_runAsUser||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_runAsGroup",name:"kes_securityContext_runAsGroup",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsGroup:e.target.value})),xe("kes_securityContext_runAsGroup")},label:"Run As Group",value:ce.runAsGroup,required:!0,error:ge.kes_securityContext_runAsGroup||"",min:"0"})}),(0,T.jsx)("div",{className:"".concat(t.formFieldRow," ").concat(t.rightSpacer),children:(0,T.jsx)(I.Z,{type:"number",id:"kes_securityContext_fsGroup",name:"kes_securityContext_fsGroup",onChange:function(e){he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{fsGroup:e.target.value})),xe("kes_securityContext_fsGroup")},label:"FsGroup",value:ce.fsGroup,required:!0,error:ge.kes_securityContext_fsGroup||"",min:"0"})})]})}),(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)(N.Z,{value:"kesSecurityContextRunAsNonRoot",id:"kes_securityContext_runAsNonRoot",name:"kes_securityContext_runAsNonRoot",checked:ce.runAsNonRoot,onChange:function(e){var t=e.target.checked;he("kesSecurityContext",(0,i.Z)((0,i.Z)({},ce),{},{runAsNonRoot:t}))},label:"Do not run as Root"})})})]})]})]})]})}))),H=(0,u.$j)((function(e){var t=e.tenants.createTenant;return{podAffinity:t.fields.affinity.podAffinity,nodeSelectorLabels:t.fields.affinity.nodeSelectorLabels,withPodAntiAffinity:t.fields.affinity.withPodAntiAffinity,keyValuePairs:t.nodeSelectorPairs}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,isPageValid:j.NO,setKeyValuePairs:j.i$}),Y=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({overlayAction:{marginLeft:10,"& svg":{maxWidth:15,maxHeight:15},"& button":{background:"#EAEAEA"}},affinityConfigField:{display:"flex"},affinityFieldLabel:{display:"flex",flexFlow:"column",flex:1},radioField:{display:"flex",alignItems:"flex-start",marginTop:10,"& div:first-child":{display:"flex",flexFlow:"column",alignItems:"baseline",textAlign:"left !important"}},affinityLabelKey:{"& div:first-child":{marginBottom:0}},affinityLabelValue:{marginLeft:10,"& div:first-child":{marginBottom:0}},rowActions:{display:"flex",alignItems:"center"},fieldContainer:{marginBottom:0},affinityRow:{marginBottom:10,display:"flex"}},f.oO),f.AK))}))(H((function(e){var t=e.classes,n=e.podAffinity,r=e.nodeSelectorLabels,a=e.withPodAntiAffinity,i=e.setModalErrorSnackMessage,l=e.updateAddField,c=e.keyValuePairs,u=e.setKeyValuePairs,m=e.isPageValid,g=(0,o.useState)({}),p=(0,s.Z)(g,2),f=p[0],x=p[1],v=(0,o.useState)(!0),y=(0,s.Z)(v,2),S=y[0],C=y[1],j=(0,o.useState)({}),b=(0,s.Z)(j,2),k=b[0],R=b[1],z=(0,o.useState)([]),w=(0,s.Z)(z,2),F=w[0],E=w[1],K=(0,o.useCallback)((function(e,t){l("affinity",e,t)}),[l]);return(0,o.useEffect)((function(){S&&h.Z.invoke("GET","/api/v1/nodes/labels").then((function(e){C(!1),R(e);var t=[];for(var n in e)t.push({label:n,value:n});E(t)})).catch((function(e){C(!1),i(e),R({})}))}),[i,S]),(0,o.useEffect)((function(){if(c){var e=c.filter((function(e){return""!==e.key})).map((function(e){return"".concat(e.key,"=").concat(e.value)})).filter((function(e,t,n){return n.indexOf(e)===t})).join("&");K("nodeSelectorLabels",e)}}),[c,K]),(0,o.useEffect)((function(){var e=[];if("nodeSelector"===n){var t=!0,a=r.split("&");1===a.length&&""===a[0]&&(t=!1),a.forEach((function(e,n){var r=e.split("=");2!==r.length&&(t=!1),n+1!==a.length&&(""!==r[0]&&""!==r[1]||(t=!1))})),e=[].concat((0,_.Z)(e),[{fieldKey:"labels",required:!0,value:r,customValidation:!t,customValidationMessage:"You need to add at least one label key-pair"}])}var s=(0,P.R)(e);m("affinity",0===Object.keys(s).length),x(s)}),[m,n,r]),(0,T.jsxs)(Z.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Pod Placement"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Configure how pods will be assigned to nodes"})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.affinityConfigField,children:(0,T.jsxs)(d.ZP,{item:!0,className:t.affinityFieldLabel,children:[(0,T.jsx)("div",{className:t.label,children:"Type"}),(0,T.jsx)("div",{className:"".concat(t.descriptionText," ").concat(t.affinityHelpText),children:"MinIO supports multiple configurations for Pod Affinity"}),(0,T.jsx)(d.ZP,{item:!0,className:t.radioField,children:(0,T.jsx)(U.Z,{currentSelection:n,id:"affinity-options",name:"affinity-options",label:" ",onChange:function(e){K("podAffinity",e.target.value)},selectorOptions:[{label:"None",value:"none"},{label:"Default (Pod Anti-Affinnity)",value:"default"},{label:"Node Selector",value:"nodeSelector"}]})})]})}),"nodeSelector"===n&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("br",{}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"with_pod_anti_affinity",id:"with_pod_anti_affinity",name:"with_pod_anti_affinity",checked:a,onChange:function(e){var t=e.target.checked;K("withPodAntiAffinity",t)},label:"With Pod Anti-Affinity"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsx)("h3",{children:"Labels"}),(0,T.jsx)("span",{className:t.error,children:f.labels}),(0,T.jsx)(d.ZP,{container:!0,children:c&&c.map((function(e,n){return(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.affinityRow,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelKey,children:[F.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var t=e.target.value,r=Object.assign([],c);r[n].key=e.target.value,r[n].value=k[t][0],u(r)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.key,options:F}),0===F.length&&(0,T.jsx)(I.Z,{id:"nodeselector-key-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.key,onChange:function(e){var t=Object.assign([],c);t[n].key=e.target.value,u(t)},index:n,placeholder:"Key"})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:5,className:t.affinityLabelValue,children:[F.length>0&&(0,T.jsx)(A.Z,{onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},id:"select-access-policy",name:"select-access-policy",label:"",value:e.value,options:k[e.key]?k[e.key].map((function(e){return{label:e,value:e}})):[]}),0===F.length&&(0,T.jsx)(I.Z,{id:"nodeselector-value-".concat(n.toString()),label:"",name:"nodeselector-".concat(n.toString()),value:e.value,onChange:function(e){var t=Object.assign([],c);t[n].value=e.target.value,u(t)},index:n,placeholder:"value"})]}),(0,T.jsxs)(d.ZP,{item:!0,xs:2,className:t.rowActions,children:[(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{size:"small",onClick:function(){var e=Object.assign([],c);F.length>0?e.push({key:F[0].value,value:k[F[0].value][0]}):e.push({key:"",value:""}),u(e)},children:(0,T.jsx)(V.Z,{})})}),c.length>1&&(0,T.jsx)("div",{className:t.overlayAction,children:(0,T.jsx)(D.Z,{size:"small",onClick:function(){var e=c.filter((function(e,t){return t!==n}));u(e)},children:(0,T.jsx)(q.Z,{})})})]})]},"affinity-keyVal-".concat(n.toString()))}))})]})]})]})}))),Q=n(35721),X=n(24442),J=(0,u.$j)((function(e){return{storageClasses:e.tenants.createTenant.storageClasses,customImage:e.tenants.createTenant.fields.configure.customImage,imageName:e.tenants.createTenant.fields.configure.imageName,customDockerhub:e.tenants.createTenant.fields.configure.customDockerhub,imageRegistry:e.tenants.createTenant.fields.configure.imageRegistry,imageRegistryUsername:e.tenants.createTenant.fields.configure.imageRegistryUsername,imageRegistryPassword:e.tenants.createTenant.fields.configure.imageRegistryPassword,exposeMinIO:e.tenants.createTenant.fields.configure.exposeMinIO,exposeConsole:e.tenants.createTenant.fields.configure.exposeConsole,prometheusCustom:e.tenants.createTenant.fields.configure.prometheusCustom,tenantCustom:e.tenants.createTenant.fields.configure.tenantCustom,logSearchCustom:e.tenants.createTenant.fields.configure.logSearchCustom,logSearchVolumeSize:e.tenants.createTenant.fields.configure.logSearchVolumeSize,logSearchSizeFactor:e.tenants.createTenant.fields.configure.logSearchSizeFactor,prometheusVolumeSize:e.tenants.createTenant.fields.configure.prometheusVolumeSize,prometheusSizeFactor:e.tenants.createTenant.fields.configure.prometheusSizeFactor,logSearchSelectedStorageClass:e.tenants.createTenant.fields.configure.logSearchSelectedStorageClass,logSearchImage:e.tenants.createTenant.fields.configure.logSearchImage,kesImage:e.tenants.createTenant.fields.configure.kesImage,logSearchPostgresImage:e.tenants.createTenant.fields.configure.logSearchPostgresImage,logSearchPostgresInitImage:e.tenants.createTenant.fields.configure.logSearchPostgresInitImage,prometheusSelectedStorageClass:e.tenants.createTenant.fields.configure.prometheusSelectedStorageClass,prometheusImage:e.tenants.createTenant.fields.configure.prometheusImage,prometheusSidecarImage:e.tenants.createTenant.fields.configure.prometheusSidecarImage,prometheusInitImage:e.tenants.createTenant.fields.configure.prometheusInitImage,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),ee=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},f.DF),f.oO),f.AK))}))(J((function(e){var t=e.classes,n=(e.storageClasses,e.customImage),r=e.imageName,a=e.customDockerhub,i=e.imageRegistry,l=e.imageRegistryUsername,c=e.imageRegistryPassword,u=(e.exposeMinIO,e.exposeConsole,e.prometheusCustom),m=e.tenantCustom,g=e.logSearchCustom,p=e.logSearchVolumeSize,f=(e.logSearchSizeFactor,e.logSearchImage),h=e.kesImage,x=e.logSearchPostgresImage,v=e.logSearchPostgresInitImage,y=e.prometheusVolumeSize,S=(e.prometheusSizeFactor,e.logSearchSelectedStorageClass),C=e.prometheusSelectedStorageClass,j=e.prometheusImage,A=e.prometheusSidecarImage,k=e.prometheusInitImage,R=e.updateAddField,z=e.isPageValid,D=(e.selectedStorageClass,(0,o.useState)({})),w=(0,s.Z)(D,2),F=w[0],E=w[1],U=(0,o.useCallback)((function(e,t){R("configure",e,t)}),[R]);(0,o.useEffect)((function(){var e=[];u&&(e=[].concat((0,_.Z)(e),[{fieldKey:"prometheus_storage_class",required:!0,value:C,customValidation:""===C,customValidationMessage:"Field cannot be empty"},{fieldKey:"prometheus_volume_size",required:!0,value:y,customValidation:""===y||parseInt(y)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),g&&(e=[].concat((0,_.Z)(e),[{fieldKey:"log_search_storage_class",required:!0,value:S,customValidation:""===S,customValidationMessage:"Field cannot be empty"},{fieldKey:"log_search_volume_size",required:!0,value:p,customValidation:""===p||parseInt(p)<=0,customValidationMessage:"Volume size must be present and be greatter than 0"}])),n&&(e=[].concat((0,_.Z)(e),[{fieldKey:"image",required:!1,value:r,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/minio:VERSION'"},{fieldKey:"logSearchImage",required:!1,value:f,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/logsearchapi:VERSION'"},{fieldKey:"kesImage",required:!1,value:h,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/kes:VERSION'"},{fieldKey:"logSearchPostgresImage",required:!1,value:x,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/postgres:VERSION'"},{fieldKey:"logSearchPostgresInitImage",required:!1,value:v,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"},{fieldKey:"prometheusImage",required:!1,value:j,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'minio/prometheus:VERSION'"},{fieldKey:"prometheusSidecarImage",required:!1,value:A,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'project/container:VERSION'"},{fieldKey:"prometheusInitImage",required:!1,value:k,pattern:/^((.*?)\/(.*?):(.+))$/,customPatternMessage:"Format must be of form: 'library/busybox:VERSION'"}]),a&&(e=[].concat((0,_.Z)(e),[{fieldKey:"registry",required:!0,value:i},{fieldKey:"registryUsername",required:!0,value:l},{fieldKey:"registryPassword",required:!0,value:c}])));var t=(0,P.R)(e);z("configure",0===Object.keys(t).length),E(t)}),[n,r,f,h,x,v,j,A,k,a,i,l,c,z,u,m,g,C,y,S,p]);var K=function(e){E((0,b.h)(F,e))};return(0,T.jsxs)(Z.Z,{className:t.paperWrapper,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Container Images"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Images used by the Tenant Deployment"})]}),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"image",name:"image",onChange:function(e){U("imageName",e.target.value),K("image")},label:"MinIO's Image",value:r,error:F.image||"",placeholder:"E.g. minio/minio:RELEASE.2022-01-08T03-11-54Z"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchImage",name:"logSearchImage",onChange:function(e){U("logSearchImage",e.target.value),K("logSearchImage")},label:"Log Search API's Image",value:f,error:F.logSearchImage||"",placeholder:"E.g. minio/logsearchapi:v4.1.1"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"kesImage",name:"kesImage",onChange:function(e){U("kesImage",e.target.value),K("kesImage")},label:"KES Image",value:h,error:F.kesImage||"",placeholder:"E.g. minio/kes:v0.14.0"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchPostgresImage",name:"logSearchPostgresImage",onChange:function(e){U("logSearchPostgresImage",e.target.value),K("logSearchPostgresImage")},label:"Log Search Postgres's Image",value:x,error:F.logSearchPostgresImage||"",placeholder:"E.g. library/postgres:13"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"logSearchPostgresInitImage",name:"logSearchPostgresInitImage",onChange:function(e){U("logSearchPostgresInitImage",e.target.value),K("logSearchPostgresInitImage")},label:"Log Search Postgres's Init Image",value:v,error:F.logSearchPostgresInitImage||"",placeholder:"E.g. library/busybox:1.33.1"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusImage",name:"prometheusImage",onChange:function(e){U("prometheusImage",e.target.value),K("prometheusImage")},label:"Prometheus Image",value:j,error:F.prometheusImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusSidecarImage",name:"prometheusSidecarImage",onChange:function(e){U("prometheusSidecarImage",e.target.value),K("prometheusSidecarImage")},label:"Prometheus Sidecar Image",value:A,error:F.prometheusSidecarImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"prometheusInitImage",name:"prometheusInitImage",onChange:function(e){U("prometheusInitImage",e.target.value),K("prometheusInitImage")},label:"Prometheus Init Image",value:k,error:F.prometheusInitImage||"",placeholder:"E.g. quay.io/prometheus/prometheus:latest"})})]}),n&&(0,T.jsx)(o.Fragment,{children:(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(N.Z,{value:"custom_docker_hub",id:"custom_docker_hub",name:"custom_docker_hub",checked:a,onChange:function(e){var t=e.target.checked;U("customDockerhub",t)},label:"Set/Update Image Registry"})})}),a&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registry",name:"registry",onChange:function(e){U("imageRegistry",e.target.value)},label:"Endpoint",value:i,error:F.registry||"",placeholder:"E.g. https://index.docker.io/v1/",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registryUsername",name:"registryUsername",onChange:function(e){U("imageRegistryUsername",e.target.value)},label:"Username",value:l,error:F.registryUsername||"",required:!0})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"registryPassword",name:"registryPassword",onChange:function(e){U("imageRegistryPassword",e.target.value)},label:"Password",value:c,error:F.registryPassword||"",required:!0})})]})]})}))),te=n(25534),ne=n(29316),re=n(3143),ae=n.n(re),se=n(32120),ie=n(23473),oe=n(60656),le=n(98280),ce={setErrorSnackMessage:y.Ih},ue=(0,u.$j)(null,ce),de=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({wrapText:{maxWidth:"200px",whiteSpace:"normal",wordWrap:"break-word"}},f.oO),f.Qw))}))(ue((function(e){var t=e.classes,n=e.namespace,r=e.addNamespaceOpen,a=e.closeAddNamespaceModalAndRefresh,i=e.setErrorSnackMessage,l=(0,o.useState)(!1),c=(0,s.Z)(l,2),u=c[0],d=c[1];(0,o.useEffect)((function(){u&&h.Z.invoke("POST","/api/v1/namespace",{name:n}).then((function(e){d(!1),a(!0)})).catch((function(e){d(!1),i(e)}))}),[u,a,n,i]);return(0,T.jsx)(oe.Z,{title:"New namespace",confirmText:"Create",confirmButtonProps:{color:"primary",variant:"contained"},isOpen:r,titleIcon:(0,T.jsx)(le.Ej,{}),isLoading:u,onConfirm:function(){d(!0)},onClose:function(){a(!1)},confirmationContent:(0,T.jsxs)(o.Fragment,{children:[u&&(0,T.jsx)(m.Z,{}),(0,T.jsxs)(ie.Z,{children:["Are you sure you want to add a namespace called",(0,T.jsx)("br",{}),(0,T.jsx)("b",{className:t.wrapText,children:n}),"?"]})]})})}))),me=n(4182),ge=n(35044),pe=n(73481),fe=n(29399),he=n(95995),xe=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.fields.tenantSize.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,cpuToUse:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,integrationSelection:e.tenants.createTenant.fields.tenantSize.integrationSelection}}),{updateAddField:j.HM,isPageValid:j.NO}),ve=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)({root:{margin:4},table:{"& .MuiTableCell-root":{fontSize:13}}},f.oO),f.AK))}))(xe((function(e){var t=e.classes,n=e.nodes,r=e.memoryNode,a=e.ecParity,s=e.distribution,i=e.ecParityCalc,l=e.cpuToUse,c=e.integrationSelection,u=i.storageFactors.find((function(e){return e.erasureCode===a}));return(0,T.jsxs)("div",{className:t.root,children:[(0,T.jsx)("h4",{children:"Resource Allocation"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(ge.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Number of Servers"}),(0,T.jsx)(pe.Z,{align:"right",children:parseInt(n)>0?n:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(pe.Z,{align:"right",children:s?s.disks:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Drive Capacity"}),(0,T.jsx)(pe.Z,{align:"right",children:s?(0,x.ae)(s.pvSize):"-"})]})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Total Volumes"}),(0,T.jsx)(pe.Z,{align:"right",children:s?s.persistentVolumes:"-"})]}),""===c.typeSelection&&""===c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Memory per Node"}),(0,T.jsxs)(pe.Z,{align:"right",children:[r," Gi"]})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{style:{borderBottom:0},scope:"row",children:"CPU Selection"}),(0,T.jsx)(pe.Z,{style:{borderBottom:0},align:"right",children:l})]})]})]})}),0===i.error&&u&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("h4",{children:"Erasure Code Configuration"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(ge.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"EC Parity"}),(0,T.jsx)(pe.Z,{align:"right",children:""!==a?a:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Raw Capacity"}),(0,T.jsx)(pe.Z,{align:"right",children:(0,x.ae)(i.rawCapacity)})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Usable Capacity"}),(0,T.jsx)(pe.Z,{align:"right",children:(0,x.ae)(u.maxCapacity)})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{style:{borderBottom:0},scope:"row",children:"Server Failures Tolerated"}),(0,T.jsx)(pe.Z,{style:{borderBottom:0},align:"right",children:s?Math.floor(u.maxFailureTolerations/s.disks):"-"})]})]})})]}),""!==c.typeSelection&&""!==c.storageClass&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)("h4",{children:"Single Instance Configuration"}),(0,T.jsx)(he.Z,{}),(0,T.jsx)(me.Z,{className:t.table,"aria-label":"simple table",size:"small",children:(0,T.jsxs)(ge.Z,{children:[(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"CPU"}),(0,T.jsx)(pe.Z,{align:"right",children:0!==c.CPU?c.CPU:"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Memory"}),(0,T.jsx)(pe.Z,{align:"right",children:0!==c.memory?"".concat(c.memory," Gi"):"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{scope:"row",children:"Drives per Server"}),(0,T.jsx)(pe.Z,{align:"right",children:0!==c.drivesPerServer?"".concat(c.drivesPerServer):"-"})]}),(0,T.jsxs)(fe.Z,{children:[(0,T.jsx)(pe.Z,{style:{borderBottom:0},scope:"row",children:"Drive Size"}),(0,T.jsxs)(pe.Z,{style:{borderBottom:0},align:"right",children:[c.driveSize.driveSize,c.driveSize.sizeUnit]})]})]})})]})]})}))),ye=n(7262),Se=(0,u.$j)((function(e){return{nodes:e.tenants.createTenant.fields.tenantSize.nodes,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,maxAllocatableResources:e.tenants.createTenant.fields.tenantSize.maxAllocatableResources,maxCPUsUse:e.tenants.createTenant.fields.tenantSize.maxCPUsUse,maxMemorySize:e.tenants.createTenant.fields.tenantSize.maxMemorySize,resourcesSpecifyLimit:e.tenants.createTenant.fields.tenantSize.resourcesSpecifyLimit,resourcesCPURequestError:e.tenants.createTenant.fields.tenantSize.resourcesCPURequestError,resourcesCPURequest:e.tenants.createTenant.fields.tenantSize.resourcesCPURequest,resourcesCPULimitError:e.tenants.createTenant.fields.tenantSize.resourcesCPULimitError,resourcesCPULimit:e.tenants.createTenant.fields.tenantSize.resourcesCPULimit,resourcesMemoryRequestError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequestError,resourcesMemoryRequest:e.tenants.createTenant.fields.tenantSize.resourcesMemoryRequest,resourcesMemoryLimitError:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimitError,resourcesMemoryLimit:e.tenants.createTenant.fields.tenantSize.resourcesMemoryLimit}}),{updateAddField:j.HM,isPageValid:j.NO}),Ce=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(Se((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.nodes,s=e.resourcesSize,i=e.selectedStorageClass,l=(e.maxAllocatableResources,e.maxCPUsUse),u=e.maxMemorySize,m=e.resourcesSpecifyLimit,g=e.resourcesCPURequestError,p=e.resourcesCPURequest,f=e.resourcesCPULimitError,x=e.resourcesCPULimit,v=e.resourcesMemoryRequestError,y=e.resourcesMemoryRequest,S=e.resourcesMemoryLimitError,C=e.resourcesMemoryLimit,j=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]);return(0,o.useEffect)((function(){r("tenantSize",""===v&&""===S&&""===g&&""===f)}),[r,v,S,g,f]),(0,o.useEffect)((function(){h.Z.invoke("GET","api/v1/cluster/allocatable-resources?num_nodes=".concat(a)).then((function(e){j("maxAllocatableResources",e);var t=e,n=c()(t,"min_allocatable_mem",!1),r=c()(t,"min_allocatable_cpu",!1);if(!1===n||!1===r)return j("cpuToUse",0),j("maxMemorySize",""),void j("maxCPUsUse","");var a=(0,ye.floor)(e.mem_priority.max_allocatable_mem/1024/1024/1024);j("maxMemorySize",a.toString()),j("maxCPUsUse",e.cpu_priority.max_allocatable_cpu.toString());var s=c()(t,"cpu_priority.max_allocatable_cpu",0),i=Math.max(1,(0,ye.floor)(s/2));""===p&&j("resourcesCPURequest",i);var o=Math.max(2,(0,ye.floor)(a/2));""===y&&j("resourcesMemoryRequest",o)})).catch((function(e){j("maxMemorySize",0),j("resourcesCPURequest",""),j("resourcesMemoryRequest",""),console.error(e)}))}),[a,j]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Resources"}),(0,T.jsx)("span",{className:t.descriptionText,children:"You may specify the amount of CPU and Memory that MinIO servers should reserve on each node."})]})}),""!==s.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:s.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{label:"CPU Request",id:"resourcesCPURequest",name:"resourcesCPURequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPURequestError",""):isNaN(t)?j("resourcesCPURequestError","Invalid number"):t>parseInt(l)?j("resourcesCPURequestError","Request exceeds available cores (".concat(l,")")):e.target.validity.valid?j("resourcesCPURequestError",""):j("resourcesCPURequestError","Invalid configuration"),j("resourcesCPURequest",e.target.value)},value:p,disabled:""===i,max:l,error:g,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"resourcesMemoryRequest",name:"resourcesMemoryRequest",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesMemoryRequestError",""):isNaN(t)?j("resourcesMemoryRequestError","Invalid number"):t>parseInt(u)?j("resourcesMemoryRequestError","Request exceeds available memory across ".concat(a," nodes (").concat(u,"Gi)")):t<2?j("resourcesMemoryRequestError","At least 2Gi must be requested"):e.target.validity.valid?j("resourcesMemoryRequestError",""):j("resourcesMemoryRequestError","Invalid configuration"),j("resourcesMemoryRequest",e.target.value)},label:"Memory Request [Gi]",value:y,disabled:""===i,error:v,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)(N.Z,{value:"resourcesSpecifyLimit",id:"resourcesSpecifyLimit",name:"resourcesSpecifyLimit",checked:m,onChange:function(e){var t=e.target.checked;j("resourcesSpecifyLimit",t)},label:"Specify Limit"})}),m&&(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{label:"CPU Limit",id:"resourcesCPULimit",name:"resourcesCPULimit",onChange:function(e){var t=parseInt(e.target.value);""===e.target.value?j("resourcesCPULimitError",""):isNaN(t)?j("resourcesCPULimitError","Invalid number"):e.target.validity.valid?j("resourcesCPULimitError",""):j("resourcesCPULimitError","Invalid configuration"),j("resourcesCPULimit",e.target.value)},value:x,disabled:""===i,max:l,error:f,pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"resourcesMemoryLimit",name:"resourcesMemoryLimit",onChange:function(e){var t=parseInt(e.target.value);console.log("value",t),""===e.target.value?j("resourcesMemoryLimitError",""):isNaN(t)?j("resourcesMemoryLimitError","Invalid number"):e.target.validity.valid?j("resourcesMemoryLimitError",""):j("resourcesMemoryLimitError","Invalid configuration"),j("resourcesMemoryLimit",e.target.value)},label:"Memory Limit [Gi]",value:C,disabled:""===i,error:S,pattern:"[0-9]*"})})]})]})}))),je=(0,u.$j)((function(e){return{volumeSize:e.tenants.createTenant.fields.tenantSize.volumeSize,sizeFactor:e.tenants.createTenant.fields.tenantSize.sizeFactor,drivesPerServer:e.tenants.createTenant.fields.tenantSize.drivesPerServer,nodes:e.tenants.createTenant.fields.tenantSize.nodes,memoryNode:e.tenants.createTenant.fields.tenantSize.memoryNode,ecParity:e.tenants.createTenant.fields.tenantSize.ecParity,ecParityChoices:e.tenants.createTenant.fields.tenantSize.ecParityChoices,cleanECChoices:e.tenants.createTenant.fields.tenantSize.cleanECChoices,resourcesSize:e.tenants.createTenant.fields.tenantSize.resourcesSize,distribution:e.tenants.createTenant.fields.tenantSize.distribution,ecParityCalc:e.tenants.createTenant.fields.tenantSize.ecParityCalc,limitSize:e.tenants.createTenant.limitSize,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{updateAddField:j.HM,isPageValid:j.NO}),_e=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(je((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.volumeSize,i=e.sizeFactor,l=e.drivesPerServer,c=e.nodes,u=e.memoryNode,m=e.ecParity,g=e.ecParityChoices,p=e.cleanECChoices,f=e.resourcesSize,v=e.distribution,y=e.ecParityCalc,S=e.limitSize,C=e.selectedStorageClass,j=(0,o.useState)({}),_=(0,s.Z)(j,2),Z=_[0],N=_[1],k=(0,o.useState)(!1),R=(0,s.Z)(k,2),z=R[0],D=R[1],w=(0,o.useState)(""),F=(0,s.Z)(w,2),E=F[0],U=F[1],K=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),q=function(e){N((0,b.h)(Z,e))};return(0,o.useEffect)((function(){if(g.length>0&&""===v.error){var e=(0,x.ES)(p,v.persistentVolumes,v.pvSize,v.nodes);K("ecParityCalc",e),p.includes(m)&&""!==m||K("ecParity",e.defaultEC)}}),[m,g.length,v,p,K]),(0,o.useEffect)((function(){var e=a,t=i,n=(0,x.Pw)("12","Ti",!0),r={unit:t,value:e.toString()},s=(0,x.zg)(r,parseInt(c),parseInt(n),parseInt(l));K("distribution",s),D(!1),U("")}),[c,a,i,K,l]),(0,o.useEffect)((function(){var e=(0,x.Pw)(a,i,!0),t=(0,P.R)([{fieldKey:"nodes",required:!0,value:c,customValidation:z,customValidationMessage:E},{fieldKey:"volume_size",required:!0,value:a,customValidation:parseInt(e)<1073741824||parseInt(e)>S[C],customValidationMessage:"Volume size must be greater than 1Gi and less than ".concat((0,x.ae)(S[C],!0))},{fieldKey:"drivesps",required:!0,value:l,customValidation:parseInt(l)<1,customValidationMessage:"There must be at least one drive"}]);r("tenantSize",!("nodes"in t)&&!("volume_size"in t)&&!("drivesps"in t)&&""===v.error&&0===y.error&&""!==m),N(t)}),[c,a,i,u,v,y,f,S,C,r,z,E,l,m]),(0,o.useEffect)((function(){""===v.error&&""!==c.trim()&&0!==v.disks&&h.Z.invoke("GET","api/v1/get-parity/".concat(c,"/").concat(v.disks)).then((function(e){K("ecParityChoices",(0,se.dv)(e)),K("cleanECChoices",e)})).catch((function(e){K("ecparityChoices",[]),r("tenantSize",!1),K("ecParity","")}))}),[v,r,K,c]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Capacity"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==v.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:v.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){e.target.validity.valid&&(K("nodes",e.target.value),q("nodes"))},label:"Number of Servers",disabled:""===C,value:c,min:"4",required:!0,error:Z.nodes||"",pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"drivesps",name:"drivesps",onChange:function(e){e.target.validity.valid&&(K("drivesPerServer",e.target.value),q("drivesps"))},label:"Drives per Server",value:l,disabled:""===C,min:"1",required:!0,error:Z.drivesps||"",pattern:"[0-9]*"})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.multiContainer,children:(0,T.jsx)("div",{className:t.formFieldRow,children:(0,T.jsxs)("div",{className:t.compositeFieldContainer,children:[(0,T.jsx)(I.Z,{type:"number",id:"volume_size",name:"volume_size",onChange:function(e){K("volumeSize",e.target.value),q("volume_size")},label:"Total Size",value:a,disabled:""===C,required:!0,error:Z.volume_size||"",min:"0"}),(0,T.jsx)("div",{className:t.compositeAddOn,children:(0,T.jsx)(A.Z,{label:"",id:"size_factor",name:"size_factor",value:i,disabled:""===C,onChange:function(e){K("sizeFactor",e.target.value)},options:(0,x.QU)()})})]})})})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,T.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){K("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===C,value:m,options:g}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]}),(0,T.jsx)(Ce,{})]})}))),Ze=n(36222),be=(0,u.$j)((function(e){return function(){var t=e.tenants.createTenant,n=t.fields.tenantSize,r=n.memoryNode,a=n.ecParityChoices,s=n.distribution,i=n.cleanECChoices,o=n.sizeFactor,l=n.ecParity,c=n.cpuToUse,u=n.integrationSelection,d=n.resourcesSize,m=n.drivesPerServer,g=n.maxCPUsUse,p=n.ecParityCalc;return{volumeSize:n.volumeSize,sizeFactor:o,drivesPerServer:m,nodes:n.nodes,memoryNode:r,ecParity:l,ecParityChoices:a,cleanECChoices:i,resourcesSize:d,distribution:s,ecParityCalc:p,cpuToUse:c,maxCPUsUse:g,integrationSelection:u,limitSize:t.limitSize,selectedStorageType:t.fields.nameTenant.selectedStorageType}}}),{updateAddField:j.HM,isPageValid:j.NO}),Pe=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({compositeFieldContainer:{display:"flex",alignItems:"center"},compositeAddOn:{marginLeft:10,"& div":{marginBottom:0},"@media (max-width: 900px)":{"& div":{marginTop:5}}}},f.DF),f.oO),f.AK))}))(be((function(e){var t=e.classes,n=e.updateAddField,r=e.isPageValid,a=e.volumeSize,i=e.sizeFactor,l=e.drivesPerServer,u=e.nodes,m=e.memoryNode,g=e.ecParity,p=e.ecParityChoices,f=e.cleanECChoices,v=e.resourcesSize,y=e.distribution,S=e.ecParityCalc,C=e.limitSize,j=e.cpuToUse,_=e.selectedStorageType,Z=e.maxCPUsUse,N=e.formToRender,k=e.integrationSelection,R=(0,o.useState)({}),z=(0,s.Z)(R,2),D=z[0],w=z[1],F=(0,o.useCallback)((function(e,t){n("tenantSize",e,t)}),[n]),E=(0,o.useCallback)((function(e,t){n("nameTenant",e,t)}),[n]);return(0,o.useEffect)((function(){if(p.length>0&&""===y.error){var e=(0,x.ES)(f,y.persistentVolumes,y.pvSize,y.nodes);F("ecParityCalc",e),f.includes(g)&&""!==g||F("ecParity",e.defaultEC)}}),[g,p,y,f,F]),(0,o.useEffect)((function(){if(void 0!==N&&parseInt(u)>=4){var e=Ie[N];if(Object.keys(e).length>0){var t=c()(e,"configurations",[]).find((function(e){return e.typeSelection===_}));if(t){F("integrationSelection",t),E("selectedStorageClass",t.storageClass);var n={pvSize:parseInt((0,x.Pw)(t.driveSize.driveSize,t.driveSize.sizeUnit,!0),10),nodes:parseInt(u),disks:t.drivesPerServer,persistentVolumes:t.drivesPerServer*parseInt(u),error:""};F("distribution",n),F("resourcesCPURequest",Math.max(1,t.CPU/2)),F("resourcesMemoryRequest",Math.max(2,t.memory/2))}}}}),[u,_,N,F,E]),(0,o.useEffect)((function(){var e=(0,P.R)([{fieldKey:"nodes",required:!0,value:u,customValidation:parseInt(u)<4,customValidationMessage:"Al least 4 servers must be selected"}]);r("tenantSize",!("nodes"in e)&&""===y.error&&0===S.error&&""===v.error&&""!==g&&parseInt(u)>=4),w(e)}),[u,a,i,m,y,S,v,C,_,j,Z,r,l,g]),(0,o.useEffect)((function(){0!==k.drivesPerServer&&""!==u.trim()&&h.Z.invoke("GET","api/v1/get-parity/".concat(u,"/").concat(k.drivesPerServer)).then((function(e){F("ecParityChoices",(0,se.dv)(e)),F("cleanECChoices",e)})).catch((function(e){F("ecparityChoices",[]),r("tenantSize",!1),F("ecParity","")}))}),[k,u,r,F]),(0,T.jsxs)(o.Fragment,{children:[(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Tenant Size"}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired capacity"})]})}),""!==y.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:y.error})}),""!==v.error&&(0,T.jsx)(d.ZP,{item:!0,xs:12,children:(0,T.jsx)("div",{className:t.error,children:v.error})}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"nodes",name:"nodes",onChange:function(e){var t;e.target.validity.valid&&(F("nodes",e.target.value),t="nodes",w((0,b.h)(D,t)))},label:"Number of Servers",disabled:""===_,value:u,min:"4",required:!0,error:D.nodes||"",pattern:"[0-9]*"})}),(0,T.jsxs)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:[(0,T.jsx)(A.Z,{id:"ec_parity",name:"ec_parity",onChange:function(e){F("ecParity",e.target.value)},label:"Erasure Code Parity",disabled:""===_,value:g,options:p}),(0,T.jsx)("span",{className:t.descriptionText,children:"Please select the desired parity. This setting will change the max usable capacity in the cluster"})]})]})})));!function(e){e[e.aws=0]="aws",e[e.azure=1]="azure",e[e.gcp=2]="gcp",e[e.default=3]="default",e[e[void 0]=4]="undefined"}(a||(a={}));var Ne={"mp-mode-aws":a.aws,"mp-mode-azure":a.azure,"mp-mode-gcp":a.gcp},Ie=(r={},(0,Ze.Z)(r,a.aws,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"NVME",value:"nvme"},{label:"HDD",value:"hdd"}],configurations:[{typeSelection:"nvme",storageClass:"nvme-i3en-12xlarge",CPU:48,memory:384,driveSize:{driveSize:"7500",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"hdd",storageClass:"hdd-d3en-12xlarge",CPU:8,memory:32,driveSize:{driveSize:"12.7",sizeUnit:"Ti"},drivesPerServer:4}],sizingComponent:(0,T.jsx)(Pe,{formToRender:a.aws})}),(0,Ze.Z)(r,a.azure,{variantSelectorLabel:"VM Size",variantSelectorValues:[{label:"Standard_L32s_v2",value:"Standard_L32s_v2"},{label:"Standard_L48s_v2",value:"Standard_L48s_v2"},{label:"Standard_L64s_v2",value:"Standard_L64s_v2"}],configurations:[{typeSelection:"Standard_L8s_v2",storageClass:"local-nvme",CPU:8,memory:64,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:1},{typeSelection:"Standard_L16s_v2",storageClass:"local-nvme",CPU:16,memory:128,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:2},{typeSelection:"Standard_L32s_v2",storageClass:"local-nvme",CPU:32,memory:256,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:4},{typeSelection:"Standard_L48s_v2",storageClass:"local-nvme",CPU:48,memory:384,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:6},{typeSelection:"Standard_L64s_v2",storageClass:"local-nvme",CPU:64,memory:512,driveSize:{driveSize:"1787",sizeUnit:"Gi"},drivesPerServer:8}],sizingComponent:(0,T.jsx)(Pe,{formToRender:a.azure})}),(0,Ze.Z)(r,a.gcp,{variantSelectorLabel:"Storage Type",variantSelectorValues:[{label:"SSD",value:"ssd"}],configurations:[{typeSelection:"ssd",storageClass:"local-ssd",CPU:32,memory:128,driveSize:{driveSize:"368",sizeUnit:"Gi"},drivesPerServer:24}],sizingComponent:(0,T.jsx)(Pe,{formToRender:a.gcp})}),(0,Ze.Z)(r,a.default,{}),(0,Ze.Z)(r,a.undefined,{}),r),Ae=(0,u.$j)((function(e){return{tenantName:e.tenants.createTenant.fields.nameTenant.tenantName,namespace:e.tenants.createTenant.fields.nameTenant.namespace,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass,selectedStorageType:e.tenants.createTenant.fields.nameTenant.selectedStorageType,storageClasses:e.tenants.createTenant.storageClasses}}),{setModalErrorSnackMessage:y.zb,updateAddField:j.HM,setStorageClassesList:j.wZ,setLimitSize:j.DH,isPageValid:j.NO}),Te=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({sizePreview:{position:"fixed",marginLeft:10,background:"#FFFFFF",border:"1px solid #EAEAEA",padding:2}},f.DF),f.oO),f.AK))}))(Ae((function(e){var t=e.classes,n=e.storageClasses,r=e.tenantName,i=e.namespace,l=e.selectedStorageClass,u=e.selectedStorageType,m=e.formToRender,g=void 0===m?a.default:m,p=e.updateAddField,f=e.setStorageClassesList,x=e.setLimitSize,v=e.isPageValid,y=e.setModalErrorSnackMessage,S=(0,o.useState)({}),C=(0,s.Z)(S,2),j=C[0],_=C[1],N=(0,o.useState)(!0),k=(0,s.Z)(N,2),R=k[0],z=k[1],D=(0,o.useState)(!1),w=(0,s.Z)(D,2),F=w[0],E=w[1],U=(0,o.useState)(!1),K=(0,s.Z)(U,2),q=K[0],G=K[1],L=(0,o.useState)(!1),M=(0,s.Z)(L,2),O=M[0],B=M[1],$=(0,o.useCallback)((function(e,t){p("nameTenant",e,t)}),[p]),W=(0,o.useCallback)((function(){G(!1),h.Z.invoke("GET","/api/v1/namespaces/".concat(i,"/tenants")).then((function(e){var t=c()(e,"tenants",[]);if(t&&t.length>0)return z(!1),void E(!1);z(!0),h.Z.invoke("GET","/api/v1/namespaces/".concat(i,"/resourcequotas/").concat(i,"-storagequota")).then((function(e){var t=c()(e,"elements",[]);x((0,se.OU)(e));var n=t.map((function(e){var t=c()(e,"name","").split(".storageclass.storage.k8s.io/requests.storage")[0];return{label:t,value:t}}));f(n);var r=n.findIndex((function(e){return e.value===l}));n.length>0&&-1===r?$("selectedStorageClass",n[0].value):0===n.length&&($("selectedStorageClass",""),f([])),E(!1)})).catch((function(e){E(!1),G(!0),$("selectedStorageClass",""),f([]),console.error("Namespace error: ",e)}))})).catch((function(e){y({errorMessage:"Error validating if namespace already has tenants",detailedError:e.detailedError})}))}),[i,x,y,f,$,l]),H=(0,o.useMemo)((function(){return ae()(W,500)}),[W]);(0,o.useEffect)((function(){if(""!==i)return H(),E(!0),H.cancel}),[H,i]),(0,o.useEffect)((function(){var e=!1,t="";R||F?n.length<1&&R&&!F&&(e=!0,t="Please enter a valid namespace"):(e=!0,t="You can only create one tenant per namespace");var s=(0,P.R)([{fieldKey:"tenant-name",required:!0,pattern:/^[a-z0-9-]{3,63}$/,customPatternMessage:"Name only can contain lowercase letters, numbers and '-'. Min. Length: 3",value:r},{fieldKey:"namespace",required:!0,value:i,customValidation:e,customValidationMessage:t}]),o=!("tenant-name"in s)&&!("namespace"in s)&&(g===a.default&&n.length>0||g!==a.default&&""!==u);v("nameTenant",o),_(s)}),[n,i,r,v,R,F,u,g]);var Y=function(e){_((0,b.h)(j,e))};return(0,T.jsxs)(o.Fragment,{children:[O&&(0,T.jsx)(de,{addNamespaceOpen:O,closeAddNamespaceModalAndRefresh:function(e){B(!1),e&&H()},namespace:i}),(0,T.jsxs)(d.ZP,{container:!0,children:[(0,T.jsx)(d.ZP,{item:!0,xs:8,md:9,children:(0,T.jsx)(Z.Z,{className:t.paperWrapper,sx:{minHeight:550},children:(0,T.jsxs)(d.ZP,{container:!0,children:[(0,T.jsxs)(d.ZP,{item:!0,xs:12,children:[(0,T.jsxs)("div",{className:t.headerElement,children:[(0,T.jsx)("h3",{className:t.h3Section,children:"Name"}),(0,T.jsx)("span",{className:t.descriptionText,children:"How would you like to name this new tenant?"})]}),(0,T.jsx)("div",{className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"tenant-name",name:"tenant-name",onChange:function(e){$("tenantName",e.target.value),Y("tenant-name")},label:"Name",value:r,required:!0,error:j["tenant-name"]||""})})]}),(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(I.Z,{id:"namespace",name:"namespace",onChange:function(e){$("namespace",e.target.value),Y("namespace")},label:"Namespace",value:i,error:j.namespace||"",overlayIcon:q?(0,T.jsx)(V.Z,{}):null,overlayAction:function(){B(!0)},required:!0})}),g===a.default?(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_class",name:"storage_class",onChange:function(e){$("selectedStorageClass",e.target.value)},label:"Storage Class",value:l,options:n,disabled:n.length<1})}):(0,T.jsx)(d.ZP,{item:!0,xs:12,className:t.formFieldRow,children:(0,T.jsx)(A.Z,{id:"storage_type",name:"storage_type",onChange:function(e){$("selectedStorageType",e.target.value)},label:c()(Ie,"".concat(g,".variantSelectorLabel"),"Storage Type"),value:u,options:c()(Ie,"".concat(g,".variantSelectorValues"),[])})}),g===a.default?(0,T.jsx)(_e,{}):c()(Ie,"".concat(g,".sizingComponent"),null)]})})}),(0,T.jsx)(d.ZP,{item:!0,xs:4,md:3,children:(0,T.jsx)("div",{className:t.sizePreview,children:(0,T.jsx)(ve,{})})})]})]})}))),ke=(0,u.$j)((function(e){return{features:e.console.session.features}}),null)((function(e){var t=e.features,n=(0,o.useState)(null),r=(0,s.Z)(n,2),i=r[0],l=r[1];return(0,o.useEffect)((function(){var e=a.default;t&&0!==t.length&&Object.keys(Ne).forEach((function(n){t.includes(n)&&(e=c()(Ne,n,a.default))}));l(e)}),[t]),null===i?null:(0,T.jsx)(Te,{formToRender:i})})),Re=(0,u.$j)((function(e){return{namespace:e.tenants.createTenant.fields.nameTenant.namespace,validPages:e.tenants.createTenant.validPages,fields:e.tenants.createTenant.fields,certificates:e.tenants.createTenant.certificates,selectedStorageClass:e.tenants.createTenant.fields.nameTenant.selectedStorageClass}}),{setErrorSnackMessage:y.Ih,updateAddField:j.HM,resetAddTenantForm:j.dS}),ze=(0,p.Z)((function(e){return(0,g.Z)((0,i.Z)((0,i.Z)((0,i.Z)({pageBox:{border:"1px solid #EAEAEA"}},f.oO),f.AK),f.Je))}))(Re((function(e){var t=e.classes,n=e.fields,r=e.certificates,a=e.selectedStorageClass,l=e.namespace,u=e.validPages,g=e.setErrorSnackMessage,p=e.resetAddTenantForm,f=(0,o.useState)(!1),y=(0,s.Z)(f,2),j=y[0],_=y[1],Z=(0,o.useState)(null),b=(0,s.Z)(Z,2),P=b[0],N=b[1],I=(0,o.useState)(!1),A=(0,s.Z)(I,2),k=A[0],z=A[1];(0,o.useEffect)((function(){var e=n.nameTenant.tenantName,t=n.nameTenant.selectedStorageClass,a=n.configure.imageName,s=n.configure.customDockerhub,o=n.configure.imageRegistry,u=n.configure.imageRegistryUsername,d=n.configure.imageRegistryPassword,m=n.configure.exposeMinIO,p=n.configure.exposeConsole,f=n.identityProvider.idpSelection,v=n.identityProvider.openIDConfigurationURL,y=n.identityProvider.openIDClientID,C=n.identityProvider.openIDClaimName,j=n.identityProvider.openIDCallbackURL,Z=n.identityProvider.openIDScopes,b=n.identityProvider.openIDSecretID,P=n.identityProvider.ADURL,I=n.identityProvider.ADSkipTLS,A=n.identityProvider.ADServerInsecure,T=n.identityProvider.ADUserNameSearchFilter,R=n.identityProvider.ADGroupSearchBaseDN,D=n.identityProvider.ADGroupSearchFilter,w=n.identityProvider.ADGroupNameAttribute,F=n.identityProvider.ADUserDNs,E=n.identityProvider.ADUserNameFormat,U=n.identityProvider.ADLookupBindDN,K=n.identityProvider.ADLookupBindPassword,q=n.identityProvider.ADUserDNSearchBaseDN,G=n.identityProvider.ADUserDNSearchFilter,L=n.identityProvider.ADServerStartTLS,M=n.identityProvider.accessKeys,V=n.identityProvider.secretKeys,O=r.minioCertificates,B=r.caCertificates,$=r.consoleCaCertificates,W=r.consoleCertificate,H=r.serverCertificate,Y=r.clientCertificate,Q=r.vaultCertificate,X=r.vaultCA,J=r.gemaltoCA,ee=n.encryption.enableEncryption,te=n.encryption.encryptionType,ne=n.encryption.gemaltoEndpoint,re=n.encryption.gemaltoToken,ae=n.encryption.gemaltoDomain,se=n.encryption.gemaltoRetry,ie=n.encryption.awsEndpoint,oe=n.encryption.awsRegion,le=n.encryption.awsKMSKey,ce=n.encryption.awsAccessKey,ue=n.encryption.awsSecretKey,de=n.encryption.awsToken,me=n.encryption.vaultEndpoint,ge=n.encryption.vaultEngine,pe=n.encryption.vaultNamespace,fe=n.encryption.vaultPrefix,he=n.encryption.vaultAppRoleEngine,xe=n.encryption.vaultId,ve=n.encryption.vaultSecret,ye=n.encryption.vaultRetry,Se=n.encryption.vaultPing,Ce=n.encryption.azureEndpoint,je=n.encryption.azureTenantID,_e=n.encryption.azureClientID,Ze=n.encryption.azureClientSecret,be=n.encryption.gcpProjectID,Pe=n.encryption.gcpEndpoint,Ne=n.encryption.gcpClientEmail,Ie=n.encryption.gcpClientID,Ae=n.encryption.gcpPrivateKeyID,Te=n.encryption.gcpPrivateKey,ke=n.security.enableAutoCert,Re=n.security.enableTLS,ze=n.tenantSize.ecParity,De=n.tenantSize.distribution,we=n.configure.tenantCustom,Fe=n.configure.logSearchCustom,Ee=n.configure.prometheusCustom,Ue=n.configure.logSearchVolumeSize,Ke=n.configure.logSearchSelectedStorageClass,qe=n.configure.logSearchImage,Ge=n.configure.kesImage,Le=n.configure.logSearchPostgresImage,Me=n.configure.logSearchPostgresInitImage,Ve=n.configure.prometheusImage,Oe=n.configure.prometheusSidecarImage,Be=n.configure.prometheusInitImage,$e=n.configure.prometheusSelectedStorageClass,We=n.configure.prometheusVolumeSize,He=n.affinity.podAffinity,Ye=n.affinity.nodeSelectorLabels,Qe=n.affinity.withPodAntiAffinity,Xe=n.configure.tenantSecurityContext,Je=n.configure.logSearchSecurityContext,et=n.configure.logSearchPostgresSecurityContext,tt=n.configure.prometheusSecurityContext,nt=n.encryption.kesSecurityContext,rt=n.encryption.replicas;if(k){var at=(0,x.en)([]),st={};switch(He){case"default":st={affinity:(0,S.P)(e,at)};break;case"nodeSelector":st={affinity:(0,S.q)(Ye,Qe,e,at)}}var it=ze.split(":")[1],ot={name:e,namespace:l,access_key:"",secret_key:"",access_keys:[],secret_keys:[],enable_tls:Re&&ke,enable_console:!0,enable_prometheus:!0,service_name:"",image:a,expose_minio:m,expose_console:p,pools:[(0,i.Z)({name:at,servers:De.nodes,volumes_per_server:De.disks,volume_configuration:{size:De.pvSize,storage_class_name:t},securityContext:we?Xe:null},st)],erasureCodingParity:parseInt(it,10)};""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryRequest&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources={},""===n.tenantSize.resourcesCPURequest&&""===n.tenantSize.resourcesMemoryRequest||(ot.pools[0].resources.requests={},""!==n.tenantSize.resourcesCPURequest&&(ot.pools[0].resources.requests.cpu=parseInt(n.tenantSize.resourcesCPURequest)),""!==n.tenantSize.resourcesMemoryRequest&&(ot.pools[0].resources.requests.memory=parseInt((0,x.Pw)(n.tenantSize.resourcesMemoryRequest,"Gi",!0)))),""===n.tenantSize.resourcesCPULimit&&""===n.tenantSize.resourcesMemoryLimit||(ot.pools[0].resources.limits={},""!==n.tenantSize.resourcesCPULimit&&(ot.pools[0].resources.limits.cpu=parseInt(n.tenantSize.resourcesCPULimit)),""!==n.tenantSize.resourcesMemoryLimit&&(ot.pools[0].resources.limits.memory=parseInt((0,x.Pw)(n.tenantSize.resourcesMemoryLimit,"Gi",!0))))),s&&(ot=(0,i.Z)((0,i.Z)({},ot),{},{image_registry:{registry:o,username:u,password:d}})),ot=Fe?(0,i.Z)((0,i.Z)({},ot),{},{logSearchConfiguration:{storageClass:"default"===Ke?"":Ke,storageSize:parseInt(Ue),image:qe,postgres_image:Le,postgres_init_image:Me,securityContext:Je,postgres_securityContext:et}}):(0,i.Z)((0,i.Z)({},ot),{},{logSearchConfiguration:{image:qe,postgres_image:Le,postgres_init_image:Me}}),ot=Ee?(0,i.Z)((0,i.Z)({},ot),{},{prometheusConfiguration:{storageClass:"default"===$e?"":$e,storageSize:parseInt(We),image:Ve,sidecar_image:Oe,init_image:Be,securityContext:tt}}):(0,i.Z)((0,i.Z)({},ot),{},{prometheusConfiguration:{image:Ve,sidecar_image:Oe,init_image:Be}});var lt=null,ct=null,ut=null,dt=null;if(B.length>0&&(ut={ca_certificates:B.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),$.length>0&&(dt={console_ca_certificates:$.map((function(e){return e.encoded_cert})).filter((function(e){return e}))}),Re&&O.length>0&&(lt={minio:O.map((function(e){return{crt:e.encoded_cert,key:e.encoded_key}})).filter((function(e){return e.crt&&e.key}))}),Re&&""!==W.encoded_cert&&""!==W.encoded_key&&(ct={console:{crt:W.encoded_cert,key:W.encoded_key}}),(lt||ct||ut||dt)&&(ot=(0,i.Z)((0,i.Z)({},ot),{},{tls:(0,i.Z)((0,i.Z)((0,i.Z)((0,i.Z)({},lt),ct),ut),dt)})),ee){var mt={};switch(te){case"gemalto":var gt={};""!==J.encoded_cert&&(gt={ca:J.encoded_cert}),mt={gemalto:{keysecure:{endpoint:ne,credentials:{token:re,domain:ae,retry:parseInt(se)},tls:(0,i.Z)({},gt)}}};break;case"aws":mt={aws:{secretsmanager:{endpoint:ie,region:oe,kmskey:le,credentials:{accesskey:ce,secretkey:ue,token:de}}}};break;case"azure":mt={azure:{keyvault:{endpoint:Ce,credentials:{tenant_id:je,client_id:_e,client_secret:Ze}}}};break;case"gcp":mt={gcp:{secretmanager:{project_id:be,endpoint:Pe,credentials:{client_email:Ne,client_id:Ie,private_key_id:Ae,private_key:Te}}}};break;case"vault":var pt=null,ft=null;""!==Q.encoded_key&&""!==Q.encoded_cert&&(pt={key:Q.encoded_key,crt:Q.encoded_cert}),""!==X.encoded_cert&&(ft={ca:X.encoded_cert});var ht=null;(pt||X)&&(ht={tls:(0,i.Z)((0,i.Z)({},pt),ft)}),mt={vault:(0,i.Z)((0,i.Z)({endpoint:me,engine:ge,namespace:pe,prefix:fe,approle:{engine:he,id:xe,secret:ve,retry:parseInt(ye)}},ht),{},{status:{ping:parseInt(Se)}})}}var xt={},vt={};""!==Y.encoded_key&&""!==Y.encoded_cert&&(vt={client:{key:Y.encoded_key,crt:Y.encoded_cert}}),""!==H.encoded_key&&""!==H.encoded_cert&&(xt={server:{key:H.encoded_key,crt:H.encoded_cert}}),ot=(0,i.Z)((0,i.Z)({},ot),{},{encryption:(0,i.Z)((0,i.Z)((0,i.Z)({replicas:rt,securityContext:nt,image:Ge},vt),xt),mt)})}var yt={};switch(f){case"Built-in":for(var St=[],Ct=0;Ct.\n\nimport React from \"react\";\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 { BackSettingsIcon } from \"../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n link: {\n display: \"flex\",\n alignItems: \"center\",\n textDecoration: \"none\",\n maxWidth: \"300px\",\n padding: \"2rem 2rem 0rem 2rem\",\n color: theme.palette.primary.light,\n fontSize: \".8rem\",\n \"&:hover\": {\n textDecoration: \"underline\",\n },\n },\n icon: {\n marginRight: \".3rem\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& svg.min-icon\": {\n width: 12,\n },\n },\n });\n\ninterface IBackLink {\n classes: any;\n to: string;\n label: string;\n className?: any;\n executeOnClick?: () => void;\n}\n\nconst BackLink = ({\n to,\n label,\n classes,\n className,\n executeOnClick,\n}: IBackLink) => {\n return (\n {\n if (executeOnClick) {\n executeOnClick();\n }\n }}\n >\n
\n \n
\n
{label}
\n \n );\n};\n\nexport default withStyles(styles)(BackLink);\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 { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\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 get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\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\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\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 get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\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 fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\n }\n }\n };\n};\n","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n
\n \n \n {children}\n \n \n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\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 { Opts } from \"../../../ListTenants/utils\";\nimport TenantSizeMK from \"./TenantSizeMK\";\n\nexport enum IMkEnvs {\n \"aws\",\n \"azure\",\n \"gcp\",\n \"default\",\n undefined,\n}\n\nexport interface IDriveSizing {\n driveSize: string;\n sizeUnit: string;\n}\n\nexport interface IntegrationConfiguration {\n typeSelection: string;\n storageClass: string;\n CPU: number;\n memory: number;\n drivesPerServer: number;\n driveSize: IDriveSizing;\n}\n\nexport const AWSStorageTypes: Opts[] = [\n { label: \"NVME\", value: \"nvme\" },\n { label: \"HDD\", value: \"hdd\" },\n];\n\nexport const AzureStorageTypes: Opts[] = [\n { label: \"Standard_L32s_v2\", value: \"Standard_L32s_v2\" },\n { label: \"Standard_L48s_v2\", value: \"Standard_L48s_v2\" },\n { label: \"Standard_L64s_v2\", value: \"Standard_L64s_v2\" },\n];\n\nexport const resourcesConfigurations = {\n \"mp-mode-aws\": IMkEnvs.aws,\n \"mp-mode-azure\": IMkEnvs.azure,\n \"mp-mode-gcp\": IMkEnvs.gcp,\n};\n\nexport const AWSConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"nvme\",\n storageClass: \"nvme-i3en-12xlarge\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"7500\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"hdd\",\n storageClass: \"hdd-d3en-12xlarge\",\n CPU: 8,\n memory: 32,\n driveSize: { driveSize: \"12.7\", sizeUnit: \"Ti\" },\n drivesPerServer: 4,\n },\n];\n\nexport const AzureConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"Standard_L8s_v2\",\n storageClass: \"local-nvme\",\n CPU: 8,\n memory: 64,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 1,\n },\n {\n typeSelection: \"Standard_L16s_v2\",\n storageClass: \"local-nvme\",\n CPU: 16,\n memory: 128,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 2,\n },\n {\n typeSelection: \"Standard_L32s_v2\",\n storageClass: \"local-nvme\",\n CPU: 32,\n memory: 256,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 4,\n },\n {\n typeSelection: \"Standard_L48s_v2\",\n storageClass: \"local-nvme\",\n CPU: 48,\n memory: 384,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 6,\n },\n {\n typeSelection: \"Standard_L64s_v2\",\n storageClass: \"local-nvme\",\n CPU: 64,\n memory: 512,\n driveSize: { driveSize: \"1787\", sizeUnit: \"Gi\" },\n drivesPerServer: 8,\n },\n];\n\nexport const GCPStorageTypes: Opts[] = [{ label: \"SSD\", value: \"ssd\" }];\n\nexport const GCPConfigurations: IntegrationConfiguration[] = [\n {\n typeSelection: \"ssd\",\n storageClass: \"local-ssd\",\n CPU: 32,\n memory: 128,\n driveSize: { driveSize: \"368\", sizeUnit: \"Gi\" },\n drivesPerServer: 24,\n },\n];\n\nexport const mkPanelConfigurations = {\n [IMkEnvs.aws]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: AWSStorageTypes,\n configurations: AWSConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.azure]: {\n variantSelectorLabel: \"VM Size\",\n variantSelectorValues: AzureStorageTypes,\n configurations: AzureConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.gcp]: {\n variantSelectorLabel: \"Storage Type\",\n variantSelectorValues: GCPStorageTypes,\n configurations: GCPConfigurations,\n sizingComponent: ,\n },\n [IMkEnvs.default]: {},\n [IMkEnvs.undefined]: {},\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, { useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Grid, Paper, SelectChangeEvent } from \"@mui/material\";\nimport {\n createTenantCommon,\n modalBasic,\n wizardCommon,\n} from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { isPageValid, updateAddField } from \"../../actions\";\nimport { AppState } from \"../../../../../store\";\nimport { clearValidationError } from \"../../utils\";\nimport {\n commonFormValidation,\n IValidation,\n} from \"../../../../../utils/validationFunctions\";\nimport FormSwitchWrapper from \"../../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport SelectWrapper from \"../../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport { ISecurityContext } from \"../../types\";\n\ninterface IConfigureProps {\n updateAddField: typeof updateAddField;\n isPageValid: typeof isPageValid;\n storageClasses: any;\n classes: any;\n customImage: boolean;\n imageName: string;\n customDockerhub: boolean;\n imageRegistry: string;\n imageRegistryUsername: string;\n imageRegistryPassword: string;\n exposeMinIO: boolean;\n exposeConsole: boolean;\n prometheusCustom: boolean;\n tenantCustom: boolean;\n logSearchCustom: boolean;\n logSearchVolumeSize: string;\n logSearchSizeFactor: string;\n prometheusVolumeSize: string;\n prometheusSizeFactor: string;\n logSearchSelectedStorageClass: string;\n logSearchImage: string;\n kesImage: string;\n logSearchPostgresImage: string;\n logSearchPostgresInitImage: string;\n prometheusSelectedStorageClass: string;\n prometheusImage: string;\n prometheusSidecarImage: string;\n prometheusInitImage: string;\n selectedStorageClass: string;\n tenantSecurityContext: ISecurityContext;\n logSearchSecurityContext: ISecurityContext;\n logSearchPostgresSecurityContext: ISecurityContext;\n prometheusSecurityContext: ISecurityContext;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n configSectionItem: {\n marginRight: 15,\n\n \"& .multiContainer\": {\n border: \"1px solid red\",\n },\n },\n tenantCustomizationFields: {\n marginLeft: 30, // 2nd Level(15+15)\n width: \"88%\",\n margin: \"auto\",\n },\n containerItem: {\n marginRight: 15,\n },\n fieldGroup: {\n ...createTenantCommon.fieldGroup,\n paddingTop: 15,\n marginBottom: 25,\n },\n responsiveSectionItem: {\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n\n \"& div > div\": {\n marginBottom: 5,\n marginRight: 0,\n },\n },\n },\n\n logSearchCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n fieldSpaceTop: {\n marginTop: 15,\n },\n prometheusCustomFields: {\n marginLeft: 20, // 2nd Level(15+15)\n padding: 10,\n width: \"90%\",\n margin: \"auto\",\n },\n ...modalBasic,\n ...wizardCommon,\n });\n\nconst Configure = ({\n classes,\n storageClasses,\n customImage,\n imageName,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n exposeMinIO,\n exposeConsole,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n logSearchVolumeSize,\n logSearchSizeFactor,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusVolumeSize,\n prometheusSizeFactor,\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n updateAddField,\n isPageValid,\n selectedStorageClass,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n}: IConfigureProps) => {\n const [validationErrors, setValidationErrors] = useState({});\n\n const configureSTClasses = [\n { label: \"Default\", value: \"default\" },\n ...storageClasses,\n ];\n\n // Common\n const updateField = useCallback(\n (field: string, value: any) => {\n updateAddField(\"configure\", field, value);\n },\n [updateAddField]\n );\n\n // Validation\n useEffect(() => {\n let customAccountValidation: IValidation[] = [];\n if (tenantCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"tenant_securityContext_runAsUser\",\n required: true,\n value: tenantSecurityContext.runAsUser,\n customValidation:\n tenantSecurityContext.runAsUser === \"\" ||\n parseInt(tenantSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_runAsGroup\",\n required: true,\n value: tenantSecurityContext.runAsGroup,\n customValidation:\n tenantSecurityContext.runAsGroup === \"\" ||\n parseInt(tenantSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"tenant_securityContext_fsGroup\",\n required: true,\n value: tenantSecurityContext.fsGroup,\n customValidation:\n tenantSecurityContext.fsGroup === \"\" ||\n parseInt(tenantSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (prometheusCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"prometheus_storage_class\",\n required: true,\n value: prometheusSelectedStorageClass,\n customValidation: prometheusSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"prometheus_volume_size\",\n required: true,\n value: prometheusVolumeSize,\n customValidation:\n prometheusVolumeSize === \"\" || parseInt(prometheusVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greater than 0`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsUser\",\n required: true,\n value: prometheusSecurityContext.runAsUser,\n customValidation:\n prometheusSecurityContext.runAsUser === \"\" ||\n parseInt(prometheusSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n prometheusSecurityContext.runAsGroup === \"\" ||\n parseInt(prometheusSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"prometheus_securityContext_fsGroup\",\n required: true,\n value: prometheusSecurityContext.fsGroup,\n customValidation:\n prometheusSecurityContext.fsGroup === \"\" ||\n parseInt(prometheusSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n if (logSearchCustom) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"log_search_storage_class\",\n required: true,\n value: logSearchSelectedStorageClass,\n customValidation: logSearchSelectedStorageClass === \"\",\n customValidationMessage: \"Field cannot be empty\",\n },\n {\n fieldKey: \"log_search_volume_size\",\n required: true,\n value: logSearchVolumeSize,\n customValidation:\n logSearchVolumeSize === \"\" || parseInt(logSearchVolumeSize) <= 0,\n customValidationMessage: `Volume size must be present and be greatter than 0`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsUser\",\n required: true,\n value: logSearchSecurityContext.runAsUser,\n customValidation:\n logSearchSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_runAsGroup\",\n required: true,\n value: logSearchSecurityContext.runAsGroup,\n customValidation:\n logSearchSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"logSearch_securityContext_fsGroup\",\n required: true,\n value: logSearchSecurityContext.fsGroup,\n customValidation:\n logSearchSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsUser\",\n required: true,\n value: logSearchPostgresSecurityContext.runAsUser,\n customValidation:\n logSearchPostgresSecurityContext.runAsUser === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsUser) < 0,\n customValidationMessage: `runAsUser must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_runAsGroup\",\n required: true,\n value: prometheusSecurityContext.runAsGroup,\n customValidation:\n logSearchPostgresSecurityContext.runAsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.runAsGroup) < 0,\n customValidationMessage: `runAsGroup must be present and be 0 or more`,\n },\n {\n fieldKey: \"postgres_securityContext_fsGroup\",\n required: true,\n value: logSearchPostgresSecurityContext.fsGroup,\n customValidation:\n logSearchPostgresSecurityContext.fsGroup === \"\" ||\n parseInt(logSearchPostgresSecurityContext.fsGroup) < 0,\n customValidationMessage: `fsGroup must be present and be 0 or more`,\n },\n ];\n }\n\n if (customImage) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"image\",\n required: false,\n value: imageName,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/minio:VERSION'\",\n },\n {\n fieldKey: \"logSearchImage\",\n required: false,\n value: logSearchImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/logsearchapi:VERSION'\",\n },\n {\n fieldKey: \"kesImage\",\n required: false,\n value: kesImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage: \"Format must be of form: 'minio/kes:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresImage\",\n required: false,\n value: logSearchPostgresImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/postgres:VERSION'\",\n },\n {\n fieldKey: \"logSearchPostgresInitImage\",\n required: false,\n value: logSearchPostgresInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n {\n fieldKey: \"prometheusImage\",\n required: false,\n value: prometheusImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'minio/prometheus:VERSION'\",\n },\n {\n fieldKey: \"prometheusSidecarImage\",\n required: false,\n value: prometheusSidecarImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'project/container:VERSION'\",\n },\n {\n fieldKey: \"prometheusInitImage\",\n required: false,\n value: prometheusInitImage,\n pattern: /^((.*?)\\/(.*?):(.+))$/,\n customPatternMessage:\n \"Format must be of form: 'library/busybox:VERSION'\",\n },\n ];\n if (customDockerhub) {\n customAccountValidation = [\n ...customAccountValidation,\n {\n fieldKey: \"registry\",\n required: true,\n value: imageRegistry,\n },\n {\n fieldKey: \"registryUsername\",\n required: true,\n value: imageRegistryUsername,\n },\n {\n fieldKey: \"registryPassword\",\n required: true,\n value: imageRegistryPassword,\n },\n ];\n }\n }\n\n const commonVal = commonFormValidation(customAccountValidation);\n\n isPageValid(\"configure\", Object.keys(commonVal).length === 0);\n\n setValidationErrors(commonVal);\n }, [\n customImage,\n imageName,\n logSearchImage,\n kesImage,\n logSearchPostgresImage,\n logSearchPostgresInitImage,\n prometheusImage,\n prometheusSidecarImage,\n prometheusInitImage,\n customDockerhub,\n imageRegistry,\n imageRegistryUsername,\n imageRegistryPassword,\n isPageValid,\n prometheusCustom,\n tenantCustom,\n logSearchCustom,\n prometheusSelectedStorageClass,\n prometheusVolumeSize,\n logSearchSelectedStorageClass,\n logSearchVolumeSize,\n tenantSecurityContext,\n logSearchSecurityContext,\n logSearchPostgresSecurityContext,\n prometheusSecurityContext,\n ]);\n\n useEffect(() => {\n // New default values in current selection is invalid\n if (storageClasses.length > 0) {\n const filterPrometheus = storageClasses.filter(\n (item: any) => item.value === prometheusSelectedStorageClass\n );\n if (filterPrometheus.length === 0) {\n updateField(\"prometheusSelectedStorageClass\", \"default\");\n }\n\n const filterLogSearch = storageClasses.filter(\n (item: any) => item.value === logSearchSelectedStorageClass\n );\n if (filterLogSearch.length === 0) {\n updateField(\"logSearchSelectedStorageClass\", \"default\");\n }\n }\n }, [\n logSearchSelectedStorageClass,\n prometheusSelectedStorageClass,\n selectedStorageClass,\n storageClasses,\n updateField,\n ]);\n\n const cleanValidation = (fieldName: string) => {\n setValidationErrors(clearValidationError(validationErrors, fieldName));\n };\n\n return (\n \n
\n
Configure
\n \n Basic configurations for tenant management\n \n
\n
\n
Expose Services
\n \n Whether the tenant's services should request an external IP.\n \n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\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 fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\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 .\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\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 .\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, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\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 get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport { ITierElement } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { LockIcon } from \"../../../../icons\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n classes: any;\n tierData: ITierElement;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n classes,\n tierData,\n setModalErrorSnackMessage,\n}: ITierCredentialsModal) => {\n const [savingTiers, setSavingTiers] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n\n const type = get(tierData, \"type\", \"\");\n const name = get(tierData, `${type}.name`, \"\");\n\n useEffect(() => {\n let valid = true;\n\n if (type === \"s3\" || type === \"azure\") {\n if (accountName === \"\" || accountKey === \"\") {\n valid = false;\n }\n } else if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [accountKey, accountName, encodedCreds, type]);\n\n const addRecord = () => {\n let rules = {};\n\n if (type === \"s3\" || type === \"azure\") {\n rules = {\n access_key: accountName,\n secret_key: accountKey,\n };\n } else if (type === \"gcs\") {\n rules = {\n creds: encodedCreds,\n };\n }\n if (name !== \"\") {\n api\n .invoke(\"PUT\", `/api/v1/admin/tiers/${type}/${name}/credentials`, rules)\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setSavingTiers(false);\n setModalErrorSnackMessage(err);\n });\n } else {\n setModalErrorSnackMessage({\n errorMessage: \"There was an error retrieving tier information\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n onClose={() => {\n closeModalAndRefresh(false);\n }}\n title={`Update Credentials - ${type} / ${name}`}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(UpdateTierCredentialsModal));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\n\nexports.default = _default;"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","useState","showFileSelector","setShowSelector","Grid","item","xs","className","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","flexGrow","position","overlayAction","right","top","maxHeight","autoComplete","multiline","index","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","container","clsx","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","width","backgroundColor","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","modalBasic","formFieldStyles","closeModalAndRefresh","tierData","savingTiers","setSavingTiers","accessKey","setAccessKey","secretKey","setSecretKey","creds","setCreds","encodedCreds","setEncodedCreds","accountName","setAccountName","accountKey","setAccountKey","isFormValid","setIsFormValid","valid","noValidate","onSubmit","preventDefault","rules","access_key","secret_key","api","then","catch","err","addRecord","formFieldRow","encodedValue","variant","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1069.771a8a37.chunk.js b/portal-ui/build/static/js/1069.771a8a37.chunk.js
new file mode 100644
index 000000000..eae337633
--- /dev/null
+++ b/portal-ui/build/static/js/1069.771a8a37.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1069],{82461:function(e,a,n){n.d(a,{Z:function(){return j}});var t=n(23430),r=n(18489),o=n(50390),s=n(38342),i=n.n(s),l=n(25594),c=n(36554),d=n(94187),u=n(95467),m=n(46529),p=n(94258),x=n(86509),f=n(4285),h=n(72462),v=n(97538),g=n(82981),Z=n(62559),j=(0,f.Z)((function(e){return(0,x.Z)((0,r.Z)((0,r.Z)((0,r.Z)((0,r.Z)({},h.YI),h.Hr),{},{valueString:{maxWidth:350,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:2},fileInputField:{margin:"13px 0","@media (max-width: 900px)":{flexFlow:"column"}}},h.bV),{},{inputLabel:(0,r.Z)((0,r.Z)({},h.YI.inputLabel),{},{fontWeight:"normal"}),textBoxContainer:(0,r.Z)((0,r.Z)({},h.YI.textBoxContainer),{},{maxWidth:"100%",border:"1px solid #eaeaea",paddingLeft:"15px"})}))}))((function(e){var a=e.label,n=e.classes,r=e.onChange,s=e.id,x=e.name,f=e.disabled,h=void 0!==f&&f,j=e.tooltip,b=void 0===j?"":j,C=e.required,y=e.error,N=void 0===y?"":y,S=e.accept,k=void 0===S?"":S,M=e.value,w=void 0===M?"":M,F=(0,o.useState)(!1),E=(0,t.Z)(F,2),L=E[0],B=E[1];return(0,Z.jsx)(o.Fragment,{children:(0,Z.jsxs)(l.ZP,{item:!0,xs:12,className:"".concat(n.fileInputField," ").concat(n.fieldBottom," ").concat(n.fieldContainer," ").concat(""!==N?n.errorInField:""),children:[""!==a&&(0,Z.jsxs)(c.Z,{htmlFor:s,className:"".concat(""!==N?n.fieldLabelError:""," ").concat(n.inputLabel),children:[(0,Z.jsxs)("span",{children:[a,C?"*":""]}),""!==b&&(0,Z.jsx)("div",{className:n.tooltipContainer,children:(0,Z.jsx)(d.Z,{title:b,placement:"top-start",children:(0,Z.jsx)("div",{className:n.tooltip,children:(0,Z.jsx)(v.Z,{})})})})]}),L||""===w?(0,Z.jsxs)("div",{className:n.textBoxContainer,children:[(0,Z.jsx)("input",{type:"file",name:x,onChange:function(e){var a=i()(e,"target.files[0].name","");!function(e,a){var n=e.target.files[0],t=new FileReader;t.readAsDataURL(n),t.onload=function(){var e=t.result;if(e){var n=e.toString().split("base64,");2===n.length&&a(n[1])}}}(e,(function(e){r(e,a)}))},accept:k,required:C,disabled:h,className:n.fileInputField}),""!==w&&(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){B(!1)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(p.Z,{})}),""!==N&&(0,Z.jsx)(g.Z,{errorMessage:N})]}):(0,Z.jsxs)("div",{className:n.fileReselect,children:[(0,Z.jsx)("div",{className:n.valueString,children:w}),(0,Z.jsx)(u.Z,{color:"primary","aria-label":"upload picture",component:"span",onClick:function(){B(!0)},disableRipple:!1,disableFocusRipple:!1,size:"small",children:(0,Z.jsx)(m.Z,{})})]})]})})}))},66964:function(e,a,n){var t=n(18489),r=n(50390),o=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),v=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function g(e){var a=v();return(0,h.jsx)(o.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,o=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,v=e.autoComplete,Z=void 0===v?"off":v,j=e.disabled,b=void 0!==j&&j,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,S=void 0===N?"":N,k=e.index,M=void 0===k?0:k,w=e.error,F=void 0===w?"":w,E=e.required,L=void 0!==E&&E,B=e.placeholder,I=void 0===B?"":B,R=e.min,z=e.max,D=e.overlayIcon,K=void 0===D?null:D,P=e.overlayObject,A=void 0===P?null:P,W=e.extraInputProps,O=void 0===W?{}:W,T=e.overlayAction,H=e.noLabelMinWidth,V=void 0!==H&&H,Y=e.pattern,_=void 0===Y?"":Y,q=e.autoFocus,U=void 0!==q&&q,$=e.classes,G=e.className,Q=void 0===G?"":G,X=e.onKeyPress,J=(0,t.Z)({"data-index":M},O);return"number"===p&&R&&(J.min=R),"number"===p&&z&&(J.max=z),""!==_&&(J.pattern=_),(0,h.jsx)(r.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==Q?Q:"",""!==F?$.errorInField:$.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:V?$.noMinWidthLabel:$.inputLabel,children:[(0,h.jsxs)("span",{children:[a,L?"*":""]}),""!==S&&(0,h.jsx)("div",{className:$.tooltipContainer,children:(0,h.jsx)(l.Z,{title:S,placement:"top-start",children:(0,h.jsx)("div",{className:$.tooltip,children:(0,h.jsx)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:$.textBoxContainer,children:[(0,h.jsx)(g,{id:d,name:u,fullWidth:!0,value:o,autoFocus:U,disabled:b,onChange:n,type:p,multiline:y,autoComplete:Z,inputProps:J,error:""!==F,helperText:F,placeholder:I,className:$.inputRebase,onKeyPress:X}),K&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:T?function(){T()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:K})}),A&&(0,h.jsx)("div",{className:"".concat($.overlayAction," ").concat(""!==a?"withLabel":""),children:A})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return M}});var t,r=n(23430),o=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),v=n(38342),g=n.n(v),Z=n(92125),j=n(19538),b=n(21278),C=n(62559),y=function(){clearInterval(t)},N={displayErrorMessage:h.zb},S=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,o=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,r.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,r.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(o({detailedError:"",errorMessage:""}),u(!1))}),[o,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var v=g()(n,"message",""),N=g()(n,"detailedErrorMsg","");return"error"!==n.type||""===v?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:y,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(b.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(j.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:v})]}),""!==N&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:N})]})]})})}))),k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),M=(0,x.Z)((function(e){return(0,p.Z)((0,o.Z)((0,o.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(k((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,v=e.noContentPadding,g=e.setModalSnackMessage,Z=e.titleIcon,j=void 0===Z?null:Z,y=(0,s.useState)(!1),N=(0,r.Z)(y,2),k=N[0],M=N[1];(0,s.useEffect)((function(){g("")}),[g]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void M(!1);"error"!==h.type&&M(!0)}}),[h]);var w=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return h&&(F=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(F=h.message)),(0,C.jsxs)(d.Z,(0,o.Z)((0,o.Z)({open:n,classes:p},w),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[j," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(b.Z,{})})})]}),(0,C.jsx)(S,{}),(0,C.jsx)(c.Z,{open:k,className:p.snackBarModal,onClose:function(){M(!1),g("")},message:F,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:v?"":p.content,children:i})]}))})))},81069:function(e,a,n){n.r(a);var t=n(23430),r=n(18489),o=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(86509),d=n(4285),u=n(66946),m=n(81378),p=n(25594),x=n(72462),f=n(44149),h=n(66964),v=n(82461),g=n(30324),Z=n(76352),j=n(85615),b=n(62559),C=(0,l.$j)(null,{setModalErrorSnackMessage:f.zb});a.default=(0,d.Z)((function(e){return(0,c.Z)((0,r.Z)((0,r.Z)({buttonContainer:{textAlign:"right"}},x.oO),x.DF))}))(C((function(e){var a=e.open,n=e.closeModalAndRefresh,r=e.classes,s=e.tierData,l=e.setModalErrorSnackMessage,c=(0,o.useState)(!1),d=(0,t.Z)(c,2),x=d[0],f=d[1],C=(0,o.useState)(""),y=(0,t.Z)(C,2),N=y[0],S=y[1],k=(0,o.useState)(""),M=(0,t.Z)(k,2),w=M[0],F=M[1],E=(0,o.useState)(""),L=(0,t.Z)(E,2),B=L[0],I=L[1],R=(0,o.useState)(""),z=(0,t.Z)(R,2),D=z[0],K=z[1],P=(0,o.useState)(""),A=(0,t.Z)(P,2),W=A[0],O=A[1],T=(0,o.useState)(""),H=(0,t.Z)(T,2),V=H[0],Y=H[1],_=(0,o.useState)(!0),q=(0,t.Z)(_,2),U=q[0],$=q[1],G=i()(s,"type",""),Q=i()(s,"".concat(G,".name"),"");(0,o.useEffect)((function(){var e=!0;"s3"===G||"azure"===G?""!==W&&""!==V||(e=!1):"gcs"===G&&""===D&&(e=!1),$(e)}),[V,W,D,G]);return(0,b.jsx)(Z.Z,{modalOpen:a,titleIcon:(0,b.jsx)(j.mB,{}),onClose:function(){n(!1)},title:"Update Credentials - ".concat(G," / ").concat(Q),children:(0,b.jsx)("form",{noValidate:!0,autoComplete:"off",onSubmit:function(e){e.preventDefault(),f(!0),function(){var e={};"s3"===G||"azure"===G?e={access_key:W,secret_key:V}:"gcs"===G&&(e={creds:D}),""!==Q?g.Z.invoke("PUT","/api/v1/admin/tiers/".concat(G,"/").concat(Q,"/credentials"),e).then((function(){f(!1),n(!0)})).catch((function(e){f(!1),l(e)})):l({errorMessage:"There was an error retrieving tier information",detailedError:""})}()},children:(0,b.jsxs)(p.ZP,{container:!0,children:[(0,b.jsxs)(p.ZP,{item:!0,xs:12,children:["s3"===G&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accessKey",name:"accessKey",label:"Access Key",placeholder:"Enter Access Key",value:N,onChange:function(e){S(e.target.value)}})}),(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"secretKey",name:"secretKey",label:"Secret Key",placeholder:"Enter Secret Key",value:w,onChange:function(e){F(e.target.value)}})})]}),"gcs"===G&&(0,b.jsx)(o.Fragment,{children:(0,b.jsx)(v.Z,{accept:".json",id:"creds",label:"Credentials",name:"creds",onChange:function(e,a){K(e),I(a)},value:B})}),"azure"===G&&(0,b.jsxs)(o.Fragment,{children:[(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accountName",name:"accountName",label:"Account Name",placeholder:"Enter Account Name",value:W,onChange:function(e){O(e.target.value)}})}),(0,b.jsx)("div",{className:r.formFieldRow,children:(0,b.jsx)(h.Z,{id:"accountKey",name:"accountKey",label:"Account Key",placeholder:"Enter Account Key",value:V,onChange:function(e){Y(e.target.value)}})})]})]}),(0,b.jsx)(p.ZP,{item:!0,xs:12,className:r.buttonContainer,children:(0,b.jsx)(u.Z,{type:"submit",variant:"contained",color:"primary",disabled:x||!U,children:"Save"})}),x&&(0,b.jsx)(p.ZP,{item:!0,xs:12,children:(0,b.jsx)(m.Z,{})})]})})})})))},82981:function(e,a,n){var t=n(50390),r=n(35477),o=n(86509),s=n(4285),i=n(62559);a.Z=(0,s.Z)((function(e){var a;return(0,o.Z)({errorBlock:{color:(null===(a=e.palette)||void 0===a?void 0:a.error.main)||"#C83B51"}})}))((function(e){var a=e.classes,n=e.errorMessage,o=e.withBreak,s=void 0===o||o;return(0,i.jsxs)(t.Fragment,{children:[s&&(0,i.jsx)("br",{}),(0,i.jsx)(r.Z,{component:"p",variant:"body1",className:a.errorBlock,children:n})]})}))},46529:function(e,a,n){var t=n(64119);a.Z=void 0;var r=t(n(66830)),o=n(62559),s=(0,r.default)((0,o.jsx)("path",{d:"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z"}),"AttachFile");a.Z=s},94258:function(e,a,n){var t=n(64119);a.Z=void 0;var r=t(n(66830)),o=n(62559),s=(0,r.default)((0,o.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");a.Z=s}}]);
+//# sourceMappingURL=1069.771a8a37.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1069.771a8a37.chunk.js.map b/portal-ui/build/static/js/1069.771a8a37.chunk.js.map
new file mode 100644
index 000000000..43f3a1670
--- /dev/null
+++ b/portal-ui/build/static/js/1069.771a8a37.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1069.771a8a37.chunk.js","mappings":"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","sources":["screens/Console/Common/FormComponents/FileSelector/FileSelector.tsx","screens/Console/Common/FormComponents/FileSelector/utils.ts","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.tsx","screens/Console/Configurations/TiersConfiguration/UpdateTierCredentialsModal.tsx","screens/shared/ErrorBlock.tsx","../node_modules/@mui/icons-material/AttachFile.js","../node_modules/@mui/icons-material/Cancel.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 get from \"lodash/get\";\nimport { Grid, InputLabel, Tooltip } from \"@mui/material\";\nimport IconButton from \"@mui/material/IconButton\";\nimport AttachFileIcon from \"@mui/icons-material/AttachFile\";\nimport CancelIcon from \"@mui/icons-material/Cancel\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n fieldBasic,\n fileInputStyles,\n tooltipHelper,\n} from \"../common/styleLibrary\";\nimport { fileProcess } from \"./utils\";\nimport HelpIcon from \"../../../../../icons/HelpIcon\";\nimport ErrorBlock from \"../../../../shared/ErrorBlock\";\n\ninterface InputBoxProps {\n label: string;\n classes: any;\n onChange: (e: string, i: string) => void;\n id: string;\n name: string;\n disabled?: boolean;\n tooltip?: string;\n required?: boolean;\n error?: string;\n accept?: string;\n value?: string;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...fieldBasic,\n ...tooltipHelper,\n valueString: {\n maxWidth: 350,\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n marginTop: 2,\n },\n fileInputField: {\n margin: \"13px 0\",\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n },\n },\n ...fileInputStyles,\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\n },\n textBoxContainer: {\n ...fieldBasic.textBoxContainer,\n maxWidth: \"100%\",\n border: \"1px solid #eaeaea\",\n paddingLeft: \"15px\",\n },\n });\n\nconst FileSelector = ({\n label,\n classes,\n onChange,\n id,\n name,\n disabled = false,\n tooltip = \"\",\n required,\n error = \"\",\n accept = \"\",\n value = \"\",\n}: InputBoxProps) => {\n const [showFileSelector, setShowSelector] = useState(false);\n\n return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n )}\n \n \n );\n};\n\nexport default withStyles(styles)(FileSelector);\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 fileProcess = (evt: any, callback: any) => {\n const file = evt.target.files[0];\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n reader.onload = () => {\n // reader.readAsDataURL(file) output will be something like: data:application/x-x509-ca-cert;base64,LS0tLS1CRUdJTiBDRVJUSU\n // we care only about the actual base64 part (everything after \"data:application/x-x509-ca-cert;base64,\")\n const fileBase64 = reader.result;\n if (fileBase64) {\n const fileArray = fileBase64.toString().split(\"base64,\");\n\n if (fileArray.length === 2) {\n callback(fileArray[1]);\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 .\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\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 .\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, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\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 get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Button, LinearProgress } from \"@mui/material\";\nimport Grid from \"@mui/material/Grid\";\nimport {\n formFieldStyles,\n modalBasic,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport FileSelector from \"../../Common/FormComponents/FileSelector/FileSelector\";\nimport api from \"../../../../common/api\";\nimport { ITierElement } from \"./types\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport { LockIcon } from \"../../../../icons\";\n\ninterface ITierCredentialsModal {\n open: boolean;\n closeModalAndRefresh: (refresh: boolean) => any;\n classes: any;\n tierData: ITierElement;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonContainer: {\n textAlign: \"right\",\n },\n ...modalBasic,\n ...formFieldStyles,\n });\n\nconst UpdateTierCredentialsModal = ({\n open,\n closeModalAndRefresh,\n classes,\n tierData,\n setModalErrorSnackMessage,\n}: ITierCredentialsModal) => {\n const [savingTiers, setSavingTiers] = useState(false);\n const [accessKey, setAccessKey] = useState(\"\");\n const [secretKey, setSecretKey] = useState(\"\");\n\n const [creds, setCreds] = useState(\"\");\n const [encodedCreds, setEncodedCreds] = useState(\"\");\n\n const [accountName, setAccountName] = useState(\"\");\n const [accountKey, setAccountKey] = useState(\"\");\n\n // Validations\n const [isFormValid, setIsFormValid] = useState(true);\n\n const type = get(tierData, \"type\", \"\");\n const name = get(tierData, `${type}.name`, \"\");\n\n useEffect(() => {\n let valid = true;\n\n if (type === \"s3\" || type === \"azure\") {\n if (accountName === \"\" || accountKey === \"\") {\n valid = false;\n }\n } else if (type === \"gcs\") {\n if (encodedCreds === \"\") {\n valid = false;\n }\n }\n setIsFormValid(valid);\n }, [accountKey, accountName, encodedCreds, type]);\n\n const addRecord = () => {\n let rules = {};\n\n if (type === \"s3\" || type === \"azure\") {\n rules = {\n access_key: accountName,\n secret_key: accountKey,\n };\n } else if (type === \"gcs\") {\n rules = {\n creds: encodedCreds,\n };\n }\n if (name !== \"\") {\n api\n .invoke(\"PUT\", `/api/v1/admin/tiers/${type}/${name}/credentials`, rules)\n .then(() => {\n setSavingTiers(false);\n closeModalAndRefresh(true);\n })\n .catch((err: ErrorResponseHandler) => {\n setSavingTiers(false);\n setModalErrorSnackMessage(err);\n });\n } else {\n setModalErrorSnackMessage({\n errorMessage: \"There was an error retrieving tier information\",\n detailedError: \"\",\n });\n }\n };\n\n return (\n }\n onClose={() => {\n closeModalAndRefresh(false);\n }}\n title={`Update Credentials - ${type} / ${name}`}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(UpdateTierCredentialsModal));\n","import React from \"react\";\nimport Typography from \"@mui/material/Typography\";\nimport { Theme } from \"@mui/material/styles\";\n\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n errorBlock: {\n color: theme.palette?.error.main || \"#C83B51\",\n },\n });\n\ninterface IErrorBlockProps {\n classes: any;\n errorMessage: string;\n withBreak?: boolean;\n}\n\nconst ErrorBlock = ({\n classes,\n errorMessage,\n withBreak = true,\n}: IErrorBlockProps) => {\n return (\n \n {withBreak && }\n \n {errorMessage}\n \n \n );\n};\n\nexport default withStyles(styles)(ErrorBlock);\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z\"\n}), 'AttachFile');\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');\n\nexports.default = _default;"],"names":["withStyles","theme","createStyles","fieldBasic","tooltipHelper","valueString","maxWidth","whiteSpace","overflow","textOverflow","marginTop","fileInputField","margin","flexFlow","fileInputStyles","inputLabel","fontWeight","textBoxContainer","border","paddingLeft","label","classes","onChange","id","name","disabled","tooltip","required","error","accept","value","useState","showFileSelector","setShowSelector","Grid","item","xs","className","fieldBottom","fieldContainer","errorInField","InputLabel","htmlFor","fieldLabelError","tooltipContainer","Tooltip","title","placement","HelpIcon","type","e","fileName","get","evt","callback","file","target","files","reader","FileReader","readAsDataURL","onload","fileBase64","result","fileArray","toString","split","length","fileProcess","data","IconButton","color","component","onClick","disableRipple","disableFocusRipple","size","Cancel","ErrorBlock","errorMessage","fileReselect","AttachFile","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","flexGrow","position","overlayAction","right","top","maxHeight","autoComplete","multiline","index","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","onKeyPress","inputProps","container","clsx","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","disableTouchRipple","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","setModalErrorSnackMessage","connect","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","width","backgroundColor","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","connector","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","onClose","modalOpen","children","wideLimit","noContentPadding","titleIcon","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent","buttonContainer","textAlign","modalBasic","formFieldStyles","closeModalAndRefresh","tierData","savingTiers","setSavingTiers","accessKey","setAccessKey","secretKey","setSecretKey","creds","setCreds","encodedCreds","setEncodedCreds","accountName","setAccountName","accountKey","setAccountKey","isFormValid","setIsFormValid","valid","noValidate","onSubmit","preventDefault","rules","access_key","secret_key","api","then","catch","err","addRecord","formFieldRow","encodedValue","variant","errorBlock","palette","main","withBreak","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1140.5e370d17.chunk.js b/portal-ui/build/static/js/1140.35a12cb4.chunk.js
similarity index 66%
rename from portal-ui/build/static/js/1140.5e370d17.chunk.js
rename to portal-ui/build/static/js/1140.35a12cb4.chunk.js
index a777c629e..992e6c7e1 100644
--- a/portal-ui/build/static/js/1140.5e370d17.chunk.js
+++ b/portal-ui/build/static/js/1140.35a12cb4.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1140],{39080:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(18489),r=t(35531),a=t(50390),s=t(38342),l=t.n(s),c=t(86509),o=t(4285),d=t(66946),u=t(76352),m=t(25594),h=t(58217),p=t(65771),x=t(70758),y=t(33034),g=t.n(y),f=t(98280),v=t(72462),j=t(62559),b=(0,o.Z)((function(e){return(0,c.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,i.Z)((0,i.Z)({},v.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,i=e.value,r=void 0===i?"":i,a=e.classes,s=void 0===a?{}:a;return(0,j.jsxs)("div",{className:s.container,children:[(0,j.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,j.jsx)("div",{className:s.inputWithCopy,children:(0,j.jsx)(h.Z,{value:r,readOnly:!0,endAdornment:(0,j.jsx)(p.Z,{position:"end",children:(0,j.jsx)(g(),{text:r,children:(0,j.jsx)(x.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,j.jsx)(f.TI,{})})})})})})]})})),w=t(47424),Z=(0,o.Z)((function(e){return(0,c.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,s=e.open,c=e.closeModal,o=e.entity;if(!t)return null;var h=l()(t,"console",null),p=l()(t,"idp",!1);return(0,j.jsx)(u.Z,{modalOpen:s,onClose:function(){c()},title:(0,j.jsx)("div",{className:n.promptTitle,children:(0,j.jsxs)("div",{children:["New ",o," Created"]})}),titleIcon:(0,j.jsx)(f.tV,{}),children:(0,j.jsxs)(m.ZP,{container:!0,children:[(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",o," has been created with the following details:",!p&&h&&(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,j.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(h)&&h.map((function(e,n){return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:e.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(h)&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:h.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:h.secretKey})]})]})}),p?(0,j.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,j.jsxs)("div",{className:n.warningBlock,children:[(0,j.jsx)(w.Z,{}),(0,j.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[(0,j.jsx)(d.Z,{variant:"outlined",className:n.buttonSpacer,onClick:function(){c()},color:"primary",children:"Done"}),!p&&(0,j.jsx)(d.Z,{onClick:function(){var e={};if(h)if(Array.isArray(h)){var n=h.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,r.Z)(n)}}else e={console:[{url:h.url,access_key:h.accessKey,secret_key:h.secretKey,api:"s3v4",path:"auto"}]};!function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(n)),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}("credentials.json",JSON.stringify((0,i.Z)({},e)))},endIcon:(0,j.jsx)(f._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))}}]);
-//# sourceMappingURL=1140.5e370d17.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1140],{39080:function(e,n,t){t.r(n),t.d(n,{default:function(){return Z}});var i=t(18489),r=t(35531),a=t(50390),s=t(38342),l=t.n(s),o=t(86509),c=t(4285),d=t(66946),u=t(76352),m=t(25594),h=t(58217),p=t(65771),x=t(70758),y=t(33034),g=t.n(y),f=t(85615),v=t(72462),j=t(62559),b=(0,c.Z)((function(e){return(0,o.Z)({container:{display:"flex",flexFlow:"column",padding:"20px 0 8px 0"},inputWithCopy:{"& .MuiInputBase-root ":{width:"100%",background:"#FBFAFA","& .MuiInputBase-input":{height:".8rem"},"& .MuiInputAdornment-positionEnd":{marginRight:".5rem","& .MuiButtonBase-root":{height:"2rem"}}},"& .MuiButtonBase-root .min-icon":{width:".8rem",height:".8rem"}},inputLabel:(0,i.Z)((0,i.Z)({},v.YI.inputLabel),{},{fontSize:".8rem"})})}))((function(e){var n=e.label,t=void 0===n?"":n,i=e.value,r=void 0===i?"":i,a=e.classes,s=void 0===a?{}:a;return(0,j.jsxs)("div",{className:s.container,children:[(0,j.jsxs)("div",{className:s.inputLabel,children:[t,":"]}),(0,j.jsx)("div",{className:s.inputWithCopy,children:(0,j.jsx)(h.Z,{value:r,readOnly:!0,endAdornment:(0,j.jsx)(p.Z,{position:"end",children:(0,j.jsx)(g(),{text:r,children:(0,j.jsx)(x.Z,{"aria-label":"copy",tooltip:"Copy",onClick:function(){},onMouseDown:function(){},edge:"end",children:(0,j.jsx)(f.TI,{})})})})})})]})})),w=t(47424),Z=(0,c.Z)((function(e){return(0,o.Z)({warningBlock:{color:"red",fontSize:".85rem",margin:".5rem 0 .5rem 0",display:"flex",alignItems:"center","& svg ":{marginRight:".3rem",height:16,width:16}},credentialTitle:{padding:".8rem 0 0 0",fontWeight:600,fontSize:".9rem"},buttonContainer:{textAlign:"right",marginTop:"1rem"},credentialsPanel:{overflowY:"auto",maxHeight:350},promptTitle:{display:"flex",alignItems:"center"},buttonSpacer:{marginRight:".9rem"},promptIcon:{marginRight:".1rem",display:"flex",alignItems:"center",height:"2rem",width:"2rem"}})}))((function(e){var n=e.classes,t=e.newServiceAccount,s=e.open,o=e.closeModal,c=e.entity;if(!t)return null;var h=l()(t,"console",null),p=l()(t,"idp",!1);return(0,j.jsx)(u.Z,{modalOpen:s,onClose:function(){o()},title:(0,j.jsx)("div",{className:n.promptTitle,children:(0,j.jsxs)("div",{children:["New ",c," Created"]})}),titleIcon:(0,j.jsx)(f.tV,{}),children:(0,j.jsxs)(m.ZP,{container:!0,children:[(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.formScrollable,children:["A new ",c," has been created with the following details:",!p&&h&&(0,j.jsx)(a.Fragment,{children:(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.credentialsPanel,children:[(0,j.jsx)("div",{className:n.credentialTitle,children:"Console Credentials"}),Array.isArray(h)&&h.map((function(e,n){return(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:e.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:e.secretKey})]})})),!Array.isArray(h)&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{label:"Access Key",value:h.accessKey}),(0,j.jsx)(b,{label:"Secret Key",value:h.secretKey})]})]})}),p?(0,j.jsx)("div",{className:n.warningBlock,children:"Please Login via the configured external identity provider."}):(0,j.jsxs)("div",{className:n.warningBlock,children:[(0,j.jsx)(w.Z,{}),(0,j.jsx)("span",{children:"Write these down, as this is the only time the secret will be displayed."})]})]}),(0,j.jsxs)(m.ZP,{item:!0,xs:12,className:n.buttonContainer,children:[(0,j.jsx)(d.Z,{id:"done-button",variant:"outlined",className:n.buttonSpacer,onClick:function(){o()},color:"primary",children:"Done"}),!p&&(0,j.jsx)(d.Z,{id:"download-button",onClick:function(){var e={};if(h)if(Array.isArray(h)){var n=h.map((function(e){return{url:e.url,access_key:e.accessKey,secret_key:e.secretKey,api:"s3v4",path:"auto"}}));e={console:(0,r.Z)(n)}}else e={console:[{url:h.url,access_key:h.accessKey,secret_key:h.secretKey,api:"s3v4",path:"auto"}]};!function(e,n){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(n)),t.setAttribute("download",e),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}("credentials.json",JSON.stringify((0,i.Z)({},e)))},endIcon:(0,j.jsx)(f._8,{}),variant:"contained",color:"primary",children:"Download"})]})]})})}))}}]);
+//# sourceMappingURL=1140.35a12cb4.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1140.35a12cb4.chunk.js.map b/portal-ui/build/static/js/1140.35a12cb4.chunk.js.map
new file mode 100644
index 000000000..b9246bd07
--- /dev/null
+++ b/portal-ui/build/static/js/1140.35a12cb4.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1140.35a12cb4.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.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 { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\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 get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\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\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","fieldBasic","fontSize","label","value","classes","className","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onClick","onMouseDown","edge","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","id","variant","consoleExtras","cCreds","itemMap","url","access_key","secret_key","api","path","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1140.5e370d17.chunk.js.map b/portal-ui/build/static/js/1140.5e370d17.chunk.js.map
deleted file mode 100644
index 04568b984..000000000
--- a/portal-ui/build/static/js/1140.5e370d17.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1140.5e370d17.chunk.js","mappings":"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","sources":["screens/Console/Common/CredentialsPrompt/CredentialItem.tsx","screens/Console/Common/CredentialsPrompt/CredentialsPrompt.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 { InputAdornment, OutlinedInput } from \"@mui/material\";\nimport BoxIconButton from \"../BoxIconButton/BoxIconButton\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport CopyToClipboard from \"react-copy-to-clipboard\";\nimport { CopyIcon } from \"../../../../icons\";\nimport { fieldBasic } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n container: {\n display: \"flex\",\n flexFlow: \"column\",\n padding: \"20px 0 8px 0\",\n },\n inputWithCopy: {\n \"& .MuiInputBase-root \": {\n width: \"100%\",\n background: \"#FBFAFA\",\n \"& .MuiInputBase-input\": {\n height: \".8rem\",\n },\n \"& .MuiInputAdornment-positionEnd\": {\n marginRight: \".5rem\",\n \"& .MuiButtonBase-root\": {\n height: \"2rem\",\n },\n },\n },\n \"& .MuiButtonBase-root .min-icon\": {\n width: \".8rem\",\n height: \".8rem\",\n },\n },\n inputLabel: {\n ...fieldBasic.inputLabel,\n fontSize: \".8rem\",\n },\n });\n\nconst CredentialItem = ({\n label = \"\",\n value = \"\",\n classes = {},\n}: {\n label: string;\n value: string;\n classes: any;\n}) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(CredentialItem);\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 get from \"lodash/get\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { NewServiceAccount } from \"./types\";\nimport { Button } from \"@mui/material\";\nimport ModalWrapper from \"../ModalWrapper/ModalWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport CredentialItem from \"./CredentialItem\";\nimport WarnIcon from \"../../../../icons/WarnIcon\";\nimport { DownloadIcon, ServiceAccountCredentialsIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n warningBlock: {\n color: \"red\",\n fontSize: \".85rem\",\n margin: \".5rem 0 .5rem 0\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg \": {\n marginRight: \".3rem\",\n height: 16,\n width: 16,\n },\n },\n credentialTitle: {\n padding: \".8rem 0 0 0\",\n fontWeight: 600,\n fontSize: \".9rem\",\n },\n buttonContainer: {\n textAlign: \"right\",\n marginTop: \"1rem\",\n },\n credentialsPanel: {\n overflowY: \"auto\",\n maxHeight: 350,\n },\n promptTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n buttonSpacer: {\n marginRight: \".9rem\",\n },\n promptIcon: {\n marginRight: \".1rem\",\n display: \"flex\",\n alignItems: \"center\",\n height: \"2rem\",\n width: \"2rem\",\n },\n });\n\ninterface ICredentialsPromptProps {\n classes: any;\n newServiceAccount: NewServiceAccount | null;\n open: boolean;\n entity: string;\n closeModal: () => void;\n}\n\nconst download = (filename: string, text: string) => {\n let element = document.createElement(\"a\");\n element.setAttribute(\n \"href\",\n \"data:text/plain;charset=utf-8,\" + encodeURIComponent(text)\n );\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\nconst CredentialsPrompt = ({\n classes,\n newServiceAccount,\n open,\n closeModal,\n entity,\n}: ICredentialsPromptProps) => {\n if (!newServiceAccount) {\n return null;\n }\n const consoleCreds = get(newServiceAccount, \"console\", null);\n const idp = get(newServiceAccount, \"idp\", false);\n\n return (\n {\n closeModal();\n }}\n title={\n
\n
New {entity} Created
\n
\n }\n titleIcon={}\n >\n \n \n A new {entity} has been created with the following details:\n {!idp && consoleCreds && (\n \n \n
\n Please Login via the configured external identity provider.\n
\n ) : (\n
\n \n \n Write these down, as this is the only time the secret will be\n displayed.\n \n
\n )}\n \n \n \n\n {!idp && (\n \n )}\n \n \n \n );\n};\n\nexport default withStyles(styles)(CredentialsPrompt);\n"],"names":["withStyles","theme","createStyles","container","display","flexFlow","padding","inputWithCopy","width","background","height","marginRight","inputLabel","fieldBasic","fontSize","label","value","classes","className","OutlinedInput","readOnly","endAdornment","InputAdornment","position","text","BoxIconButton","tooltip","onClick","onMouseDown","edge","warningBlock","color","margin","alignItems","credentialTitle","fontWeight","buttonContainer","textAlign","marginTop","credentialsPanel","overflowY","maxHeight","promptTitle","buttonSpacer","promptIcon","newServiceAccount","open","closeModal","entity","consoleCreds","get","idp","ModalWrapper","modalOpen","onClose","title","titleIcon","Grid","item","xs","formScrollable","Array","isArray","map","credentialsPair","index","accessKey","secretKey","WarnIcon","Button","variant","consoleExtras","cCreds","itemMap","url","access_key","secret_key","api","path","console","filename","element","document","createElement","setAttribute","encodeURIComponent","style","body","appendChild","click","removeChild","download","JSON","stringify","endIcon"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1237.5cfe4b14.chunk.js b/portal-ui/build/static/js/1237.dbb13c2b.chunk.js
similarity index 95%
rename from portal-ui/build/static/js/1237.5cfe4b14.chunk.js
rename to portal-ui/build/static/js/1237.dbb13c2b.chunk.js
index ebe9e3cf9..6731e6d12 100644
--- a/portal-ui/build/static/js/1237.5cfe4b14.chunk.js
+++ b/portal-ui/build/static/js/1237.dbb13c2b.chunk.js
@@ -1,2 +1,2 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1237],{37882:function(n,e,r){var o=r(18489),t=r(50390),i=r(62559);e.Z=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function r(r){return(0,i.jsx)(t.Suspense,{fallback:e,children:(0,i.jsx)(n,(0,o.Z)({},r))})}return r}},25534:function(n,e,r){var o=r(18489),t=(r(50390),r(25594)),i=r(86509),a=r(4285),c=r(72462),l=r(62559);e.Z=(0,a.Z)((function(n){return(0,i.Z)((0,o.Z)({},c.Bw))}))((function(n){var e=n.classes,r=n.className,o=void 0===r?"":r,i=n.children;return(0,l.jsx)("div",{className:e.contentSpacer,children:(0,l.jsx)(t.ZP,{container:!0,children:(0,l.jsx)(t.ZP,{item:!0,xs:12,className:o,children:i})})})}))},31237:function(n,e,r){r.r(e);var o=r(50390),t=r(24442),i=r(70971),a=r(34424),c=r(44149),l=r(36176),u=r(37882),s=r(49495),d=r(62559),f=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(7777),r.e(3967)]).then(r.bind(r,63967))}))),p=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(9998),r.e(8954),r.e(7777),r.e(4084)]).then(r.bind(r,5604))}))),m=(0,a.$j)((function(n){return{open:n.system.sidebarOpen}}),{setMenuOpen:c.gG});e.default=(0,i.EN)(m((function(){return(0,d.jsx)(i.F0,{history:t.Z,children:(0,d.jsxs)(i.rs,{children:[(0,d.jsx)(i.AW,{path:s.gA.POLICIES,exact:!0,component:f}),(0,d.jsx)(i.AW,{path:"".concat(s.gA.POLICIES,"/*"),component:p}),(0,d.jsx)(i.AW,{path:"/",component:f}),(0,d.jsx)(i.AW,{component:l.Z})]})})})))},36176:function(n,e,r){r.d(e,{Z:function(){return u}});r(50390);var o=r(56805),t=r(35477),i=r(10567),a=r(62559);function c(){return(0,a.jsxs)(t.Z,{variant:"body2",color:"textSecondary",align:"center",children:["Copyright \xa9 ",(0,a.jsx)(i.Z,{color:"inherit",href:"https://min.io/?ref=con",children:"MinIO"})," ",(new Date).getFullYear(),"."]})}var l=r(25534),u=function(){return(0,a.jsx)(l.Z,{children:(0,a.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center",margin:"auto",flexFlow:"column"},children:[(0,a.jsx)(o.Z,{sx:{fontSize:"110%",margin:"0 0 0.25rem",color:"#909090"},children:"404 Error"}),(0,a.jsx)(o.Z,{sx:{fontStyle:"normal",fontSize:"clamp(2rem,calc(2rem + 1.2vw),3rem)",fontWeight:700},children:"Sorry, the page could not be found."}),(0,a.jsx)(o.Z,{mt:5,children:(0,a.jsx)(c,{})})]})})}},10567:function(n,e,r){r.d(e,{Z:function(){return k}});var o=r(23430),t=r(36222),i=r(1048),a=r(32793),c=r(50390),l=r(44977),u=r(50076),s=r(29001),d=r(36128),f=r(91442),p=r(8208),m=r(15573),h=r(42081),x=r(3299),Z=r(35477),v=r(10594);function y(n){return(0,v.Z)("MuiLink",n)}var b=(0,r(43349).Z)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),g=r(62559),j=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"],S={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},w=(0,p.ZP)(Z.Z,{name:"MuiLink",slot:"Root",overridesResolver:function(n,e){var r=n.ownerState;return[e.root,e["underline".concat((0,f.Z)(r.underline))],"button"===r.component&&e.button]}})((function(n){var e=n.theme,r=n.ownerState,o=(0,s.D)(e,"palette.".concat(function(n){return S[n]||n}(r.color)))||r.color;return(0,a.Z)({},"none"===r.underline&&{textDecoration:"none"},"hover"===r.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===r.underline&&{textDecoration:"underline",textDecorationColor:"inherit"!==o?(0,d.Fq)(o,.4):void 0,"&:hover":{textDecorationColor:"inherit"}},"button"===r.component&&(0,t.Z)({position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"}},"&.".concat(b.focusVisible),{outline:"auto"}))})),k=c.forwardRef((function(n,e){var r=(0,m.Z)({props:n,name:"MuiLink"}),t=r.className,s=r.color,d=void 0===s?"primary":s,p=r.component,Z=void 0===p?"a":p,v=r.onBlur,b=r.onFocus,S=r.TypographyClasses,k=r.underline,C=void 0===k?"always":k,A=r.variant,F=void 0===A?"inherit":A,D=(0,i.Z)(r,j),N=(0,h.Z)(),P=N.isFocusVisibleRef,M=N.onBlur,W=N.onFocus,z=N.ref,I=c.useState(!1),L=(0,o.Z)(I,2),V=L[0],B=L[1],O=(0,x.Z)(e,z),R=(0,a.Z)({},r,{color:d,component:Z,focusVisible:V,underline:C,variant:F}),E=function(n){var e=n.classes,r=n.component,o=n.focusVisible,t=n.underline,i={root:["root","underline".concat((0,f.Z)(t)),"button"===r&&"button",o&&"focusVisible"]};return(0,u.Z)(i,y,e)}(R);return(0,g.jsx)(w,(0,a.Z)({className:(0,l.Z)(E.root,t),classes:S,color:d,component:Z,onBlur:function(n){M(n),!1===P.current&&B(!1),v&&v(n)},onFocus:function(n){W(n),!0===P.current&&B(!0),b&&b(n)},ref:O,ownerState:R,variant:F},D))}))}}]);
-//# sourceMappingURL=1237.5cfe4b14.chunk.js.map
\ No newline at end of file
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1237],{37882:function(n,e,r){var o=r(18489),t=r(50390),i=r(62559);e.Z=function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;function r(r){return(0,i.jsx)(t.Suspense,{fallback:e,children:(0,i.jsx)(n,(0,o.Z)({},r))})}return r}},25534:function(n,e,r){var o=r(18489),t=(r(50390),r(25594)),i=r(86509),a=r(4285),c=r(72462),l=r(62559);e.Z=(0,a.Z)((function(n){return(0,i.Z)((0,o.Z)({},c.Bw))}))((function(n){var e=n.classes,r=n.className,o=void 0===r?"":r,i=n.children;return(0,l.jsx)("div",{className:e.contentSpacer,children:(0,l.jsx)(t.ZP,{container:!0,children:(0,l.jsx)(t.ZP,{item:!0,xs:12,className:o,children:i})})})}))},31237:function(n,e,r){r.r(e);var o=r(50390),t=r(24442),i=r(70971),a=r(34424),c=r(44149),l=r(36176),u=r(37882),s=r(49495),d=r(62559),f=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(8174),r.e(3967)]).then(r.bind(r,63967))}))),p=(0,u.Z)(o.lazy((function(){return Promise.all([r.e(14),r.e(3152),r.e(2066),r.e(3690),r.e(5399),r.e(9998),r.e(8954),r.e(8174),r.e(4084)]).then(r.bind(r,5604))}))),m=(0,a.$j)((function(n){return{open:n.system.sidebarOpen}}),{setMenuOpen:c.gG});e.default=(0,i.EN)(m((function(){return(0,d.jsx)(i.F0,{history:t.Z,children:(0,d.jsxs)(i.rs,{children:[(0,d.jsx)(i.AW,{path:s.gA.POLICIES,exact:!0,component:f}),(0,d.jsx)(i.AW,{path:"".concat(s.gA.POLICIES,"/*"),component:p}),(0,d.jsx)(i.AW,{path:"/",component:f}),(0,d.jsx)(i.AW,{component:l.Z})]})})})))},36176:function(n,e,r){r.d(e,{Z:function(){return u}});r(50390);var o=r(56805),t=r(35477),i=r(10567),a=r(62559);function c(){return(0,a.jsxs)(t.Z,{variant:"body2",color:"textSecondary",align:"center",children:["Copyright \xa9 ",(0,a.jsx)(i.Z,{color:"inherit",href:"https://min.io/?ref=con",children:"MinIO"})," ",(new Date).getFullYear(),"."]})}var l=r(25534),u=function(){return(0,a.jsx)(l.Z,{children:(0,a.jsxs)(o.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"center",height:"100%",textAlign:"center",margin:"auto",flexFlow:"column"},children:[(0,a.jsx)(o.Z,{sx:{fontSize:"110%",margin:"0 0 0.25rem",color:"#909090"},children:"404 Error"}),(0,a.jsx)(o.Z,{sx:{fontStyle:"normal",fontSize:"clamp(2rem,calc(2rem + 1.2vw),3rem)",fontWeight:700},children:"Sorry, the page could not be found."}),(0,a.jsx)(o.Z,{mt:5,children:(0,a.jsx)(c,{})})]})})}},10567:function(n,e,r){r.d(e,{Z:function(){return k}});var o=r(23430),t=r(36222),i=r(1048),a=r(32793),c=r(50390),l=r(44977),u=r(50076),s=r(29001),d=r(36128),f=r(91442),p=r(8208),m=r(15573),h=r(42081),x=r(3299),Z=r(35477),v=r(10594);function y(n){return(0,v.Z)("MuiLink",n)}var b=(0,r(43349).Z)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]),g=r(62559),j=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant"],S={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},w=(0,p.ZP)(Z.Z,{name:"MuiLink",slot:"Root",overridesResolver:function(n,e){var r=n.ownerState;return[e.root,e["underline".concat((0,f.Z)(r.underline))],"button"===r.component&&e.button]}})((function(n){var e=n.theme,r=n.ownerState,o=(0,s.D)(e,"palette.".concat(function(n){return S[n]||n}(r.color)))||r.color;return(0,a.Z)({},"none"===r.underline&&{textDecoration:"none"},"hover"===r.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===r.underline&&{textDecoration:"underline",textDecorationColor:"inherit"!==o?(0,d.Fq)(o,.4):void 0,"&:hover":{textDecorationColor:"inherit"}},"button"===r.component&&(0,t.Z)({position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"}},"&.".concat(b.focusVisible),{outline:"auto"}))})),k=c.forwardRef((function(n,e){var r=(0,m.Z)({props:n,name:"MuiLink"}),t=r.className,s=r.color,d=void 0===s?"primary":s,p=r.component,Z=void 0===p?"a":p,v=r.onBlur,b=r.onFocus,S=r.TypographyClasses,k=r.underline,C=void 0===k?"always":k,A=r.variant,F=void 0===A?"inherit":A,D=(0,i.Z)(r,j),N=(0,h.Z)(),P=N.isFocusVisibleRef,M=N.onBlur,W=N.onFocus,z=N.ref,I=c.useState(!1),L=(0,o.Z)(I,2),V=L[0],B=L[1],O=(0,x.Z)(e,z),R=(0,a.Z)({},r,{color:d,component:Z,focusVisible:V,underline:C,variant:F}),E=function(n){var e=n.classes,r=n.component,o=n.focusVisible,t=n.underline,i={root:["root","underline".concat((0,f.Z)(t)),"button"===r&&"button",o&&"focusVisible"]};return(0,u.Z)(i,y,e)}(R);return(0,g.jsx)(w,(0,a.Z)({className:(0,l.Z)(E.root,t),classes:S,color:d,component:Z,onBlur:function(n){M(n),!1===P.current&&B(!1),v&&v(n)},onFocus:function(n){W(n),!0===P.current&&B(!0),b&&b(n)},ref:O,ownerState:R,variant:F},D))}))}}]);
+//# sourceMappingURL=1237.dbb13c2b.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1237.5cfe4b14.chunk.js.map b/portal-ui/build/static/js/1237.dbb13c2b.chunk.js.map
similarity index 99%
rename from portal-ui/build/static/js/1237.5cfe4b14.chunk.js.map
rename to portal-ui/build/static/js/1237.dbb13c2b.chunk.js.map
index 452526a93..b57b8e0e3 100644
--- a/portal-ui/build/static/js/1237.5cfe4b14.chunk.js.map
+++ b/portal-ui/build/static/js/1237.dbb13c2b.chunk.js.map
@@ -1 +1 @@
-{"version":3,"file":"static/js/1237.5cfe4b14.chunk.js","mappings":"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","sources":["screens/Console/Common/Components/withSuspense.tsx","screens/Console/Common/Layout/PageLayout.tsx","screens/Console/Policies/Policies.tsx","common/Copyright.tsx","screens/NotFoundPage.tsx","../node_modules/@mui/material/Link/linkClasses.js","../node_modules/@mui/material/Link/Link.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, { 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","import React from \"react\";\nimport { Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { pageContentStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...pageContentStyles,\n });\n\ntype PageLayoutProps = {\n className?: string;\n classes?: any;\n children: any;\n};\n\nconst PageLayout = ({ classes, className = \"\", children }: PageLayoutProps) => {\n return (\n
\n );\n};\n\nexport default withStyles(styles)(PageLayout);\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 { connect } from \"react-redux\";\nimport Grid from \"@mui/material/Grid\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport Typography from \"@mui/material/Typography\";\nimport IconButton from \"@mui/material/IconButton\";\nimport { AppState } from \"../../../../store\";\nimport OperatorLogo from \"../../../../icons/OperatorLogo\";\nimport ConsoleLogo from \"../../../../icons/ConsoleLogo\";\nimport { IFileItem } from \"../../ObjectBrowser/reducers\";\nimport { toggleList } from \"../../ObjectBrowser/actions\";\nimport { ObjectManagerIcon } from \"../../../../icons\";\n\ninterface IPageHeader {\n classes: any;\n sidebarOpen?: boolean;\n operatorMode?: boolean;\n label: any;\n actions?: any;\n managerObjects?: IFileItem[];\n toggleList: typeof toggleList;\n middleComponent?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n headerContainer: {\n width: \"100%\",\n minHeight: 79,\n display: \"flex\",\n backgroundColor: \"#fff\",\n left: 0,\n boxShadow: \"rgba(0,0,0,.08) 0 3px 10px\",\n },\n label: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n labelStyle: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 700,\n marginLeft: 34,\n marginTop: 8,\n },\n rightMenu: {\n textAlign: \"right\",\n },\n logo: {\n marginLeft: 34,\n fill: theme.palette.primary.main,\n \"& .min-icon\": {\n width: 120,\n },\n },\n middleComponent: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n },\n });\n\nconst PageHeader = ({\n classes,\n label,\n actions,\n sidebarOpen,\n operatorMode,\n managerObjects,\n toggleList,\n middleComponent,\n}: IPageHeader) => {\n return (\n \n \n {!sidebarOpen && (\n
\n {operatorMode ? : }\n
\n )}\n \n {label}\n \n \n {middleComponent && (\n \n {middleComponent}\n \n )}\n \n {actions && actions}\n {managerObjects && managerObjects.length > 0 && (\n {\n toggleList();\n }}\n size=\"large\"\n >\n \n \n )}\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n sidebarOpen: state.system.sidebarOpen,\n operatorMode: state.system.operatorMode,\n managerObjects: state.objectBrowser.objectManager.objectsToManage,\n});\n\nconst mapDispatchToProps = {\n toggleList,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(PageHeader));\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 { Button, Grid, TextField } from \"@mui/material\";\nimport { IMessageEvent, w3cwebsocket as W3CWebSocket } from \"websocket\";\nimport { AppState } from \"../../../store\";\nimport { connect } from \"react-redux\";\nimport {\n setTraceStarted,\n traceMessageReceived,\n traceResetMessages,\n} from \"./actions\";\nimport { TraceMessage } from \"./types\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { niceBytes, timeFromDate } from \"../../../common/utils\";\nimport { wsProtocol } from \"../../../utils/wsUtils\";\nimport {\n actionsTray,\n containerForHeader,\n hrClass,\n inlineCheckboxes,\n searchField,\n tableStyles,\n} from \"../Common/FormComponents/common/styleLibrary\";\nimport TableWrapper from \"../Common/TableWrapper/TableWrapper\";\nimport PageHeader from \"../Common/PageHeader/PageHeader\";\nimport CheckboxWrapper from \"../Common/FormComponents/CheckboxWrapper/CheckboxWrapper\";\nimport moment from \"moment/moment\";\nimport PageLayout from \"../Common/Layout/PageLayout\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n sizeItem: {\n width: 150,\n },\n timeItem: {\n width: 100,\n },\n startButton: {\n textAlign: \"right\",\n },\n ...actionsTray,\n ...searchField,\n ...hrClass,\n\n ...tableStyles,\n searchField: {\n ...searchField.searchField,\n margin: \"0 5px\",\n \"&:first-of-type\": {\n marginLeft: 0,\n },\n \"&:last-of-type\": {\n marginRight: 0,\n },\n },\n tableWrapper: {\n height: \"calc(100vh - 292px)\",\n },\n inlineCheckboxes: {\n ...inlineCheckboxes.inlineCheckboxes,\n alignItems: \"center\",\n\n \"@media (max-width: 900px)\": {\n flexFlow: \"column\",\n alignItems: \"flex-start\",\n },\n },\n checkBoxLabel: {\n marginTop: 10,\n fontSize: 16,\n fontWeight: 500,\n },\n formBox: {\n border: \"1px solid #EAEAEA\",\n padding: 15,\n marginBottom: 15,\n },\n midColumnCheckboxes: {\n display: \"flex\",\n },\n separatorBar: {\n fontSize: 16,\n fontWeight: 700,\n paddingTop: 19,\n \"@media (max-width: 900px)\": {\n display: \"none\",\n },\n },\n ...containerForHeader(theme.spacing(4)),\n });\n\ninterface ITrace {\n classes: any;\n traceMessageReceived: typeof traceMessageReceived;\n traceResetMessages: typeof traceResetMessages;\n setTraceStarted: typeof setTraceStarted;\n messages: TraceMessage[];\n namespace: string;\n tenant: string;\n traceStarted: boolean;\n}\n\nvar c: any = null;\n\nconst Trace = ({\n classes,\n traceMessageReceived,\n traceResetMessages,\n setTraceStarted,\n traceStarted,\n messages,\n}: ITrace) => {\n const [statusCode, setStatusCode] = useState(\"\");\n const [method, setMethod] = useState(\"\");\n const [func, setFunc] = useState(\"\");\n const [path, setPath] = useState(\"\");\n const [threshold, setThreshold] = useState(0);\n const [all, setAll] = useState(false);\n const [s3, setS3] = useState(true);\n const [internal, setInternal] = useState(false);\n const [storage, setStorage] = useState(false);\n const [os, setOS] = useState(false);\n const [errors, setErrors] = useState(false);\n\n const startTrace = () => {\n traceResetMessages();\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 let calls = `${s3 ? \"s3,\" : \"\"}${internal ? \"internal,\" : \"\"}${\n storage ? \"storage,\" : \"\"\n }${os ? \"os,\" : \"\"}`;\n\n if (all) {\n calls = \"all\";\n }\n\n const wsProt = wsProtocol(url.protocol);\n c = new W3CWebSocket(\n `${wsProt}://${\n url.hostname\n }:${port}/ws/trace?calls=${calls}&threshold=${threshold}&onlyErrors=${\n errors ? \"yes\" : \"no\"\n }&statusCode=${statusCode}&method=${method}&funcname=${func}&path=${path}`\n );\n\n let interval: any | null = null;\n if (c !== null) {\n c.onopen = () => {\n console.log(\"WebSocket Client Connected\");\n setTraceStarted(true);\n c.send(\"ok\");\n interval = setInterval(() => {\n c.send(\"ok\");\n }, 10 * 1000);\n };\n c.onmessage = (message: IMessageEvent) => {\n let m: TraceMessage = JSON.parse(message.data.toString());\n m.ptime = moment(m.time, \"YYYY-MM-DD HH:mm:s.SSSS +0000 UTC\").toDate();\n m.key = Math.random();\n traceMessageReceived(m);\n };\n c.onclose = () => {\n clearInterval(interval);\n console.log(\"connection closed by server\");\n setTraceStarted(false);\n };\n return () => {\n c.close(1000);\n clearInterval(interval);\n console.log(\"closing websockets\");\n setTraceStarted(false);\n };\n }\n };\n\n const stopTrace = () => {\n c.close(1000);\n setTraceStarted(false);\n };\n\n return (\n \n \n \n \n \n {\n setStatusCode(e.target.value);\n }}\n disabled={traceStarted}\n variant=\"standard\"\n />\n {\n setMethod(e.target.value);\n }}\n disabled={traceStarted}\n variant=\"standard\"\n />\n {\n setFunc(e.target.value);\n }}\n variant=\"standard\"\n />\n {\n setPath(e.target.value);\n }}\n variant=\"standard\"\n />\n {\n setThreshold(parseInt(e.target.value));\n }}\n variant=\"standard\"\n />\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 .\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, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["mapDispatchToProps","setModalErrorSnackMessage","connector","connect","system","distributedSetup","get","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","color","onClick","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","autoComplete","multiline","tooltip","index","required","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","onKeyPress","inputProps","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","placement","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","displayErrorMessage","state","modalSnackMessage","modalSnackBar","modalErrorContainer","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1666.d4e2b942.chunk.js b/portal-ui/build/static/js/1666.d4e2b942.chunk.js
deleted file mode 100644
index d3029fde8..000000000
--- a/portal-ui/build/static/js/1666.d4e2b942.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1666],{23152:function(e,a,n){n.r(a);var t=n(23430),o=n(18489),r=n(50390),s=n(38342),i=n.n(s),l=n(34424),c=n(25594),d=n(66946),u=n(86509),m=n(4285),p=n(72462),x=n(44149),f=n(66964),h=n(76352),g=n(30324),v=n(98280),Z=n(62559),b={setModalErrorSnackMessage:x.zb},j=(0,l.$j)((function(e){var a=e.system;return{distributedSetup:i()(a,"distributedSetup",!1)}}),b);a.default=(0,m.Z)((function(e){return(0,u.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.DF),p.ID),p.bK))}))(j((function(e){var a=e.modalOpen,n=e.currentTags,s=e.onCloseAndUpdate,i=e.bucketName,l=e.setModalErrorSnackMessage,u=e.classes,m=(0,r.useState)(""),p=(0,t.Z)(m,2),x=p[0],b=p[1],j=(0,r.useState)(""),C=(0,t.Z)(j,2),N=C[0],y=C[1],k=(0,r.useState)(!1),w=(0,t.Z)(k,2),S=w[0],M=w[1];return(0,Z.jsx)(h.Z,{modalOpen:a,title:"Add New Tag ",onClose:function(){s(!1)},titleIcon:(0,Z.jsx)(v.OC,{}),children:(0,Z.jsxs)(c.ZP,{container:!0,children:[(0,Z.jsxs)("div",{className:u.spacerBottom,children:[(0,Z.jsx)("strong",{children:"Bucket"}),": ",i]}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:x,label:"New Tag Key",id:"newTagKey",name:"newTagKey",placeholder:"Enter New Tag Key",onChange:function(e){b(e.target.value)}})}),(0,Z.jsx)(c.ZP,{item:!0,xs:12,className:u.formFieldRow,children:(0,Z.jsx)(f.Z,{value:N,label:"New Tag Label",id:"newTagLabel",name:"newTagLabel",placeholder:"Enter New Tag Label",onChange:function(e){y(e.target.value)}})}),(0,Z.jsxs)(c.ZP,{item:!0,xs:12,className:u.modalButtonBar,children:[(0,Z.jsx)(d.Z,{type:"button",variant:"outlined",color:"primary",onClick:function(){y(""),b("")},children:"Clear"}),(0,Z.jsx)(d.Z,{type:"submit",variant:"contained",color:"primary",disabled:""===N.trim()||""===x.trim()||S,onClick:function(){M(!0);var e={};e[x]=N;var a=(0,o.Z)((0,o.Z)({},n),e);g.Z.invoke("PUT","/api/v1/buckets/".concat(i,"/tags"),{tags:a}).then((function(e){M(!1),s(!0)})).catch((function(e){l(e),M(!1)}))},children:"Save"})]})]})})})))},66964:function(e,a,n){var t=n(18489),o=n(50390),r=n(12066),s=n(25594),i=n(36554),l=n(94187),c=n(95467),d=n(86509),u=n(62449),m=n(4285),p=n(72462),x=n(97538),f=n(44977),h=n(62559),g=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function v(e){var a=g();return(0,h.jsx)(r.Z,(0,t.Z)({InputProps:{classes:a}},e))}a.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var a=e.label,n=e.onChange,r=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,g=e.autoComplete,Z=void 0===g?"off":g,b=e.disabled,j=void 0!==b&&b,C=e.multiline,N=void 0!==C&&C,y=e.tooltip,k=void 0===y?"":y,w=e.index,S=void 0===w?0:w,M=e.error,E=void 0===M?"":M,L=e.required,B=void 0!==L&&L,T=e.placeholder,I=void 0===T?"":T,D=e.min,P=e.max,F=e.overlayIcon,z=void 0===F?null:F,O=e.overlayObject,W=void 0===O?null:O,R=e.extraInputProps,A=void 0===R?{}:R,K=e.overlayAction,H=e.noLabelMinWidth,$=void 0!==H&&H,U=e.pattern,Y=void 0===U?"":U,_=e.autoFocus,q=void 0!==_&&_,G=e.classes,Q=e.className,X=void 0===Q?"":Q,J=(0,t.Z)({"data-index":S},A);return"number"===p&&D&&(J.min=D),"number"===p&&P&&(J.max=P),""!==Y&&(J.pattern=Y),(0,h.jsx)(o.Fragment,{children:(0,h.jsxs)(s.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==E?G.errorInField:G.inputBoxContainer),children:[""!==a&&(0,h.jsxs)(i.Z,{htmlFor:d,className:$?G.noMinWidthLabel:G.inputLabel,children:[(0,h.jsxs)("span",{children:[a,B?"*":""]}),""!==k&&(0,h.jsx)("div",{className:G.tooltipContainer,children:(0,h.jsx)(l.Z,{title:k,placement:"top-start",children:(0,h.jsx)("div",{className:G.tooltip,children:(0,h.jsx)(x.Z,{})})})})]}),(0,h.jsxs)("div",{className:G.textBoxContainer,children:[(0,h.jsx)(v,{id:d,name:u,fullWidth:!0,value:r,autoFocus:q,disabled:j,onChange:n,type:p,multiline:N,autoComplete:Z,inputProps:J,error:""!==E,helperText:E,placeholder:I,className:G.inputRebase}),z&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:(0,h.jsx)(c.Z,{onClick:K?function(){K()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:z})}),W&&(0,h.jsx)("div",{className:"".concat(G.overlayAction," ").concat(""!==a?"withLabel":""),children:W})]})]})})}))},76352:function(e,a,n){n.d(a,{Z:function(){return S}});var t,o=n(23430),r=n(18489),s=n(50390),i=n(34424),l=n(95467),c=n(97771),d=n(84402),u=n(78426),m=n(93085),p=n(86509),x=n(4285),f=n(72462),h=n(44149),g=n(38342),v=n.n(g),Z=n(92125),b=n(19538),j=n(21278),C=n(62559),N=function(){clearInterval(t)},y={displayErrorMessage:h.zb},k=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),y)((0,x.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var a=e.classes,n=e.modalSnackMessage,r=e.displayErrorMessage,i=e.customStyle,l=(0,s.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,s.useState)(!1),p=(0,o.Z)(m,2),x=p[0],f=p[1],h=(0,s.useCallback)((function(){f(!1)}),[]);(0,s.useEffect)((function(){x||(r({detailedError:"",errorMessage:""}),u(!1))}),[r,x]),(0,s.useEffect)((function(){""!==n.message&&"error"===n.type&&f(!0)}),[h,n.message,n.type]);var g=v()(n,"message",""),y=v()(n,"detailedErrorMsg","");return"error"!==n.type||""===g?null:(0,C.jsx)(s.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(a.modalErrorContainer," ").concat(x?a.modalErrorShow:""),style:i,onMouseOver:N,onMouseLeave:function(){t=setInterval(h,1e4)},children:[(0,C.jsx)("button",{className:a.closeButton,onClick:h,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:a.errorTitle,children:[(0,C.jsx)("span",{className:a.messageIcon,children:(0,C.jsx)(b.Z,{})}),(0,C.jsx)("span",{className:a.errorLabel,children:g})]}),""!==y&&(0,C.jsxs)(s.Fragment,{children:[(0,C.jsx)("div",{className:a.detailsContainerLink,children:(0,C.jsxs)("button",{className:a.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(Z.Z,{className:"".concat(a.arrowElement," ").concat(d?a.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(a.extraDetailsContainer," ").concat(d?a.extraDetailsOpen:""),children:y})]})]})})}))),w=(0,i.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:h.MK}),S=(0,x.Z)((function(e){return(0,p.Z)((0,r.Z)((0,r.Z)({},f.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},f.sN))}))(w((function(e){var a=e.onClose,n=e.modalOpen,t=e.title,i=e.children,p=e.classes,x=e.wideLimit,f=void 0===x||x,h=e.modalSnackMessage,g=e.noContentPadding,v=e.setModalSnackMessage,Z=e.titleIcon,b=void 0===Z?null:Z,N=(0,s.useState)(!1),y=(0,o.Z)(N,2),w=y[0],S=y[1];(0,s.useEffect)((function(){v("")}),[v]),(0,s.useEffect)((function(){if(h){if(""===h.message)return void S(!1);"error"!==h.type&&S(!0)}}),[h]);var M=f?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},E="";return h&&(E=h.detailedErrorMsg,(""===h.detailedErrorMsg||h.detailedErrorMsg.length<5)&&(E=h.message)),(0,C.jsxs)(d.Z,(0,r.Z)((0,r.Z)({open:n,classes:p},M),{},{scroll:"paper",onClose:function(e,n){"backdropClick"!==n&&a()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[b," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:a,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(k,{}),(0,C.jsx)(c.Z,{open:w,className:p.snackBarModal,onClose:function(){S(!1),v("")},message:E,ContentProps:{className:"".concat(p.snackBar," ").concat(h&&"error"===h.type?p.errorSnackBar:"")},autoHideDuration:h&&"error"===h.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:g?"":p.content,children:i})]}))})))}}]);
-//# sourceMappingURL=1666.d4e2b942.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1666.d4e2b942.chunk.js.map b/portal-ui/build/static/js/1666.d4e2b942.chunk.js.map
deleted file mode 100644
index 610cd431a..000000000
--- a/portal-ui/build/static/js/1666.d4e2b942.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1666.d4e2b942.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/AddBucketTagModal.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.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, { useState } from \"react\";\nimport get from \"lodash/get\";\nimport { connect } from \"react-redux\";\nimport { Button, Grid } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n spacingUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { AppState } from \"../../../../store\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { AddNewTagIcon } from \"../../../../icons\";\n\ninterface IBucketTagModal {\n modalOpen: boolean;\n currentTags: any;\n bucketName: string;\n onCloseAndUpdate: (refresh: boolean) => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n classes: any;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n ...spacingUtils,\n });\n\nconst AddBucketTagModal = ({\n modalOpen,\n currentTags,\n onCloseAndUpdate,\n bucketName,\n setModalErrorSnackMessage,\n classes,\n}: IBucketTagModal) => {\n const [newKey, setNewKey] = useState(\"\");\n const [newLabel, setNewLabel] = useState(\"\");\n const [isSending, setIsSending] = useState(false);\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 api\n .invoke(\"PUT\", `/api/v1/buckets/${bucketName}/tags`, {\n tags: newTagList,\n })\n .then((res: any) => {\n setIsSending(false);\n onCloseAndUpdate(true);\n })\n .catch((error: ErrorResponseHandler) => {\n setModalErrorSnackMessage(error);\n setIsSending(false);\n });\n };\n\n return (\n {\n onCloseAndUpdate(false);\n }}\n titleIcon={}\n >\n \n
\n Bucket: {bucketName}\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\nconst mapStateToProps = ({ system }: AppState) => ({\n distributedSetup: get(system, \"distributedSetup\", false),\n});\n\nconst mapDispatchToProps = {\n setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapStateToProps, mapDispatchToProps);\n\nexport default withStyles(styles)(connector(AddBucketTagModal));\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 {\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 { 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 \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\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 .\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, useCallback, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["mapDispatchToProps","setModalErrorSnackMessage","connector","connect","system","distributedSetup","get","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","spacingUtils","modalOpen","currentTags","onCloseAndUpdate","bucketName","classes","useState","newKey","setNewKey","newLabel","setNewLabel","isSending","setIsSending","title","onClose","titleIcon","container","className","spacerBottom","item","xs","formFieldRow","value","label","id","name","placeholder","onChange","e","target","modalButtonBar","type","variant","color","onClick","disabled","trim","newTag","newTagList","api","tags","then","res","catch","error","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","autoComplete","multiline","tooltip","index","required","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","inputProps","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","placement","fullWidth","helperText","inputRebase","size","disableFocusRipple","disableRipple","disableTouchRipple","timerI","stopHideTimer","clearInterval","displayErrorMessage","state","modalSnackMessage","modalSnackBar","modalErrorContainer","marginTop","width","backgroundColor","border","borderLeftWidth","borderRadius","zIndex","padding","left","transform","opacity","transitionDuration","modalErrorShow","closeButton","fontSize","cursor","errorTitle","display","alignItems","errorLabel","marginLeft","marginRight","messageIcon","height","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","transition","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","useEffect","detailedError","errorMessage","message","messageDetails","Fragment","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","root","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","length","Dialog","open","scroll","event","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1711.669b8be7.chunk.js b/portal-ui/build/static/js/1711.669b8be7.chunk.js
deleted file mode 100644
index 80297da8c..000000000
--- a/portal-ui/build/static/js/1711.669b8be7.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1711],{31711:function(e,n,a){a.r(n);var t=a(23430),o=a(18489),i=a(50390),r=a(34424),l=a(66946),s=a(81378),c=a(86509),d=a(4285),u=a(25594),m=a(28948),p=a(44149),h=a(72462),x=a(92440),f=a(27207),Z=a(66964),b=a(76352),g=a(67754),v=a(30324),j=a(98280),C=a(62559),k=(0,r.$j)(null,{setModalErrorSnackMessage:p.zb});n.default=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))(k((function(e){var n=e.classes,a=e.open,o=e.enabled,r=e.cfg,c=e.selectedBucket,d=e.closeModalAndRefresh,p=e.setModalErrorSnackMessage,h=(0,i.useState)(!1),k=(0,t.Z)(h,2),N=k[0],y=k[1],S=(0,i.useState)(!1),w=(0,t.Z)(S,2),L=w[0],F=w[1],M=(0,i.useState)("hard"),P=(0,t.Z)(M,2),E=P[0],I=P[1],B=(0,i.useState)("1"),O=(0,t.Z)(B,2),R=O[0],q=O[1],D=(0,i.useState)("TiB"),z=(0,t.Z)(D,2),W=z[0],T=z[1];(0,i.useEffect)((function(){if(o&&(F(!0),r)){I(r.type),q("".concat(r.quota)),T("B");for(var e="B",n=r.quota,a=0;a1?L[1]:"OFF"}),(0,f.jsx)(Z,{checked:b,onChange:o,color:"primary",name:s,inputProps:{"aria-label":"primary checkbox"},disabled:v,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:r}),!C&&(0,f.jsx)("span",{className:(0,x.Z)(w.indicatorLabel,(0,t.Z)({},w.indicatorLabelOn,b)),children:L?L[0]:"ON"})]});return C?F:(0,f.jsx)("div",{className:w.divContainer,children:(0,f.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[(0,f.jsx)(m.ZP,{item:!0,xs:!0,children:(0,f.jsxs)(m.ZP,{container:!0,children:[(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:4,md:3,children:""!==a&&(0,f.jsxs)(c.Z,{htmlFor:l,className:w.inputLabel,children:[(0,f.jsx)("span",{children:a}),""!==N&&(0,f.jsx)("div",{className:w.tooltipContainer,children:(0,f.jsx)(d.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:w.tooltip,children:(0,f.jsx)(h.Z,{})})})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:!0,textAlign:"left",children:""!==S&&(0,f.jsx)(u.Z,{component:"p",className:w.fieldDescription,children:S})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:2,textAlign:"right",className:w.switchContainer,children:F})]})})}))},66964:function(e,n,a){var t=a(18489),o=a(50390),i=a(12066),r=a(25594),l=a(36554),s=a(94187),c=a(95467),d=a(86509),u=a(62449),m=a(4285),p=a(72462),h=a(97538),x=a(44977),f=a(62559),Z=(0,u.Z)((function(e){return(0,d.Z)((0,t.Z)({},p.gM))}));function b(e){var n=Z();return(0,f.jsx)(i.Z,(0,t.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,t.Z)((0,t.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,a=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,Z=e.autoComplete,g=void 0===Z?"off":Z,v=e.disabled,j=void 0!==v&&v,C=e.multiline,k=void 0!==C&&C,N=e.tooltip,y=void 0===N?"":N,S=e.index,w=void 0===S?0:S,L=e.error,F=void 0===L?"":L,M=e.required,P=void 0!==M&&M,E=e.placeholder,I=void 0===E?"":E,B=e.min,O=e.max,R=e.overlayIcon,q=void 0===R?null:R,D=e.overlayObject,z=void 0===D?null:D,W=e.extraInputProps,T=void 0===W?{}:W,_=e.overlayAction,A=e.noLabelMinWidth,H=void 0!==A&&A,$=e.pattern,Y=void 0===$?"":$,Q=e.autoFocus,U=void 0!==Q&&Q,V=e.classes,K=e.className,X=void 0===K?"":K,G=(0,t.Z)({"data-index":w},T);return"number"===p&&B&&(G.min=B),"number"===p&&O&&(G.max=O),""!==Y&&(G.pattern=Y),(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(r.ZP,{container:!0,className:(0,x.Z)(""!==X?X:"",""!==F?V.errorInField:V.inputBoxContainer),children:[""!==n&&(0,f.jsxs)(l.Z,{htmlFor:d,className:H?V.noMinWidthLabel:V.inputLabel,children:[(0,f.jsxs)("span",{children:[n,P?"*":""]}),""!==y&&(0,f.jsx)("div",{className:V.tooltipContainer,children:(0,f.jsx)(s.Z,{title:y,placement:"top-start",children:(0,f.jsx)("div",{className:V.tooltip,children:(0,f.jsx)(h.Z,{})})})})]}),(0,f.jsxs)("div",{className:V.textBoxContainer,children:[(0,f.jsx)(b,{id:d,name:u,fullWidth:!0,value:i,autoFocus:U,disabled:j,onChange:a,type:p,multiline:k,autoComplete:g,inputProps:G,error:""!==F,helperText:F,placeholder:I,className:V.inputRebase}),q&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,f.jsx)(c.Z,{onClick:_?function(){_()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:q})}),z&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:z})]})]})})}))},27207:function(e,n,a){var t=a(36222),o=a(18489),i=(a(50390),a(44977)),r=a(25594),l=a(82420),s=a(66695),c=a(98893),d=a(36554),u=a(94187),m=a(86509),p=a(4285),h=a(62449),x=a(72462),f=a(97538),Z=a(62559),b=(0,h.Z)((0,o.Z)({root:{"&:hover":{backgroundColor:"transparent"}}},x.FU)),g=function(e){var n=b();return(0,Z.jsx)(c.Z,(0,o.Z)({className:n.root,disableRipple:!0,color:"default",checkedIcon:(0,Z.jsx)("span",{className:n.radioSelectedIcon}),icon:(0,Z.jsx)("span",{className:n.radioUnselectedIcon})},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),{},{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,a=void 0===n?[]:n,o=e.currentSelection,c=e.label,m=e.id,p=e.name,h=e.onChange,x=e.tooltip,b=void 0===x?"":x,v=e.disableOptions,j=void 0!==v&&v,C=e.classes,k=e.displayInColumn,N=void 0!==k&&k;return(0,Z.jsxs)(r.ZP,{container:!0,alignItems:"center",children:[(0,Z.jsx)(r.ZP,{item:!0,xs:!0,children:(0,Z.jsxs)(d.Z,{htmlFor:m,className:C.inputLabel,children:[(0,Z.jsx)("span",{children:c}),""!==b&&(0,Z.jsx)("div",{className:C.tooltipContainer,children:(0,Z.jsx)(u.Z,{title:b,placement:"top-start",children:(0,Z.jsx)("div",{children:(0,Z.jsx)(f.Z,{})})})})]})}),(0,Z.jsx)(r.ZP,{item:!0,xs:!0,className:C.radioOptionsLayout,children:(0,Z.jsx)(l.Z,{"aria-label":m,id:m,name:p,value:o,onChange:h,row:!N,style:{display:"block",textAlign:"right"},children:a.map((function(e){return(0,Z.jsx)(s.Z,{value:e.value,control:(0,Z.jsx)(g,{}),label:e.label,disabled:j,className:(0,i.Z)(C.optionLabel,(0,t.Z)({},C.checkedOption,e.value===o))},"rd-".concat(p,"-").concat(e.value))}))})})]})}))},67754:function(e,n,a){var t=a(18489),o=a(50390),i=a(25594),r=a(46413),l=a(36554),s=a(94187),c=a(47554),d=a(43965),u=a(31680),m=a(86509),p=a(4285),h=a(72462),x=a(97538),f=a(62559),Z=(0,p.Z)((function(e){return(0,m.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,p.Z)((function(e){return(0,m.Z)((0,t.Z)((0,t.Z)((0,t.Z)({},h.YI),h.Hr),{},{inputLabel:(0,t.Z)((0,t.Z)({},h.YI.inputLabel),{},{"& span":{fontWeight:"normal"}}),fieldContainer:{display:"flex","@media (max-width: 600px)":{flexFlow:"column"}}}))}))((function(e){var n=e.classes,a=e.id,t=e.name,r=e.onChange,m=e.options,p=e.label,h=e.tooltip,b=void 0===h?"":h,g=e.value,v=e.disabled,j=void 0!==v&&v;return(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(i.ZP,{item:!0,xs:12,className:n.fieldContainer,children:[""!==p&&(0,f.jsxs)(l.Z,{htmlFor:a,className:n.inputLabel,children:[(0,f.jsx)("span",{children:p}),""!==b&&(0,f.jsx)("div",{className:n.tooltipContainer,children:(0,f.jsx)(s.Z,{title:b,placement:"top-start",children:(0,f.jsx)("div",{className:n.tooltip,children:(0,f.jsx)(x.Z,{})})})})]}),(0,f.jsx)(c.Z,{fullWidth:!0,children:(0,f.jsx)(d.Z,{id:a,name:t,value:g,onChange:r,input:(0,f.jsx)(Z,{}),disabled:j,children:m.map((function(e){return(0,f.jsx)(u.Z,{value:e.value,children:e.label},"select-".concat(t,"-").concat(e.label))}))})})]})})}))},76352:function(e,n,a){a.d(n,{Z:function(){return w}});var t,o=a(23430),i=a(18489),r=a(50390),l=a(34424),s=a(95467),c=a(97771),d=a(84402),u=a(78426),m=a(93085),p=a(86509),h=a(4285),x=a(72462),f=a(44149),Z=a(38342),b=a.n(Z),g=a(92125),v=a(19538),j=a(21278),C=a(62559),k=function(){clearInterval(t)},N={displayErrorMessage:f.zb},y=(0,l.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),N)((0,h.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var n=e.classes,a=e.modalSnackMessage,i=e.displayErrorMessage,l=e.customStyle,s=(0,r.useState)(!1),c=(0,o.Z)(s,2),d=c[0],u=c[1],m=(0,r.useState)(!1),p=(0,o.Z)(m,2),h=p[0],x=p[1],f=(0,r.useCallback)((function(){x(!1)}),[]);(0,r.useEffect)((function(){h||(i({detailedError:"",errorMessage:""}),u(!1))}),[i,h]),(0,r.useEffect)((function(){""!==a.message&&"error"===a.type&&x(!0)}),[f,a.message,a.type]);var Z=b()(a,"message",""),N=b()(a,"detailedErrorMsg","");return"error"!==a.type||""===Z?null:(0,C.jsx)(r.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(n.modalErrorContainer," ").concat(h?n.modalErrorShow:""),style:l,onMouseOver:k,onMouseLeave:function(){t=setInterval(f,1e4)},children:[(0,C.jsx)("button",{className:n.closeButton,onClick:f,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:n.errorTitle,children:[(0,C.jsx)("span",{className:n.messageIcon,children:(0,C.jsx)(v.Z,{})}),(0,C.jsx)("span",{className:n.errorLabel,children:Z})]}),""!==N&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)("div",{className:n.detailsContainerLink,children:(0,C.jsxs)("button",{className:n.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(g.Z,{className:"".concat(n.arrowElement," ").concat(d?n.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(n.extraDetailsContainer," ").concat(d?n.extraDetailsOpen:""),children:N})]})]})})}))),S=(0,l.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:f.MK}),w=(0,h.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)({},x.Qw),{},{root:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))(S((function(e){var n=e.onClose,a=e.modalOpen,t=e.title,l=e.children,p=e.classes,h=e.wideLimit,x=void 0===h||h,f=e.modalSnackMessage,Z=e.noContentPadding,b=e.setModalSnackMessage,g=e.titleIcon,v=void 0===g?null:g,k=(0,r.useState)(!1),N=(0,o.Z)(k,2),S=N[0],w=N[1];(0,r.useEffect)((function(){b("")}),[b]),(0,r.useEffect)((function(){if(f){if(""===f.message)return void w(!1);"error"!==f.type&&w(!0)}}),[f]);var L=x?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},F="";return f&&(F=f.detailedErrorMsg,(""===f.detailedErrorMsg||f.detailedErrorMsg.length<5)&&(F=f.message)),(0,C.jsxs)(d.Z,(0,i.Z)((0,i.Z)({open:a,classes:p},L),{},{scroll:"paper",onClose:function(e,a){"backdropClick"!==a&&n()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[v," ",t]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(s.Z,{"aria-label":"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(y,{}),(0,C.jsx)(c.Z,{open:S,className:p.snackBarModal,onClose:function(){w(!1),b("")},message:F,ContentProps:{className:"".concat(p.snackBar," ").concat(f&&"error"===f.type?p.errorSnackBar:"")},autoHideDuration:f&&"error"===f.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:Z?"":p.content,children:l})]}))})))}}]);
-//# sourceMappingURL=1711.669b8be7.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1711.669b8be7.chunk.js.map b/portal-ui/build/static/js/1711.669b8be7.chunk.js.map
deleted file mode 100644
index e97d42f41..000000000
--- a/portal-ui/build/static/js/1711.669b8be7.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1711.669b8be7.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/RadioGroupSelector/RadioGroupSelector.tsx","screens/Console/Common/FormComponents/SelectWrapper/SelectWrapper.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, LinearProgress, SelectChangeEvent } from \"@mui/material\";\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 { factorForDropdown, getBytes, units } from \"../../../../common/utils\";\nimport { BucketQuota } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport RadioGroupSelector from \"../../Common/FormComponents/RadioGroupSelector/RadioGroupSelector\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport SelectWrapper from \"../../Common/FormComponents/SelectWrapper/SelectWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IEnableQuotaProps) => {\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaType, setQuotaType] = useState(\"hard\");\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"TiB\");\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n setQuotaType(cfg.type);\n setQuotaSize(`${cfg.quota}`);\n setQuotaUnit(`B`);\n\n let maxUnit = \"B\";\n let maxQuota = cfg.quota;\n\n for (let i = 0; i < units.length; i++) {\n if (cfg.quota % Math.pow(1024, i) === 0) {\n maxQuota = cfg.quota / Math.pow(1024, i);\n maxUnit = units[i];\n } else {\n break;\n }\n }\n setQuotaSize(`${maxQuota}`);\n setQuotaUnit(maxUnit);\n }\n }\n }, [enabled, cfg]);\n\n const enableBucketEncryption = (event: React.FormEvent) => {\n event.preventDefault();\n if (loading) {\n return;\n }\n let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, false)),\n quota_type: quotaType,\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(EnableQuota));\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 \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\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}\n\nconst styles = (theme: Theme) =>\n createStyles({\n divContainer: {\n marginBottom: 20,\n },\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}: 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\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 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 { 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 \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\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 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 \"../../../../../icons/HelpIcon\";\n\nexport interface SelectorTypes {\n label: string;\n value: string;\n}\n\ninterface RadioGroupProps {\n selectorOptions: SelectorTypes[];\n currentSelection: string;\n label: string;\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 InputLabel,\n MenuItem,\n Select,\n InputBase,\n Tooltip,\n SelectChangeEvent,\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 \"../../../../../icons/HelpIcon\";\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 inputLabel: {\n ...fieldBasic.inputLabel,\n \"& span\": {\n fontWeight: \"normal\",\n },\n },\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 ))}\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\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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"1rem 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["connector","connect","setModalErrorSnackMessage","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaType","setQuotaType","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","useEffect","type","quota","maxUnit","maxQuota","i","units","Math","pow","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","event","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","target","label","currentSelection","selectorOptions","required","min","style","width","options","factorForDropdown","modalButtonBar","variant","color","disabled","onClick","StyledSwitch","root","height","padding","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","divContainer","marginBottom","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","switchOnly","description","indicatorLabels","switchComponent","clsx","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","htmlFor","inputLabel","tooltipContainer","placement","textAlign","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","multiline","index","error","placeholder","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","size","radioStyles","radioIcons","RadioButton","checkedIcon","radioSelectedIcon","icon","radioUnselectedIcon","optionLabel","marginRight","checkedOption","disableOptions","displayInColumn","radioOptionsLayout","row","map","selectorOption","control","SelectStyled","lineHeight","spacing","input","borderColor","InputBase","fieldContainer","flexFlow","option","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","borderLeftWidth","zIndex","left","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","detailedError","errorMessage","message","get","messageDetails","Fragment","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","scroll","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1711.755e1931.chunk.js b/portal-ui/build/static/js/1711.755e1931.chunk.js
new file mode 100644
index 000000000..1b6942c4a
--- /dev/null
+++ b/portal-ui/build/static/js/1711.755e1931.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1711],{31711:function(e,n,t){t.r(n);var a=t(23430),o=t(18489),i=t(50390),r=t(34424),s=t(66946),l=t(81378),c=t(86509),d=t(4285),u=t(25594),m=t(28948),p=t(44149),h=t(72462),x=t(92440),f=t(66964),b=t(76352),g=t(30324),v=t(85615),Z=t(1365),j=t(62559),C=(0,r.$j)(null,{setModalErrorSnackMessage:p.zb});n.default=(0,d.Z)((function(e){return(0,c.Z)((0,o.Z)((0,o.Z)({},h.DF),h.ID))}))(C((function(e){var n=e.classes,t=e.open,o=e.enabled,r=e.cfg,c=e.selectedBucket,d=e.closeModalAndRefresh,p=e.setModalErrorSnackMessage,h=(0,i.useState)(!1),C=(0,a.Z)(h,2),k=C[0],y=C[1],N=(0,i.useState)(!1),S=(0,a.Z)(N,2),w=S[0],F=S[1],M=(0,i.useState)("1"),E=(0,a.Z)(M,2),L=E[0],P=E[1],B=(0,i.useState)("TiB"),I=(0,a.Z)(B,2),z=I[0],D=I[1];(0,i.useEffect)((function(){if(o&&(F(!0),r)){P("".concat(r.quota)),D("Gi");for(var e="B",n=r.quota,t=0;t1?M[1]:"OFF"}),(0,f.jsx)(b,{checked:v,onChange:r,color:"primary",name:p,inputProps:(0,o.Z)({"aria-label":"primary checkbox"},L),disabled:j,disableRipple:!0,disableFocusRipple:!0,disableTouchRipple:!0,value:s}),!k&&(0,f.jsx)("span",{className:(0,x.Z)(F.indicatorLabel,(0,a.Z)({},F.indicatorLabelOn,v)),children:M?M[0]:"ON"})]});return k?P:(0,f.jsx)("div",{className:F.divContainer,children:(0,f.jsxs)(m.ZP,{container:!0,alignItems:"center",children:[(0,f.jsx)(m.ZP,{item:!0,xs:!0,children:(0,f.jsxs)(m.ZP,{container:!0,children:[(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:10,md:9,children:""!==t&&(0,f.jsxs)(c.Z,{htmlFor:l,className:F.inputLabel,children:[(0,f.jsx)("span",{children:t}),""!==N&&(0,f.jsx)("div",{className:F.tooltipContainer,children:(0,f.jsx)(d.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:F.tooltip,children:(0,f.jsx)(h.Z,{})})})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:!0,textAlign:"left",children:""!==w&&(0,f.jsx)(u.Z,{component:"p",className:F.fieldDescription,children:w})})]})}),(0,f.jsx)(m.ZP,{item:!0,xs:12,sm:2,textAlign:"right",className:F.switchContainer,children:P})]})})}))},66964:function(e,n,t){var a=t(18489),o=t(50390),i=t(12066),r=t(25594),s=t(36554),l=t(94187),c=t(95467),d=t(86509),u=t(62449),m=t(4285),p=t(72462),h=t(97538),x=t(44977),f=t(62559),b=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)({},p.gM))}));function g(e){var n=b();return(0,f.jsx)(i.Z,(0,a.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,b=e.autoComplete,v=void 0===b?"off":b,Z=e.disabled,j=void 0!==Z&&Z,C=e.multiline,k=void 0!==C&&C,y=e.tooltip,N=void 0===y?"":y,S=e.index,w=void 0===S?0:S,F=e.error,M=void 0===F?"":F,E=e.required,L=void 0!==E&&E,P=e.placeholder,B=void 0===P?"":P,I=e.min,z=e.max,D=e.overlayIcon,O=void 0===D?null:D,R=e.overlayObject,q=void 0===R?null:R,T=e.extraInputProps,W=void 0===T?{}:T,A=e.overlayAction,_=e.noLabelMinWidth,$=void 0!==_&&_,H=e.pattern,K=void 0===H?"":H,Q=e.autoFocus,U=void 0!==Q&&Q,V=e.classes,Y=e.className,G=void 0===Y?"":Y,X=e.onKeyPress,J=(0,a.Z)({"data-index":w},W);return"number"===p&&I&&(J.min=I),"number"===p&&z&&(J.max=z),""!==K&&(J.pattern=K),(0,f.jsx)(o.Fragment,{children:(0,f.jsxs)(r.ZP,{container:!0,className:(0,x.Z)(""!==G?G:"",""!==M?V.errorInField:V.inputBoxContainer),children:[""!==n&&(0,f.jsxs)(s.Z,{htmlFor:d,className:$?V.noMinWidthLabel:V.inputLabel,children:[(0,f.jsxs)("span",{children:[n,L?"*":""]}),""!==N&&(0,f.jsx)("div",{className:V.tooltipContainer,children:(0,f.jsx)(l.Z,{title:N,placement:"top-start",children:(0,f.jsx)("div",{className:V.tooltip,children:(0,f.jsx)(h.Z,{})})})})]}),(0,f.jsxs)("div",{className:V.textBoxContainer,children:[(0,f.jsx)(g,{id:d,name:u,fullWidth:!0,value:i,autoFocus:U,disabled:j,onChange:t,type:p,multiline:k,autoComplete:v,inputProps:J,error:""!==M,helperText:M,placeholder:B,className:V.inputRebase,onKeyPress:X}),O&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,f.jsx)(c.Z,{onClick:A?function(){A()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:O})}),q&&(0,f.jsx)("div",{className:"".concat(V.overlayAction," ").concat(""!==n?"withLabel":""),children:q})]})]})})}))},1365:function(e,n,t){var a=t(23430),o=t(50390),i=t(86509),r=t(4285),s=t(26936),l=t(31680),c=t(62559);n.Z=(0,r.Z)((function(e){return(0,i.Z)({buttonTrigger:{border:"#F0F2F2 1px solid",borderRadius:3,color:"#838383",backgroundColor:"#fff",fontSize:12}})}))((function(e){var n=e.classes,t=e.id,i=e.unitSelected,r=e.unitsList,d=e.disabled,u=void 0!==d&&d,m=e.onUnitChange,p=o.useState(null),h=(0,a.Z)(p,2),x=h[0],f=h[1],b=Boolean(x),g=function(e){f(null),""!==e&&m&&m(e)};return(0,c.jsxs)(o.Fragment,{children:[(0,c.jsx)("button",{id:"".concat(t,"-button"),"aria-controls":"".concat(t,"-menu"),"aria-haspopup":"true","aria-expanded":b?"true":void 0,onClick:function(e){f(e.currentTarget)},className:n.buttonTrigger,disabled:u,type:"button",children:i}),(0,c.jsx)(s.Z,{id:"".concat(t,"-menu"),"aria-labelledby":"".concat(t,"-button"),anchorEl:x,open:b,onClose:function(){g("")},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"},children:r.map((function(e){return(0,c.jsx)(l.Z,{onClick:function(){return g(e.value)},children:e.label},"itemUnit-".concat(e.value,"-").concat(e.label))}))})]})}))},76352:function(e,n,t){t.d(n,{Z:function(){return w}});var a,o=t(23430),i=t(18489),r=t(50390),s=t(34424),l=t(95467),c=t(97771),d=t(84402),u=t(78426),m=t(93085),p=t(86509),h=t(4285),x=t(72462),f=t(44149),b=t(38342),g=t.n(b),v=t(92125),Z=t(19538),j=t(21278),C=t(62559),k=function(){clearInterval(a)},y={displayErrorMessage:f.zb},N=(0,s.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),y)((0,h.Z)((function(e){return(0,p.Z)({modalErrorContainer:{position:"absolute",marginTop:10,width:"80%",backgroundColor:"#fff",border:"#C72C48 1px solid",borderLeftWidth:12,borderRadius:3,zIndex:1e3,padding:"10px 15px",left:"50%",transform:"translateX(-50%)",opacity:0,transitionDuration:"0.2s"},modalErrorShow:{opacity:1},closeButton:{position:"absolute",right:5,fontSize:"small",border:0,backgroundColor:"#fff",cursor:"pointer"},errorTitle:{display:"flex",alignItems:"center"},errorLabel:{color:"#000",fontSize:18,fontWeight:500,marginLeft:5,marginRight:25},messageIcon:{color:"#C72C48",display:"flex","& svg":{width:32,height:32}},detailsButton:{color:"#9C9C9C",display:"flex",alignItems:"center",border:0,backgroundColor:"transparent",paddingLeft:5,fontSize:14,transformDuration:"0.3s",cursor:"pointer"},extraDetailsContainer:{fontStyle:"italic",color:"#9C9C9C",lineHeight:0,padding:"0 10px",transition:"all .2s ease-in-out",overflow:"hidden"},extraDetailsOpen:{lineHeight:1,padding:"3px 10px"},arrowElement:{marginLeft:-5},arrowOpen:{transform:"rotateZ(90deg)",transformDuration:"0.3s"}})}))((function(e){var n=e.classes,t=e.modalSnackMessage,i=e.displayErrorMessage,s=e.customStyle,l=(0,r.useState)(!1),c=(0,o.Z)(l,2),d=c[0],u=c[1],m=(0,r.useState)(!1),p=(0,o.Z)(m,2),h=p[0],x=p[1],f=(0,r.useCallback)((function(){x(!1)}),[]);(0,r.useEffect)((function(){h||(i({detailedError:"",errorMessage:""}),u(!1))}),[i,h]),(0,r.useEffect)((function(){""!==t.message&&"error"===t.type&&x(!0)}),[f,t.message,t.type]);var b=g()(t,"message",""),y=g()(t,"detailedErrorMsg","");return"error"!==t.type||""===b?null:(0,C.jsx)(r.Fragment,{children:(0,C.jsxs)("div",{className:"".concat(n.modalErrorContainer," ").concat(h?n.modalErrorShow:""),style:s,onMouseOver:k,onMouseLeave:function(){a=setInterval(f,1e4)},children:[(0,C.jsx)("button",{className:n.closeButton,onClick:f,children:(0,C.jsx)(j.Z,{})}),(0,C.jsxs)("div",{className:n.errorTitle,children:[(0,C.jsx)("span",{className:n.messageIcon,children:(0,C.jsx)(Z.Z,{})}),(0,C.jsx)("span",{className:n.errorLabel,children:b})]}),""!==y&&(0,C.jsxs)(r.Fragment,{children:[(0,C.jsx)("div",{className:n.detailsContainerLink,children:(0,C.jsxs)("button",{className:n.detailsButton,onClick:function(){u(!d)},children:["Details",(0,C.jsx)(v.Z,{className:"".concat(n.arrowElement," ").concat(d?n.arrowOpen:"")})]})}),(0,C.jsx)("div",{className:"".concat(n.extraDetailsContainer," ").concat(d?n.extraDetailsOpen:""),children:y})]})]})})}))),S=(0,s.$j)((function(e){return{modalSnackMessage:e.system.modalSnackBar}}),{setModalSnackMessage:f.MK}),w=(0,h.Z)((function(e){return(0,p.Z)((0,i.Z)((0,i.Z)({},x.Qw),{},{root:{"& .MuiPaper-root":{padding:"0 2rem 2rem 1rem"}},content:{padding:25,paddingBottom:0},customDialogSize:{width:"100%",maxWidth:765}},x.sN))}))(S((function(e){var n=e.onClose,t=e.modalOpen,a=e.title,s=e.children,p=e.classes,h=e.wideLimit,x=void 0===h||h,f=e.modalSnackMessage,b=e.noContentPadding,g=e.setModalSnackMessage,v=e.titleIcon,Z=void 0===v?null:v,k=(0,r.useState)(!1),y=(0,o.Z)(k,2),S=y[0],w=y[1];(0,r.useEffect)((function(){g("")}),[g]),(0,r.useEffect)((function(){if(f){if(""===f.message)return void w(!1);"error"!==f.type&&w(!0)}}),[f]);var F=x?{classes:{paper:p.customDialogSize}}:{maxWidth:"lg",fullWidth:!0},M="";return f&&(M=f.detailedErrorMsg,(""===f.detailedErrorMsg||f.detailedErrorMsg.length<5)&&(M=f.message)),(0,C.jsxs)(d.Z,(0,i.Z)((0,i.Z)({open:t,classes:p},F),{},{scroll:"paper",onClose:function(e,t){"backdropClick"!==t&&n()},className:p.root,children:[(0,C.jsxs)(u.Z,{className:p.title,children:[(0,C.jsxs)("div",{className:p.titleText,children:[Z," ",a]}),(0,C.jsx)("div",{className:p.closeContainer,children:(0,C.jsx)(l.Z,{"aria-label":"close",className:p.closeButton,onClick:n,disableRipple:!0,size:"small",children:(0,C.jsx)(j.Z,{})})})]}),(0,C.jsx)(N,{}),(0,C.jsx)(c.Z,{open:S,className:p.snackBarModal,onClose:function(){w(!1),g("")},message:M,ContentProps:{className:"".concat(p.snackBar," ").concat(f&&"error"===f.type?p.errorSnackBar:"")},autoHideDuration:f&&"error"===f.type?1e4:5e3}),(0,C.jsx)(m.Z,{className:b?"":p.content,children:s})]}))})))}}]);
+//# sourceMappingURL=1711.755e1931.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1711.755e1931.chunk.js.map b/portal-ui/build/static/js/1711.755e1931.chunk.js.map
new file mode 100644
index 000000000..13b7d7c9e
--- /dev/null
+++ b/portal-ui/build/static/js/1711.755e1931.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/1711.755e1931.chunk.js","mappings":"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","sources":["screens/Console/Buckets/BucketDetails/EnableQuota.tsx","screens/Console/Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper.tsx","screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/FormComponents/InputUnitMenu/InputUnitMenu.tsx","screens/Console/Common/FormComponents/ModalError/ModalError.tsx","screens/Console/Common/ModalWrapper/ModalWrapper.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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { Button, LinearProgress } from \"@mui/material\";\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 getBytes,\n k8sScalarUnitsExcluding,\n units,\n} from \"../../../../common/utils\";\nimport { BucketQuota } from \"../types\";\nimport { setModalErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport {\n formFieldStyles,\n modalStyleUtils,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport FormSwitchWrapper from \"../../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport ModalWrapper from \"../../Common/ModalWrapper/ModalWrapper\";\nimport api from \"../../../../common/api\";\nimport { BucketQuotaIcon } from \"../../../../icons\";\nimport InputUnitMenu from \"../../Common/FormComponents/InputUnitMenu/InputUnitMenu\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...formFieldStyles,\n ...modalStyleUtils,\n });\n\ninterface IEnableQuotaProps {\n classes: any;\n open: boolean;\n enabled: boolean;\n cfg: BucketQuota | null;\n selectedBucket: string;\n closeModalAndRefresh: () => void;\n setModalErrorSnackMessage: typeof setModalErrorSnackMessage;\n}\n\nconst EnableQuota = ({\n classes,\n open,\n enabled,\n cfg,\n selectedBucket,\n closeModalAndRefresh,\n setModalErrorSnackMessage,\n}: IEnableQuotaProps) => {\n const [loading, setLoading] = useState(false);\n const [quotaEnabled, setQuotaEnabled] = useState(false);\n const [quotaSize, setQuotaSize] = useState(\"1\");\n const [quotaUnit, setQuotaUnit] = useState(\"TiB\");\n\n useEffect(() => {\n if (enabled) {\n setQuotaEnabled(true);\n if (cfg) {\n setQuotaSize(`${cfg.quota}`);\n setQuotaUnit(`Gi`);\n\n let maxUnit = \"B\";\n let maxQuota = cfg.quota;\n\n for (let i = 0; i < units.length; i++) {\n if (cfg.quota % Math.pow(1024, i) === 0) {\n maxQuota = cfg.quota / Math.pow(1024, i);\n maxUnit = units[i];\n } else {\n break;\n }\n }\n setQuotaSize(`${maxQuota}`);\n setQuotaUnit(maxUnit);\n }\n }\n }, [enabled, cfg]);\n\n const enableBucketEncryption = () => {\n if (loading) {\n return;\n }\n let req = {\n enabled: quotaEnabled,\n amount: parseInt(getBytes(quotaSize, quotaUnit, true)),\n quota_type: \"hard\",\n };\n\n api\n .invoke(\"PUT\", `/api/v1/buckets/${selectedBucket}/quota`, req)\n .then(() => {\n setLoading(false);\n closeModalAndRefresh();\n })\n .catch((err: ErrorResponseHandler) => {\n setLoading(false);\n setModalErrorSnackMessage(err);\n });\n };\n\n return (\n {\n closeModalAndRefresh();\n }}\n title=\"Enable Bucket Quota\"\n titleIcon={}\n >\n \n \n );\n};\n\nconst connector = connect(null, {\n setModalErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(EnableQuota));\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 \"../../../../../icons/HelpIcon\";\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 divContainer: {\n marginBottom: 20,\n },\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\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 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\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 .\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 { selectorTypes } from \"../SelectWrapper/SelectWrapper\";\nimport { Menu, MenuItem } from \"@mui/material\";\n\ninterface IInputUnitBox {\n classes: any;\n id: string;\n unitSelected: string;\n unitsList: selectorTypes[];\n disabled?: boolean;\n onUnitChange?: (newValue: string) => void;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n buttonTrigger: {\n border: \"#F0F2F2 1px solid\",\n borderRadius: 3,\n color: \"#838383\",\n backgroundColor: \"#fff\",\n fontSize: 12,\n },\n });\n\nconst InputUnitMenu = ({\n classes,\n id,\n unitSelected,\n unitsList,\n disabled = false,\n onUnitChange,\n}: IInputUnitBox) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = (newUnit: string) => {\n setAnchorEl(null);\n if (newUnit !== \"\" && onUnitChange) {\n onUnitChange(newUnit);\n }\n };\n\n return (\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(InputUnitMenu);\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// 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 { connect } from \"react-redux\";\nimport get from \"lodash/get\";\nimport ArrowRightIcon from \"@mui/icons-material/ArrowRight\";\nimport ErrorOutlineIcon from \"@mui/icons-material/ErrorOutline\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { AppState } from \"../../../../../store\";\nimport {\n setErrorSnackMessage,\n setModalErrorSnackMessage,\n} from \"../../../../../actions\";\nimport { snackBarMessage } from \"../../../../../types\";\n\ninterface ImodalErrorProps {\n customStyle?: any;\n classes: any;\n modalSnackMessage: snackBarMessage;\n displayErrorMessage: typeof setErrorSnackMessage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n modalErrorContainer: {\n position: \"absolute\",\n marginTop: 10,\n width: \"80%\",\n backgroundColor: \"#fff\",\n border: \"#C72C48 1px solid\",\n borderLeftWidth: 12,\n borderRadius: 3,\n zIndex: 1000,\n padding: \"10px 15px\",\n left: \"50%\",\n transform: \"translateX(-50%)\",\n opacity: 0,\n transitionDuration: \"0.2s\",\n },\n modalErrorShow: {\n opacity: 1,\n },\n closeButton: {\n position: \"absolute\",\n right: 5,\n fontSize: \"small\",\n border: 0,\n backgroundColor: \"#fff\",\n cursor: \"pointer\",\n },\n errorTitle: {\n display: \"flex\",\n alignItems: \"center\",\n },\n errorLabel: {\n color: \"#000\",\n fontSize: 18,\n fontWeight: 500,\n marginLeft: 5,\n marginRight: 25,\n },\n messageIcon: {\n color: \"#C72C48\",\n display: \"flex\",\n \"& svg\": {\n width: 32,\n height: 32,\n },\n },\n detailsButton: {\n color: \"#9C9C9C\",\n display: \"flex\",\n alignItems: \"center\",\n border: 0,\n backgroundColor: \"transparent\",\n paddingLeft: 5,\n fontSize: 14,\n transformDuration: \"0.3s\",\n cursor: \"pointer\",\n },\n extraDetailsContainer: {\n fontStyle: \"italic\",\n color: \"#9C9C9C\",\n lineHeight: 0,\n padding: \"0 10px\",\n transition: \"all .2s ease-in-out\",\n overflow: \"hidden\",\n },\n extraDetailsOpen: {\n lineHeight: 1,\n padding: \"3px 10px\",\n },\n arrowElement: {\n marginLeft: -5,\n },\n arrowOpen: {\n transform: \"rotateZ(90deg)\",\n transformDuration: \"0.3s\",\n },\n });\n\nvar timerI: any;\n\nconst startHideTimer = (callbackFunction: () => void) => {\n timerI = setInterval(callbackFunction, 10000);\n};\n\nconst stopHideTimer = () => {\n clearInterval(timerI);\n};\n\nconst ModalError = ({\n classes,\n modalSnackMessage,\n displayErrorMessage,\n customStyle,\n}: ImodalErrorProps) => {\n const [detailsOpen, setDetailsOpen] = useState(false);\n const [displayErrorMsg, setDisplayErrorMsg] = useState(false);\n\n const closeErrorMessage = useCallback(() => {\n setDisplayErrorMsg(false);\n }, []);\n\n useEffect(() => {\n if (!displayErrorMsg) {\n displayErrorMessage({ detailedError: \"\", errorMessage: \"\" });\n setDetailsOpen(false);\n //clearInterval(timerI);\n }\n }, [displayErrorMessage, displayErrorMsg]);\n\n useEffect(() => {\n if (\n modalSnackMessage.message !== \"\" &&\n modalSnackMessage.type === \"error\"\n ) {\n //Error message received, we trigger the animation\n setDisplayErrorMsg(true);\n //startHideTimer(closeErrorMessage);\n }\n }, [closeErrorMessage, modalSnackMessage.message, modalSnackMessage.type]);\n\n const detailsToggle = () => {\n setDetailsOpen(!detailsOpen);\n };\n\n const message = get(modalSnackMessage, \"message\", \"\");\n const messageDetails = get(modalSnackMessage, \"detailedErrorMsg\", \"\");\n\n if (modalSnackMessage.type !== \"error\" || message === \"\") {\n return null;\n }\n\n return (\n \n
startHideTimer(closeErrorMessage)}\n >\n \n
\n \n \n \n {message}\n
\n {messageDetails !== \"\" && (\n \n
\n \n
\n
\n {messageDetails}\n
\n \n )}\n
\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst mapDispatchToProps = {\n displayErrorMessage: setModalErrorSnackMessage,\n};\n\nconst connector = connect(mapState, mapDispatchToProps);\n\nexport default connector(withStyles(styles)(ModalError));\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, { useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport IconButton from \"@mui/material/IconButton\";\nimport Snackbar from \"@mui/material/Snackbar\";\nimport { Dialog, DialogContent, DialogTitle } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n deleteDialogStyles,\n snackBarCommon,\n} from \"../FormComponents/common/styleLibrary\";\nimport { AppState } from \"../../../../store\";\nimport { snackBarMessage } from \"../../../../types\";\nimport { setModalSnackMessage } from \"../../../../actions\";\nimport ModalError from \"../FormComponents/ModalError/ModalError\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\ninterface IModalProps {\n classes: any;\n onClose: () => void;\n modalOpen: boolean;\n title: string | React.ReactNode;\n children: any;\n wideLimit?: boolean;\n modalSnackMessage?: snackBarMessage;\n noContentPadding?: boolean;\n setModalSnackMessage: typeof setModalSnackMessage;\n titleIcon?: React.ReactNode;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n root: {\n \"& .MuiPaper-root\": {\n padding: \"0 2rem 2rem 1rem\",\n },\n },\n content: {\n padding: 25,\n paddingBottom: 0,\n },\n customDialogSize: {\n width: \"100%\",\n maxWidth: 765,\n },\n ...snackBarCommon,\n });\n\nconst ModalWrapper = ({\n onClose,\n modalOpen,\n title,\n children,\n classes,\n wideLimit = true,\n modalSnackMessage,\n noContentPadding,\n setModalSnackMessage,\n titleIcon = null,\n}: IModalProps) => {\n const [openSnackbar, setOpenSnackbar] = useState(false);\n\n useEffect(() => {\n setModalSnackMessage(\"\");\n }, [setModalSnackMessage]);\n\n useEffect(() => {\n if (modalSnackMessage) {\n if (modalSnackMessage.message === \"\") {\n setOpenSnackbar(false);\n return;\n }\n // Open SnackBar\n if (modalSnackMessage.type !== \"error\") {\n setOpenSnackbar(true);\n }\n }\n }, [modalSnackMessage]);\n\n const closeSnackBar = () => {\n setOpenSnackbar(false);\n setModalSnackMessage(\"\");\n };\n\n const customSize = wideLimit\n ? {\n classes: {\n paper: classes.customDialogSize,\n },\n }\n : { maxWidth: \"lg\" as const, fullWidth: true };\n\n let message = \"\";\n\n if (modalSnackMessage) {\n message = modalSnackMessage.detailedErrorMsg;\n if (\n modalSnackMessage.detailedErrorMsg === \"\" ||\n modalSnackMessage.detailedErrorMsg.length < 5\n ) {\n message = modalSnackMessage.message;\n }\n }\n\n return (\n \n );\n};\n\nconst mapState = (state: AppState) => ({\n modalSnackMessage: state.system.modalSnackBar,\n});\n\nconst connector = connect(mapState, {\n setModalSnackMessage,\n});\n\nexport default withStyles(styles)(connector(ModalWrapper));\n"],"names":["connector","connect","setModalErrorSnackMessage","withStyles","theme","createStyles","formFieldStyles","modalStyleUtils","classes","open","enabled","cfg","selectedBucket","closeModalAndRefresh","useState","loading","setLoading","quotaEnabled","setQuotaEnabled","quotaSize","setQuotaSize","quotaUnit","setQuotaUnit","useEffect","quota","maxUnit","maxQuota","i","units","Math","pow","modalOpen","onClose","title","titleIcon","noValidate","autoComplete","onSubmit","e","preventDefault","req","amount","parseInt","getBytes","quota_type","api","then","catch","err","enableBucketEncryption","container","item","xs","className","formScrollable","formFieldRow","value","id","name","checked","onChange","event","target","label","validity","valid","pattern","required","min","overlayObject","onUnitChange","newValue","unitSelected","unitsList","k8sScalarUnitsExcluding","disabled","modalButtonBar","type","variant","color","onClick","StyledSwitch","root","width","height","padding","margin","switchBase","transform","palette","common","white","backgroundColor","boxShadow","opacity","border","thumb","marginLeft","track","borderRadius","transition","transitions","create","focusVisible","switchContainer","display","alignItems","justifyContent","Switch","divContainer","marginBottom","indicatorLabelOn","fontWeight","indicatorLabel","fontSize","fieldDescription","marginTop","tooltip","actionsTray","fieldBasic","switchOnly","description","indicatorLabels","extraInputProps","switchComponent","clsx","length","inputProps","disableRipple","disableFocusRipple","disableTouchRipple","sm","md","htmlFor","inputLabel","tooltipContainer","placement","textAlign","component","inputStyles","makeStyles","inputFieldStyles","InputField","props","InputProps","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","multiline","index","error","placeholder","max","overlayIcon","noLabelMinWidth","autoFocus","onKeyPress","errorInField","inputBoxContainer","noMinWidthLabel","fullWidth","helperText","inputRebase","size","buttonTrigger","React","anchorEl","setAnchorEl","Boolean","handleClose","newUnit","Fragment","undefined","currentTarget","anchorOrigin","vertical","horizontal","transformOrigin","map","unit","timerI","stopHideTimer","clearInterval","mapDispatchToProps","displayErrorMessage","state","modalSnackMessage","system","modalSnackBar","modalErrorContainer","borderLeftWidth","zIndex","left","transitionDuration","modalErrorShow","closeButton","cursor","errorTitle","errorLabel","marginRight","messageIcon","detailsButton","paddingLeft","transformDuration","extraDetailsContainer","fontStyle","lineHeight","overflow","extraDetailsOpen","arrowElement","arrowOpen","customStyle","detailsOpen","setDetailsOpen","displayErrorMsg","setDisplayErrorMsg","closeErrorMessage","useCallback","detailedError","errorMessage","message","get","messageDetails","style","onMouseOver","onMouseLeave","setInterval","Close","ErrorOutline","detailsContainerLink","ArrowRight","setModalSnackMessage","deleteDialogStyles","content","paddingBottom","customDialogSize","snackBarCommon","children","wideLimit","noContentPadding","openSnackbar","setOpenSnackbar","customSize","paper","detailedErrorMsg","Dialog","scroll","reason","DialogTitle","titleText","closeContainer","IconButton","Snackbar","snackBarModal","ContentProps","snackBar","errorSnackBar","autoHideDuration","DialogContent"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1719.06e59cd5.chunk.js b/portal-ui/build/static/js/1719.06e59cd5.chunk.js
deleted file mode 100644
index a2b45968b..000000000
--- a/portal-ui/build/static/js/1719.06e59cd5.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1719],{66964:function(n,t,e){var o=e(18489),a=e(50390),i=e(12066),r=e(25594),s=e(36554),l=e(94187),c=e(95467),d=e(86509),u=e(62449),g=e(4285),p=e(72462),m=e(97538),f=e(44977),v=e(62559),Z=(0,u.Z)((function(n){return(0,d.Z)((0,o.Z)({},p.gM))}));function h(n){var t=Z();return(0,v.jsx)(i.Z,(0,o.Z)({InputProps:{classes:t}},n))}t.Z=(0,g.Z)((function(n){return(0,d.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,o.Z)((0,o.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(n){var t=n.label,e=n.onChange,i=n.value,d=n.id,u=n.name,g=n.type,p=void 0===g?"text":g,Z=n.autoComplete,x=void 0===Z?"off":Z,b=n.disabled,I=void 0!==b&&b,j=n.multiline,P=void 0!==j&&j,y=n.tooltip,S=void 0===y?"":y,C=n.index,L=void 0===C?0:C,N=n.error,w=void 0===N?"":N,M=n.required,E=void 0!==M&&M,k=n.placeholder,R=void 0===k?"":k,T=n.min,B=n.max,F=n.overlayIcon,D=void 0===F?null:F,A=n.overlayObject,W=void 0===A?null:A,K=n.extraInputProps,O=void 0===K?{}:K,z=n.overlayAction,G=n.noLabelMinWidth,H=void 0!==G&&G,Y=n.pattern,$=void 0===Y?"":Y,_=n.autoFocus,q=void 0!==_&&_,Q=n.classes,V=n.className,X=void 0===V?"":V,J=(0,o.Z)({"data-index":L},O);return"number"===p&&T&&(J.min=T),"number"===p&&B&&(J.max=B),""!==$&&(J.pattern=$),(0,v.jsx)(a.Fragment,{children:(0,v.jsxs)(r.ZP,{container:!0,className:(0,f.Z)(""!==X?X:"",""!==w?Q.errorInField:Q.inputBoxContainer),children:[""!==t&&(0,v.jsxs)(s.Z,{htmlFor:d,className:H?Q.noMinWidthLabel:Q.inputLabel,children:[(0,v.jsxs)("span",{children:[t,E?"*":""]}),""!==S&&(0,v.jsx)("div",{className:Q.tooltipContainer,children:(0,v.jsx)(l.Z,{title:S,placement:"top-start",children:(0,v.jsx)("div",{className:Q.tooltip,children:(0,v.jsx)(m.Z,{})})})})]}),(0,v.jsxs)("div",{className:Q.textBoxContainer,children:[(0,v.jsx)(h,{id:d,name:u,fullWidth:!0,value:i,autoFocus:q,disabled:I,onChange:e,type:p,multiline:P,autoComplete:x,inputProps:J,error:""!==w,helperText:w,placeholder:R,className:Q.inputRebase}),D&&(0,v.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==t?"withLabel":""),children:(0,v.jsx)(c.Z,{onClick:z?function(){z()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:D})}),W&&(0,v.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==t?"withLabel":""),children:W})]})]})})}))},21639:function(n,t,e){var o=e(23430),a=e(50390),i=e(30324);t.Z=function(n,t){var e=(0,a.useState)(!1),r=(0,o.Z)(e,2),s=r[0],l=r[1];return[s,function(e,o,a){l(!0),i.Z.invoke(e,o,a).then((function(t){l(!1),n(t)})).catch((function(n){l(!1),t(n)}))}]}},60656:function(n,t,e){var o=e(18489),a=e(50390),i=e(84402),r=e(78426),s=e(93085),l=e(7887),c=e(66946),d=e(14476),u=e(95467),g=e(21278),p=e(86509),m=e(4285),f=e(72462),v=e(62559);t.Z=(0,m.Z)((function(n){return(0,p.Z)((0,o.Z)({},f.Qw))}))((function(n){var t=n.isOpen,e=void 0!==t&&t,p=n.onClose,m=n.onCancel,f=n.onConfirm,Z=n.classes,h=void 0===Z?{}:Z,x=n.title,b=void 0===x?"":x,I=n.isLoading,j=n.confirmationContent,P=n.cancelText,y=void 0===P?"Cancel":P,S=n.confirmText,C=void 0===S?"Confirm":S,L=n.confirmButtonProps,N=void 0===L?{}:L,w=n.cancelButtonProps,M=void 0===w?{}:w,E=n.titleIcon,k=void 0===E?null:E;return(0,v.jsxs)(i.Z,{open:e,onClose:function(n,t){"backdropClick"!==t&&p()},className:h.root,sx:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},children:[(0,v.jsxs)(r.Z,{className:h.title,children:[(0,v.jsxs)("div",{className:h.titleText,children:[k," ",b]}),(0,v.jsx)("div",{className:h.closeContainer,children:(0,v.jsx)(u.Z,{"aria-label":"close",className:h.closeButton,onClick:p,disableRipple:!0,size:"small",children:(0,v.jsx)(g.Z,{})})})]}),(0,v.jsx)(s.Z,{className:h.content,children:j}),(0,v.jsxs)(l.Z,{className:h.actions,children:[(0,v.jsx)(c.Z,(0,o.Z)((0,o.Z)({className:h.cancelButton,onClick:m||p,disabled:I,type:"button"},M),{},{variant:"outlined",color:"primary",children:y})),(0,v.jsx)(d.Z,(0,o.Z)((0,o.Z)({className:h.confirmButton,type:"button",onClick:f,loading:I,disabled:I,variant:"outlined",color:"secondary",loadingPosition:"start",startIcon:(0,v.jsx)(a.Fragment,{}),autoFocus:!0},N),{},{children:C}))]})]})}))},51719:function(n,t,e){e.r(t),e.d(t,{default:function(){return P}});var o=e(23430),a=e(18489),i=e(50390),r=e(34424),s=e(86509),l=e(4285),c=e(72462),d=e(28948),u=e(44149),g=e(30324),p=e(17777),m=e(23473),f=e(66964),v=e(25594),Z=e(21639),h=e(60656),x=e(98280),b=e(62559),I=(0,r.$j)(null,{setErrorSnackMessage:u.Ih})((function(n){var t=n.deleteOpen,e=n.selectedPod,a=n.closeDeleteModalAndRefresh,r=n.setErrorSnackMessage,s=(0,i.useState)(""),l=(0,o.Z)(s,2),c=l[0],d=l[1],u=(0,Z.Z)((function(){return a(!0)}),(function(n){return r(n)})),g=(0,o.Z)(u,2),p=g[0],I=g[1];return(0,b.jsx)(h.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:t,titleIcon:(0,b.jsx)(x.Nv,{}),isLoading:p,onConfirm:function(){c===e.name?I("DELETE","/api/v1/namespaces/".concat(e.namespace,"/tenants/").concat(e.tenant,"/pods/").concat(e.name)):r({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return a(!1)},confirmButtonProps:{disabled:c!==e.name||p},confirmationContent:(0,b.jsxs)(m.Z,{children:["To continue please type ",(0,b.jsx)("b",{children:e.name})," in the box.",(0,b.jsx)(v.ZP,{item:!0,xs:12,children:(0,b.jsx)(f.Z,{id:"retype-pod",name:"retype-pod",onChange:function(n){d(n.target.value)},label:"",value:c})})]})})})),j=(0,r.$j)((function(n){return{loadingTenant:n.tenants.tenantDetails.loadingTenant}}),{setErrorSnackMessage:u.Ih}),P=(0,l.Z)((function(n){return(0,s.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},c.oZ),c.VX),(0,c.Bz)(n.spacing(4))))}))(j((function(n){var t=n.classes,e=n.match,a=n.history,r=n.loadingTenant,s=(0,i.useState)([]),l=(0,o.Z)(s,2),c=l[0],m=l[1],f=(0,i.useState)(!0),Z=(0,o.Z)(f,2),h=Z[0],x=Z[1],j=(0,i.useState)(!1),P=(0,o.Z)(j,2),y=P[0],S=P[1],C=(0,i.useState)(null),L=(0,o.Z)(C,2),N=L[0],w=L[1],M=e.params.tenantName,E=e.params.tenantNamespace,k=[{type:"view",onClick:function(n){a.push("/namespaces/".concat(E,"/tenants/").concat(M,"/pods/").concat(n.name))}},{type:"delete",onClick:function(n){n.tenant=M,n.namespace=E,w(n),S(!0)}}];return(0,i.useEffect)((function(){r&&x(!0)}),[r]),(0,i.useEffect)((function(){h&&g.Z.invoke("GET","/api/v1/namespaces/".concat(E,"/tenants/").concat(M,"/pods")).then((function(n){for(var t=0;t :not(:first-of-type)":{marginLeft:8}})})),f=i.forwardRef((function(n,t){var e=(0,c.Z)({props:n,name:"MuiDialogActions"}),i=e.className,l=e.disableSpacing,d=void 0!==l&&l,f=(0,o.Z)(e,p),v=(0,a.Z)({},e,{disableSpacing:d}),Z=function(n){var t=n.classes,e={root:["root",!n.disableSpacing&&"spacing"]};return(0,s.Z)(e,u,t)}(v);return(0,g.jsx)(m,(0,a.Z)({className:(0,r.Z)(Z.root,i),ownerState:v,ref:t},f))}))},23473:function(n,t,e){e.d(t,{Z:function(){return f}});var o=e(1048),a=e(32793),i=e(50390),r=e(50076),s=e(8208),l=e(15573),c=e(35477),d=e(10594);function u(n){return(0,d.Z)("MuiDialogContentText",n)}(0,e(43349).Z)("MuiDialogContentText",["root"]);var g=e(62559),p=["children"],m=(0,s.ZP)(c.Z,{shouldForwardProp:function(n){return(0,s.FO)(n)||"classes"===n},name:"MuiDialogContentText",slot:"Root",overridesResolver:function(n,t){return t.root}})({}),f=i.forwardRef((function(n,t){var e=(0,l.Z)({props:n,name:"MuiDialogContentText"}),i=(0,o.Z)(e,p),s=function(n){var t=n.classes,e=(0,r.Z)({root:["root"]},u,t);return(0,a.Z)({},t,e)}(i);return(0,g.jsx)(m,(0,a.Z)({component:"p",variant:"body1",color:"text.secondary",ref:t,ownerState:i},e,{classes:s}))}))}}]);
-//# sourceMappingURL=1719.06e59cd5.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1719.06e59cd5.chunk.js.map b/portal-ui/build/static/js/1719.06e59cd5.chunk.js.map
deleted file mode 100644
index d52f136c7..000000000
--- a/portal-ui/build/static/js/1719.06e59cd5.chunk.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"static/js/1719.06e59cd5.chunk.js","mappings":"0QA4FMA,GAAcC,EAAAA,EAAAA,IAAW,SAACC,GAAD,OAC7BC,EAAAA,EAAAA,IAAa,UACRC,EAAAA,QAIP,SAASC,EAAWC,GAClB,IAAMC,EAAUP,IAEhB,OACE,SAAC,KAAD,QACEQ,WAAY,CAAED,QAAAA,IACVD,IAsIV,KAAeG,EAAAA,EAAAA,IA5KA,SAACP,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRO,EAAAA,IACAC,EAAAA,IAFO,IAGVC,iBAAkB,CAChBC,SAAU,EACVC,SAAU,YAEZC,cAAe,CACbD,SAAU,WACVE,MAAO,EACPC,IAAK,EACL,QAAS,CACPC,SAAU,GACVC,UAAW,IAEb,cAAe,CACbF,IAAK,IAGTG,YAAW,kBACNV,EAAAA,GAAAA,YADK,IAERW,WAAY,gBAsJlB,EAjIwB,SAAC,GA0BH,IAzBpBC,EAyBmB,EAzBnBA,MACAC,EAwBmB,EAxBnBA,SACAC,EAuBmB,EAvBnBA,MACAC,EAsBmB,EAtBnBA,GACAC,EAqBmB,EArBnBA,KAqBmB,IApBnBC,KAAAA,OAoBmB,MApBZ,OAoBY,MAnBnBC,aAAAA,OAmBmB,MAnBJ,MAmBI,MAlBnBC,SAAAA,OAkBmB,aAjBnBC,UAAAA,OAiBmB,aAhBnBC,QAAAA,OAgBmB,MAhBT,GAgBS,MAfnBC,MAAAA,OAemB,MAfX,EAeW,MAdnBC,MAAAA,OAcmB,MAdX,GAcW,MAbnBC,SAAAA,OAamB,aAZnBC,YAAAA,OAYmB,MAZL,GAYK,EAXnBC,EAWmB,EAXnBA,IACAC,EAUmB,EAVnBA,IAUmB,IATnBC,YAAAA,OASmB,MATL,KASK,MARnBC,cAAAA,OAQmB,MARH,KAQG,MAPnBC,gBAAAA,OAOmB,MAPD,GAOC,EANnBzB,EAMmB,EANnBA,cAMmB,IALnB0B,gBAAAA,OAKmB,aAJnBC,QAAAA,OAImB,MAJT,GAIS,MAHnBC,UAAAA,OAGmB,SAFnBpC,EAEmB,EAFnBA,QAEmB,IADnBqC,UAAAA,OACmB,MADP,GACO,EACfC,GAAe,QAAK,aAAcb,GAAUQ,GAchD,MAZa,WAATb,GAAqBS,IACvBS,EAAU,IAAUT,GAGT,WAATT,GAAqBU,IACvBQ,EAAU,IAAUR,GAGN,KAAZK,IACFG,EAAU,QAAcH,IAIxB,SAAC,WAAD,WACE,UAAC,KAAD,CACEI,WAAS,EACTF,WAAWG,EAAAA,EAAAA,GACK,KAAdH,EAAmBA,EAAY,GACrB,KAAVX,EAAe1B,EAAQyC,aAAezC,EAAQ0C,mBAJlD,UAOa,KAAV3B,IACC,UAAC,IAAD,CACE4B,QAASzB,EACTmB,UACEH,EAAkBlC,EAAQ4C,gBAAkB5C,EAAQa,WAHxD,WAME,4BACGE,EACAY,EAAW,IAAM,MAEP,KAAZH,IACC,gBAAKa,UAAWrC,EAAQ6C,iBAAxB,UACE,SAAC,IAAD,CAASC,MAAOtB,EAASuB,UAAU,YAAnC,UACE,gBAAKV,UAAWrC,EAAQwB,QAAxB,UACE,SAAC,IAAD,cAQZ,iBAAKa,UAAWrC,EAAQK,iBAAxB,WACE,SAACP,EAAD,CACEoB,GAAIA,EACJC,KAAMA,EACN6B,WAAS,EACT/B,MAAOA,EACPmB,UAAWA,EACXd,SAAUA,EACVN,SAAUA,EACVI,KAAMA,EACNG,UAAWA,EACXF,aAAcA,EACdiB,WAAYA,EACZZ,MAAiB,KAAVA,EACPuB,WAAYvB,EACZE,YAAaA,EACbS,UAAWrC,EAAQkD,cAEpBnB,IACC,gBACEM,UAAS,UAAKrC,EAAQQ,cAAb,YACG,KAAVO,EAAe,YAAc,IAFjC,UAKE,SAAC,IAAD,CACEoC,QACE3C,EACI,WACEA,KAEF,kBAAM,MAEZ4C,KAAM,QACNC,oBAAoB,EACpBC,eAAe,EACfC,oBAAoB,EAXtB,SAaGxB,MAINC,IACC,gBACEK,UAAS,UAAKrC,EAAQQ,cAAb,YACG,KAAVO,EAAe,YAAc,IAFjC,SAKGiB,gB,2DCtMf,IAvBe,SACbwB,EACAC,GAEA,OAAkCC,EAAAA,EAAAA,WAAkB,GAApD,eAAOC,EAAP,KAAkBC,EAAlB,KAgBA,MAAO,CAACD,EAdQ,SAACE,EAAgBC,EAAaC,GAC5CH,GAAa,GACbI,EAAAA,EAAAA,OACUH,EAAQC,EAAKC,GACpBE,MAAK,SAACC,GACLN,GAAa,GACbJ,EAAUU,MAEXC,OAAM,SAACC,GACNR,GAAa,GACbH,EAAQW,U,kLCiGhB,KAAelE,EAAAA,EAAAA,IAxGA,SAACP,GAAD,OACbC,EAAAA,EAAAA,IAAa,UACRyE,EAAAA,OAsGP,EAnFsB,SAAC,GAcI,IAAD,IAbxBC,OAAAA,OAawB,SAZxBC,EAYwB,EAZxBA,QACAC,EAWwB,EAXxBA,SACAC,EAUwB,EAVxBA,UAUwB,IATxBzE,QAAAA,OASwB,MATd,GASc,MARxB8C,MAAAA,OAQwB,MARhB,GAQgB,EAPxBa,EAOwB,EAPxBA,UACAe,EAMwB,EANxBA,oBAMwB,IALxBC,WAAAA,OAKwB,MALX,SAKW,MAJxBC,YAAAA,OAIwB,MAJV,UAIU,MAHxBC,mBAAAA,OAGwB,MAHH,GAGG,MAFxBC,kBAAAA,OAEwB,MAFJ,GAEI,MADxBC,UAAAA,OACwB,MADZ,KACY,EACxB,OACE,UAAC,IAAD,CACEC,KAAMV,EACNC,QAAS,SAACU,EAAOC,GACA,kBAAXA,GACFX,KAGJlC,UAAWrC,EAAQmF,KACnBC,GAAI,CACF,mBAAoB,CAClBC,QAAS,wBAVf,WAcE,UAAC,IAAD,CAAahD,UAAWrC,EAAQ8C,MAAhC,WACE,iBAAKT,UAAWrC,EAAQsF,UAAxB,UACGP,EADH,IACejC,MAEf,gBAAKT,UAAWrC,EAAQuF,eAAxB,UACE,SAAC,IAAD,CACE,aAAW,QACXlD,UAAWrC,EAAQwF,YACnBrC,QAASoB,EACTjB,eAAa,EACbF,KAAK,QALP,UAOE,SAAC,IAAD,YAKN,SAAC,IAAD,CAAef,UAAWrC,EAAQyF,QAAlC,SACGf,KAEH,UAAC,IAAD,CAAerC,UAAWrC,EAAQ0F,QAAlC,WACE,SAAC,KAAD,gBACErD,UAAWrC,EAAQ2F,aACnBxC,QAASqB,GAAYD,EACrBjD,SAAUqC,EACVvC,KAAK,UACD0D,GALN,IAMEc,QAAQ,WACRC,MAAM,UAPR,SASGlB,MAGH,SAAC,KAAD,gBACEtC,UAAWrC,EAAQ8F,cACnB1E,KAAK,SACL+B,QAASsB,EACTsB,QAASpC,EACTrC,SAAUqC,EACViC,QAAQ,WACRC,MAAM,YACNG,gBAAgB,QAChBC,WAAW,SAAC,WAAD,IACX7D,WAAS,GACLyC,GAXN,aAaGD,e,4QCfX,GAJkBsB,EAAAA,EAAAA,IAAQ,KAAM,CAC9BC,qBAAAA,EAAAA,IAGF,EAhEkB,SAAC,GAKA,IAJjBC,EAIgB,EAJhBA,WACAC,EAGgB,EAHhBA,YACAC,EAEgB,EAFhBA,2BACAH,EACgB,EADhBA,qBAEA,GAAkCzC,EAAAA,EAAAA,UAAS,IAA3C,eAAO6C,EAAP,KAAkBC,EAAlB,KAMA,GAAyCC,EAAAA,EAAAA,IAJpB,kBAAMH,GAA2B,MACnC,SAAClC,GAAD,OAA+B+B,EAAqB/B,MAGvE,eAAOsC,EAAP,KAAsBC,EAAtB,KAgBA,OACE,SAACC,EAAA,EAAD,CACE9D,MAAK,aACL8B,YAAa,SACbN,OAAQ8B,EACRrB,WAAW,SAAC,KAAD,IACXpB,UAAW+C,EACXjC,UArBoB,WAClB8B,IAAcF,EAAYlF,KAO9BwF,EACE,SADa,6BAESN,EAAYQ,UAFrB,oBAE0CR,EAAYS,OAFtD,iBAEqET,EAAYlF,OAR9FgF,EAAqB,CACnBY,aAAc,2BACdC,cAAe,MAkBjBzC,QA1BY,kBAAM+B,GAA2B,IA2B7CzB,mBAAoB,CAClBvD,SAAUiF,IAAcF,EAAYlF,MAAQuF,GAE9ChC,qBACE,UAACuC,EAAA,EAAD,uCAC0B,uBAAIZ,EAAYlF,OAD1C,gBAEE,SAAC+F,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAf,UACE,SAACC,EAAA,EAAD,CACEnG,GAAG,aACHC,KAAK,aACLH,SAAU,SAACiE,GACTuB,EAAavB,EAAMqC,OAAOrG,QAE5BF,MAAM,GACNE,MAAOsF,cC6EfgB,GAAYrB,EAAAA,EAAAA,KAJD,SAACsB,GAAD,MAAsB,CACrCC,cAAeD,EAAME,QAAQC,cAAcF,iBAGT,CAClCtB,qBAAAA,EAAAA,KAGF,GAAejG,EAAAA,EAAAA,IA1HA,SAACP,GAAD,OACbC,EAAAA,EAAAA,IAAa,0BACRgI,EAAAA,IACAC,EAAAA,KACAC,EAAAA,EAAAA,IAAmBnI,EAAMoI,QAAQ,QAsHxC,CAAkCR,GAnHd,SAAC,GAKA,IAJnBvH,EAIkB,EAJlBA,QACAgI,EAGkB,EAHlBA,MACAC,EAEkB,EAFlBA,QACAR,EACkB,EADlBA,cAEA,GAAwB/D,EAAAA,EAAAA,UAA4B,IAApD,eAAOwE,EAAP,KAAaC,EAAb,KACA,GAAsCzE,EAAAA,EAAAA,WAAkB,GAAxD,eAAO0E,EAAP,KAAoBC,EAApB,KACA,GAAoC3E,EAAAA,EAAAA,WAAkB,GAAtD,eAAO0C,EAAP,KAAmBkC,EAAnB,KACA,GAAsC5E,EAAAA,EAAAA,UAAc,MAApD,eAAO2C,EAAP,KAAoBkC,EAApB,KAEMC,EAAaR,EAAMS,OAAN,WACbC,EAAkBV,EAAMS,OAAN,gBAqBlBE,EAAkB,CACtB,CAAEvH,KAAM,OAAQ+B,QApBI,SAACyF,GACrBX,EAAQY,KAAR,sBACiBH,EADjB,oBAC4CF,EAD5C,iBAC+DI,EAAIzH,SAmBnE,CAAEC,KAAM,SAAU+B,QATK,SAACyF,GACxBA,EAAI9B,OAAS0B,EACbI,EAAI/B,UAAY6B,EAChBH,EAAeK,GACfN,GAAc,MAwChB,OAhCAQ,EAAAA,EAAAA,YAAU,WACJrB,GACFY,GAAe,KAEhB,CAACZ,KAEJqB,EAAAA,EAAAA,YAAU,WACJV,GACFpE,EAAAA,EAAAA,OAEI,MAFJ,6BAG0B0E,EAH1B,oBAGqDF,EAHrD,UAKGvE,MAAK,SAAC8E,GACL,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAOE,OAAQD,IAAK,CACtC,IAAIE,EAAeC,KAAKC,MAAQ,IAAQ,EACxCL,EAAOC,GAAGK,MAAOC,EAAAA,EAAAA,KACdJ,EAAcK,SAASR,EAAOC,GAAGQ,cAAcC,YAGpDtB,EAAQY,GACRV,GAAe,MAEhBlE,OAAM,SAACC,IACN+B,EAAAA,EAAAA,IAAqB,CACnBY,aAAc,qBACdC,cAAe5C,EAAI4C,qBAI1B,CAACoB,EAAaI,EAAYE,KAG3B,UAAC,EAAAgB,SAAD,WACGtD,IACC,SAAC,EAAD,CACEA,WAAYA,EACZC,YAAaA,EACbC,2BAvD2B,SAACqD,GAClCrB,GAAc,GACdD,GAAe,OAwDb,eAAIhG,UAAWrC,EAAQ4J,aAAvB,mBACA,SAAC1C,EAAA,GAAD,CAAMC,MAAI,EAACC,GAAI,GAAI/E,UAAWrC,EAAQ6J,WAAtC,UACE,SAACC,EAAA,EAAD,CACEC,QAAS,CACP,CAAEhJ,MAAO,OAAQiJ,WAAY,QAC7B,CAAEjJ,MAAO,SAAUiJ,WAAY,UAC/B,CAAEjJ,MAAO,MAAOiJ,WAAY,QAC5B,CAAEjJ,MAAO,SAAUiJ,WAAY,SAC/B,CACEjJ,MAAO,WACPiJ,WAAY,WACZC,eAAgB,SAACC,GACf,OAAiB,OAAVA,EAAiBA,EAAQ,IAGpC,CAAEnJ,MAAO,OAAQiJ,WAAY,SAE/BrG,UAAWyE,EACX+B,QAASjC,EACTkC,YAAazB,EACb0B,WAAW,UACXC,QAAQ,mB,4LCvJX,SAASC,EAA6BC,GAC3C,OAAOC,EAAAA,EAAAA,GAAqB,mBAAoBD,GAElD,IACA,GAD6BE,E,SAAAA,GAAuB,mBAAoB,CAAC,OAAQ,UAAW,mBAAoB,yBAA0B,wBAAyB,sBAAuB,oBAAqB,0B,WCFzMC,EAAY,CAAC,WAAY,WAAY,KAAM,UAAW,mBAAoB,kBAAmB,WAgC7FC,GAAoBC,EAAAA,EAAAA,IAAOC,EAAAA,EAAQ,CACvCC,kBAAmB,SAAAC,GAAI,OAHK,SAAAA,GAAI,MAAa,eAATA,GAAkC,UAATA,GAA6B,OAATA,GAA0B,OAATA,GAA0B,YAATA,EAGxFC,CAAsBD,IAAkB,YAATA,GAC1D7J,KAAM,mBACNqJ,KAAM,OACNU,kBAAmB,SAACnL,EAAOoL,GACzB,MAAO,CAACA,EAAOhG,KAAMgG,EAAOC,wBAAP,uBACZC,EAAAA,uBAA+CF,EAAOC,uBAC5DD,EAAOG,oBAAP,uBACMD,EAAAA,mBAA2CF,EAAOG,sBARrCT,EAWvB,gBACDU,EADC,EACDA,WACA5L,EAFC,EAEDA,MAFC,OAGG6L,EAAAA,EAAAA,IAAS,uBACNH,EAAAA,sBADK,gBAC6CA,EAAAA,mBAA2C,CAClGI,WAAY9L,EAAM+L,YAAYC,OAAO,CAAC,WAAY,CAChDC,SAAUjM,EAAM+L,YAAYE,SAASC,QAEvCC,QAAS,IAEqB,WAA/BP,EAAWvF,kBAAX,QACDyF,WAAY9L,EAAM+L,YAAYC,OAAO,CAAC,mBAAoB,aAAc,gBAAiB,CACvFC,SAAUjM,EAAM+L,YAAYE,SAASC,SAFtC,YAIKR,EAAAA,SAAiC,CACrCxF,MAAO,gBAEuB,UAA/B0F,EAAWvF,iBAA+BuF,EAAWvI,YAArD,uBACMqI,EAAAA,sBADN,gBACwDA,EAAAA,mBAA2C,CAClGI,WAAY9L,EAAM+L,YAAYC,OAAO,CAAC,WAAY,CAChDC,SAAUjM,EAAM+L,YAAYE,SAASC,QAEvCC,QAAS,EACTC,aAAc,IAEgB,QAA/BR,EAAWvF,iBAA6BuF,EAAWvI,YAAnD,uBACMqI,EAAAA,sBADN,gBACwDA,EAAAA,mBAA2C,CAClGI,WAAY9L,EAAM+L,YAAYC,OAAO,CAAC,WAAY,CAChDC,SAAUjM,EAAM+L,YAAYE,SAASC,QAEvCC,QAAS,EACTE,YAAa,QAGXC,GAAgCpB,EAAAA,EAAAA,IAAO,MAAO,CAClD1J,KAAM,mBACNqJ,KAAM,mBACNU,kBAAmB,SAACnL,EAAOoL,GACzB,IACEI,EACExL,EADFwL,WAEF,MAAO,CAACJ,EAAOe,iBAAkBf,EAAO,mBAAD,QAAoBgB,EAAAA,EAAAA,GAAWZ,EAAWvF,sBAP/C6E,EASnC,gBACDlL,EADC,EACDA,MACA4L,EAFC,EAEDA,WAFC,OAGGC,EAAAA,EAAAA,GAAS,CACbjL,SAAU,WACV6L,WAAY,UACZC,QAAS,QACuB,UAA/Bd,EAAWvF,kBAAuD,aAAvBuF,EAAW3F,SAAiD,cAAvB2F,EAAW3F,UAA4B,CACxH0G,KAAM,IAC0B,UAA/Bf,EAAWvF,iBAAsD,SAAvBuF,EAAW3F,SAAsB,CAC5E0G,KAAM,GAC0B,WAA/Bf,EAAWvF,iBAAgC,CAC5CsG,KAAM,MACNC,UAAW,kBACX1G,MAAOlG,EAAM6M,QAAQC,OAAOnL,UACI,QAA/BiK,EAAWvF,kBAAqD,aAAvBuF,EAAW3F,SAAiD,cAAvB2F,EAAW3F,UAA4B,CACtHnF,MAAO,IACyB,QAA/B8K,EAAWvF,iBAAoD,SAAvBuF,EAAW3F,SAAsB,CAC1EnF,MAAO,GACyB,UAA/B8K,EAAWvF,iBAA+BuF,EAAWvI,WAAa,CACnEzC,SAAU,WACV+L,MAAO,IACyB,QAA/Bf,EAAWvF,iBAA6BuF,EAAWvI,WAAa,CACjEzC,SAAU,WACVE,OAAQ,QAgIV,EA9HmCiM,EAAAA,YAAiB,SAAuBC,EAASC,GAClF,IAAM7M,GAAQ8M,EAAAA,EAAAA,GAAc,CAC1B9M,MAAO4M,EACPxL,KAAM,qBAIN2L,EAOE/M,EAPF+M,SADF,EAQI/M,EANFuB,SAAAA,OAFF,SAGMyL,EAKFhN,EALFmB,GAHF,EAQInB,EAJFgG,QAAAA,OAJF,SAKoBiH,EAGhBjN,EAHFmM,iBALF,EAQInM,EAFFiG,gBAAAA,OANF,MAMoB,SANpB,IAQIjG,EADF6F,QAAAA,OAPF,MAOY,OAPZ,EASMqH,GAAQC,EAAAA,EAAAA,GAA8BnN,EAAO4K,GAE7CzJ,GAAKiM,EAAAA,EAAAA,GAAMJ,GACXb,EAA2C,MAAxBc,EAA+BA,GAAoCI,EAAAA,EAAAA,KAAKC,EAAAA,EAAkB,CACjH,kBAAmBnM,EACnB2E,MAAO,UACPzC,KAAM,KAGFmI,GAAaC,EAAAA,EAAAA,GAAS,GAAIzL,EAAO,CACrCuB,SAAAA,EACAyE,QAAAA,EACAmG,iBAAAA,EACAlG,gBAAAA,EACAJ,QAAAA,IAGI5F,EAnIkB,SAAAuL,GACxB,IACExF,EAGEwF,EAHFxF,QACAC,EAEEuF,EAFFvF,gBACAhG,EACEuL,EADFvL,QAEIsN,EAAQ,CACZnI,KAAM,CAAC,OAAQY,GAAW,WAC1BE,UAAW,CAACF,GAAW,mBAAJ,QAAuBoG,EAAAA,EAAAA,GAAWnG,KACrDuH,QAAS,CAACxH,GAAW,iBAAJ,QAAqBoG,EAAAA,EAAAA,GAAWnG,KACjDkG,iBAAkB,CAAC,mBAAoBnG,GAAW,mBAAJ,QAAuBoG,EAAAA,EAAAA,GAAWnG,MAE5EwH,GAAkBC,EAAAA,EAAAA,GAAeH,EAAO/C,EAA8BvK,GAC5E,OAAOwL,EAAAA,EAAAA,GAAS,GAAIxL,EAASwN,GAsHbE,CAAkBnC,GAClC,OAAoB6B,EAAAA,EAAAA,KAAKxC,GAAmBY,EAAAA,EAAAA,GAAS,CACnDlK,SAAUA,GAAYyE,EACtB7E,GAAIA,EACJ0L,IAAKA,GACJK,EAAO,CACRrH,QAASA,EACT5F,QAASA,EACTuL,WAAYA,EACZuB,SAAyC,QAA/BvB,EAAWvF,iBAAyC2H,EAAAA,EAAAA,MAAMjB,EAAAA,SAAgB,CAClFI,SAAU,CAACA,EAAU/G,IAAwBqH,EAAAA,EAAAA,KAAKnB,EAA+B,CAC/E5J,UAAWrC,EAAQkM,iBACnBX,WAAYA,EACZuB,SAAUZ,QAEIyB,EAAAA,EAAAA,MAAMjB,EAAAA,SAAgB,CACtCI,SAAU,CAAC/G,IAAwBqH,EAAAA,EAAAA,KAAKnB,EAA+B,CACrE5J,UAAWrC,EAAQkM,iBACnBX,WAAYA,EACZuB,SAAUZ,IACRY,Y,+ICrKH,SAASc,EAA6BpD,GAC3C,OAAOC,EAAAA,EAAAA,GAAqB,mBAAoBD,IAErBE,E,SAAAA,GAAuB,mBAAoB,CAAC,OAAQ,YAAjF,I,WCFMC,EAAY,CAAC,YAAa,kBAqB1BkD,GAAoBhD,EAAAA,EAAAA,IAAO,MAAO,CACtC1J,KAAM,mBACNqJ,KAAM,OACNU,kBAAmB,SAACnL,EAAOoL,GACzB,IACEI,EACExL,EADFwL,WAEF,MAAO,CAACJ,EAAOhG,MAAOoG,EAAWuC,gBAAkB3C,EAAOpD,WAPpC8C,EASvB,gBACDU,EADC,EACDA,WADC,OAEGC,EAAAA,EAAAA,GAAS,CACba,QAAS,OACT0B,WAAY,SACZ1I,QAAS,EACT2I,eAAgB,WAChBC,KAAM,aACJ1C,EAAWuC,gBAAkB,CAC/B,2BAA4B,CAC1B9B,WAAY,QA4DhB,EAzDmCU,EAAAA,YAAiB,SAAuBC,EAASC,GAClF,IAAM7M,GAAQ8M,EAAAA,EAAAA,GAAc,CAC1B9M,MAAO4M,EACPxL,KAAM,qBAINkB,EAEEtC,EAFFsC,UADF,EAGItC,EADF+N,eAAAA,OAFF,SAIMb,GAAQC,EAAAA,EAAAA,GAA8BnN,EAAO4K,GAE7CY,GAAaC,EAAAA,EAAAA,GAAS,GAAIzL,EAAO,CACrC+N,eAAAA,IAGI9N,EAjDkB,SAAAuL,GACxB,IACEvL,EAEEuL,EAFFvL,QAGIsN,EAAQ,CACZnI,KAAM,CAAC,QAFLoG,EADFuC,gBAGkC,YAEpC,OAAOL,EAAAA,EAAAA,GAAeH,EAAOM,EAA8B5N,GAyC3C0N,CAAkBnC,GAClC,OAAoB6B,EAAAA,EAAAA,KAAKS,GAAmBrC,EAAAA,EAAAA,GAAS,CACnDnJ,WAAWG,EAAAA,EAAAA,GAAKxC,EAAQmF,KAAM9C,GAC9BkJ,WAAYA,EACZqB,IAAKA,GACJK,Q,gJCjEE,SAASiB,EAAiC1D,GAC/C,OAAOC,EAAAA,EAAAA,GAAqB,uBAAwBD,IAErBE,E,SAAAA,GAAuB,uBAAwB,CAAC,SAAjF,I,WCFMC,EAAY,CAAC,YAqBbwD,GAAwBtD,EAAAA,EAAAA,IAAOuD,EAAAA,EAAY,CAC/CrD,kBAAmB,SAAAC,GAAI,OAAIC,EAAAA,EAAAA,IAAsBD,IAAkB,YAATA,GAC1D7J,KAAM,uBACNqJ,KAAM,OACNU,kBAAmB,SAACnL,EAAOoL,GAAR,OAAmBA,EAAOhG,OAJjB0F,CAK3B,IA2CH,EA1CuC6B,EAAAA,YAAiB,SAA2BC,EAASC,GAC1F,IAAM7M,GAAQ8M,EAAAA,EAAAA,GAAc,CAC1B9M,MAAO4M,EACPxL,KAAM,yBAGFoK,GAAa2B,EAAAA,EAAAA,GAA8BnN,EAAO4K,GAElD3K,EAzBkB,SAAAuL,GACxB,IACEvL,EACEuL,EADFvL,QAKIwN,GAAkBC,EAAAA,EAAAA,GAHV,CACZtI,KAAM,CAAC,SAEqC+I,EAAkClO,GAChF,OAAOwL,EAAAA,EAAAA,GAAS,GAAIxL,EAASwN,GAiBbE,CAAkBnC,GAClC,OAAoB6B,EAAAA,EAAAA,KAAKe,GAAuB3C,EAAAA,EAAAA,GAAS,CACvD6C,UAAW,IACXzI,QAAS,QACTC,MAAO,iBACP+G,IAAKA,EACLrB,WAAYA,GACXxL,EAAO,CACRC,QAASA","sources":["screens/Console/Common/FormComponents/InputBoxWrapper/InputBoxWrapper.tsx","screens/Console/Common/Hooks/useApi.tsx","screens/Console/Common/ModalWrapper/ConfirmDialog.tsx","screens/Console/Tenants/TenantDetails/DeletePod.tsx","screens/Console/Tenants/TenantDetails/PodsSummary.tsx","../node_modules/@mui/lab/LoadingButton/loadingButtonClasses.js","../node_modules/@mui/lab/LoadingButton/LoadingButton.js","../node_modules/@mui/material/DialogActions/dialogActionsClasses.js","../node_modules/@mui/material/DialogActions/DialogActions.js","../node_modules/@mui/material/DialogContentText/dialogContentTextClasses.js","../node_modules/@mui/material/DialogContentText/DialogContentText.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 .\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\nimport clsx from \"clsx\";\n\ninterface InputBoxProps {\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","import React from \"react\";\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n });\n\ntype ConfirmDialogProps = {\n isOpen?: boolean;\n onClose: () => void;\n onCancel?: () => void;\n onConfirm: () => void;\n classes?: any;\n title: string;\n isLoading?: boolean;\n confirmationContent: React.ReactNode | React.ReactNode[];\n cancelText?: string;\n confirmText?: string;\n confirmButtonProps?: Partial;\n cancelButtonProps?: Partial;\n titleIcon?: React.ReactNode;\n};\n\nconst ConfirmDialog = ({\n isOpen = false,\n onClose,\n onCancel,\n onConfirm,\n classes = {},\n title = \"\",\n isLoading,\n confirmationContent,\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n confirmButtonProps = {},\n cancelButtonProps = {},\n titleIcon = null,\n}: ConfirmDialogProps) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(ConfirmDialog);\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 { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n setErrorSnackMessage,\n}: IDeletePod) => {\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err);\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage,\n});\n\nexport default connector(DeletePod);\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 } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState } from \"../../../../store\";\nimport { setTenantDetailsLoad } from \"../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid } from \"@mui/material\";\n\ninterface IPodsSummary {\n classes: any;\n match: any;\n history: any;\n loadingTenant: boolean;\n setTenantDetailsLoad: typeof setTenantDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({\n classes,\n match,\n history,\n loadingTenant,\n}: IPodsSummary) => {\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n\n const tenantName = match.params[\"tenantName\"];\n const tenantNamespace = match.params[\"tenantNamespace\"];\n\n const podViewAction = (pod: IPodListElement) => {\n history.push(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}/pods/${pod.name}`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n });\n });\n }\n }, [loadingPods, tenantName, tenantNamespace]);\n\n return (\n \n {deleteOpen && (\n \n )}\n
Pods
\n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={pods}\n itemActions={podTableActions}\n entityName=\"Servers\"\n idField=\"name\"\n />\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PodsSummary));\n","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getLoadingButtonUtilityClass(slot) {\n return generateUtilityClass('MuiLoadingButton', slot);\n}\nconst loadingButtonClasses = generateUtilityClasses('MuiLoadingButton', ['root', 'loading', 'loadingIndicator', 'loadingIndicatorCenter', 'loadingIndicatorStart', 'loadingIndicatorEnd', 'endIconLoadingEnd', 'startIconLoadingStart']);\nexport default loadingButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"disabled\", \"id\", \"loading\", \"loadingIndicator\", \"loadingPosition\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@mui/utils';\nimport { capitalize, unstable_useId as useId } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport loadingButtonClasses, { getLoadingButtonUtilityClass } from './loadingButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n loading,\n loadingPosition,\n classes\n } = ownerState;\n const slots = {\n root: ['root', loading && 'loading'],\n startIcon: [loading && `startIconLoading${capitalize(loadingPosition)}`],\n endIcon: [loading && `endIconLoading${capitalize(loadingPosition)}`],\n loadingIndicator: ['loadingIndicator', loading && `loadingIndicator${capitalize(loadingPosition)}`]\n };\n const composedClasses = composeClasses(slots, getLoadingButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n}; // TODO use `import { rootShouldForwardProp } from '../styles/styled';` once move to core\n\n\nconst rootShouldForwardProp = prop => prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as' && prop !== 'classes';\n\nconst LoadingButtonRoot = styled(Button, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiLoadingButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root, styles.startIconLoadingStart && {\n [`& .${loadingButtonClasses.startIconLoadingStart}`]: styles.startIconLoadingStart\n }, styles.endIconLoadingEnd && {\n [`& .${loadingButtonClasses.endIconLoadingEnd}`]: styles.endIconLoadingEnd\n }];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0\n }\n}, ownerState.loadingPosition === 'center' && {\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n [`&.${loadingButtonClasses.loading}`]: {\n color: 'transparent'\n }\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginRight: -8\n }\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginLeft: -8\n }\n}));\nconst LoadingButtonLoadingIndicator = styled('div', {\n name: 'MuiLoadingButton',\n slot: 'LoadingIndicator',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.loadingIndicator, styles[`loadingIndicator${capitalize(ownerState.loadingPosition)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'absolute',\n visibility: 'visible',\n display: 'flex'\n}, ownerState.loadingPosition === 'start' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n left: 14\n}, ownerState.loadingPosition === 'start' && ownerState.variant === 'text' && {\n left: 6\n}, ownerState.loadingPosition === 'center' && {\n left: '50%',\n transform: 'translate(-50%)',\n color: theme.palette.action.disabled\n}, ownerState.loadingPosition === 'end' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n right: 14\n}, ownerState.loadingPosition === 'end' && ownerState.variant === 'text' && {\n right: 6\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n position: 'relative',\n left: -10\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n position: 'relative',\n right: -10\n}));\nconst LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLoadingButton'\n });\n\n const {\n children,\n disabled = false,\n id: idProp,\n loading = false,\n loadingIndicator: loadingIndicatorProp,\n loadingPosition = 'center',\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const id = useId(idProp);\n const loadingIndicator = loadingIndicatorProp != null ? loadingIndicatorProp : /*#__PURE__*/_jsx(CircularProgress, {\n \"aria-labelledby\": id,\n color: \"inherit\",\n size: 16\n });\n\n const ownerState = _extends({}, props, {\n disabled,\n loading,\n loadingIndicator,\n loadingPosition,\n variant\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(LoadingButtonRoot, _extends({\n disabled: disabled || loading,\n id: id,\n ref: ref\n }, other, {\n variant: variant,\n classes: classes,\n ownerState: ownerState,\n children: ownerState.loadingPosition === 'end' ? /*#__PURE__*/_jsxs(React.Fragment, {\n children: [children, loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n })]\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [loading && /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n }), children]\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LoadingButton.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n\n /**\n * @ignore\n */\n id: PropTypes.string,\n\n /**\n * If `true`, the loading indicator is shown.\n * @default false\n */\n loading: PropTypes.bool,\n\n /**\n * Element placed before the children if the button is in loading state.\n * The node should contain an element with `role=\"progressbar\"` with an accessible name.\n * By default we render a `CircularProgress` that is labelled by the button itself.\n * @default \n */\n loadingIndicator: PropTypes.node,\n\n /**\n * The loading indicator can be positioned on the start, end, or the center of the button.\n * @default 'center'\n */\n loadingPosition: chainPropTypes(PropTypes.oneOf(['start', 'end', 'center']), props => {\n if (props.loadingPosition === 'start' && !props.startIcon) {\n return new Error(`MUI: The loadingPosition=\"start\" should be used in combination with startIcon.`);\n }\n\n if (props.loadingPosition === 'end' && !props.endIcon) {\n return new Error(`MUI: The loadingPosition=\"end\" should be used in combination with endIcon.`);\n }\n\n return null;\n }),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes.oneOf(['contained', 'outlined', 'text'])\n} : void 0;\nexport default LoadingButton;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogActionsUtilityClass(slot) {\n return generateUtilityClass('MuiDialogActions', slot);\n}\nconst dialogActionsClasses = generateUtilityClasses('MuiDialogActions', ['root', 'spacing']);\nexport default dialogActionsClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disableSpacing\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDialogActionsUtilityClass } from './dialogActionsClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableSpacing\n } = ownerState;\n const slots = {\n root: ['root', !disableSpacing && 'spacing']\n };\n return composeClasses(slots, getDialogActionsUtilityClass, classes);\n};\n\nconst DialogActionsRoot = styled('div', {\n name: 'MuiDialogActions',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disableSpacing && styles.spacing];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex',\n alignItems: 'center',\n padding: 8,\n justifyContent: 'flex-end',\n flex: '0 0 auto'\n}, !ownerState.disableSpacing && {\n '& > :not(:first-of-type)': {\n marginLeft: 8\n }\n}));\nconst DialogActions = /*#__PURE__*/React.forwardRef(function DialogActions(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogActions'\n });\n\n const {\n className,\n disableSpacing = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n disableSpacing\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogActionsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogActions.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the actions do not have additional margin.\n * @default false\n */\n disableSpacing: PropTypes.bool,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogActions;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getDialogContentTextUtilityClass(slot) {\n return generateUtilityClass('MuiDialogContentText', slot);\n}\nconst dialogContentTextClasses = generateUtilityClasses('MuiDialogContentText', ['root']);\nexport default dialogContentTextClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Typography from '../Typography';\nimport { getDialogContentTextUtilityClass } from './dialogContentTextClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n const composedClasses = composeClasses(slots, getDialogContentTextUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\nconst DialogContentTextRoot = styled(Typography, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiDialogContentText',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst DialogContentText = /*#__PURE__*/React.forwardRef(function DialogContentText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDialogContentText'\n });\n\n const ownerState = _objectWithoutPropertiesLoose(props, _excluded);\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DialogContentTextRoot, _extends({\n component: \"p\",\n variant: \"body1\",\n color: \"text.secondary\",\n ref: ref,\n ownerState: ownerState\n }, props, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? DialogContentText.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default DialogContentText;"],"names":["inputStyles","makeStyles","theme","createStyles","inputFieldStyles","InputField","props","classes","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","label","onChange","value","id","name","type","autoComplete","disabled","multiline","tooltip","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","className","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","title","placement","fullWidth","helperText","inputRebase","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","useState","isLoading","setIsLoading","method","url","data","api","then","res","catch","err","deleteDialogStyles","isOpen","onClose","onCancel","onConfirm","confirmationContent","cancelText","confirmText","confirmButtonProps","cancelButtonProps","titleIcon","open","event","reason","root","sx","padding","titleText","closeContainer","closeButton","content","actions","cancelButton","variant","color","confirmButton","loading","loadingPosition","startIcon","connect","setErrorSnackMessage","deleteOpen","selectedPod","closeDeleteModalAndRefresh","retypePod","setRetypePod","useApi","deleteLoading","invokeDeleteApi","ConfirmDialog","namespace","tenant","errorMessage","detailedError","DialogContentText","Grid","item","xs","InputBoxWrapper","target","connector","state","loadingTenant","tenants","tenantDetails","tenantDetailsStyles","tableStyles","containerForHeader","spacing","match","history","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","tenantName","params","tenantNamespace","podTableActions","pod","push","useEffect","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","Fragment","reloadData","sectionTitle","tableBlock","TableWrapper","columns","elementKey","renderFunction","input","records","itemActions","entityName","idField","getLoadingButtonUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","LoadingButtonRoot","styled","Button","shouldForwardProp","prop","rootShouldForwardProp","overridesResolver","styles","startIconLoadingStart","loadingButtonClasses","endIconLoadingEnd","ownerState","_extends","transition","transitions","create","duration","short","opacity","marginRight","marginLeft","LoadingButtonLoadingIndicator","loadingIndicator","capitalize","visibility","display","left","transform","palette","action","React","inProps","ref","useThemeProps","children","idProp","loadingIndicatorProp","other","_objectWithoutPropertiesLoose","useId","_jsx","CircularProgress","slots","endIcon","composedClasses","composeClasses","useUtilityClasses","_jsxs","getDialogActionsUtilityClass","DialogActionsRoot","disableSpacing","alignItems","justifyContent","flex","getDialogContentTextUtilityClass","DialogContentTextRoot","Typography","component"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/1719.c433d41f.chunk.js b/portal-ui/build/static/js/1719.c433d41f.chunk.js
new file mode 100644
index 000000000..88ae8d099
--- /dev/null
+++ b/portal-ui/build/static/js/1719.c433d41f.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[1719],{66964:function(e,n,t){var a=t(18489),o=t(50390),i=t(12066),s=t(25594),l=t(36554),r=t(94187),c=t(95467),d=t(86509),u=t(62449),m=t(4285),p=t(72462),h=t(97538),v=t(44977),x=t(62559),Z=(0,u.Z)((function(e){return(0,d.Z)((0,a.Z)({},p.gM))}));function f(e){var n=Z();return(0,x.jsx)(i.Z,(0,a.Z)({InputProps:{classes:n}},e))}n.Z=(0,m.Z)((function(e){return(0,d.Z)((0,a.Z)((0,a.Z)((0,a.Z)({},p.YI),p.Hr),{},{textBoxContainer:{flexGrow:1,position:"relative"},overlayAction:{position:"absolute",right:5,top:6,"& svg":{maxWidth:15,maxHeight:15},"&.withLabel":{top:5}},inputLabel:(0,a.Z)((0,a.Z)({},p.YI.inputLabel),{},{fontWeight:"normal"})}))}))((function(e){var n=e.label,t=e.onChange,i=e.value,d=e.id,u=e.name,m=e.type,p=void 0===m?"text":m,Z=e.autoComplete,j=void 0===Z?"off":Z,b=e.disabled,g=void 0!==b&&b,C=e.multiline,y=void 0!==C&&C,N=e.tooltip,P=void 0===N?"":N,k=e.index,I=void 0===k?0:k,T=e.error,L=void 0===T?"":T,E=e.required,S=void 0!==E&&E,w=e.placeholder,F=void 0===w?"":w,B=e.min,M=e.max,A=e.overlayIcon,K=void 0===A?null:A,R=e.overlayObject,D=void 0===R?null:R,O=e.extraInputProps,W=void 0===O?{}:O,z=e.overlayAction,G=e.noLabelMinWidth,H=void 0!==G&&G,Y=e.pattern,$=void 0===Y?"":Y,_=e.autoFocus,q=void 0!==_&&_,Q=e.classes,U=e.className,V=void 0===U?"":U,X=e.onKeyPress,J=(0,a.Z)({"data-index":I},W);return"number"===p&&B&&(J.min=B),"number"===p&&M&&(J.max=M),""!==$&&(J.pattern=$),(0,x.jsx)(o.Fragment,{children:(0,x.jsxs)(s.ZP,{container:!0,className:(0,v.Z)(""!==V?V:"",""!==L?Q.errorInField:Q.inputBoxContainer),children:[""!==n&&(0,x.jsxs)(l.Z,{htmlFor:d,className:H?Q.noMinWidthLabel:Q.inputLabel,children:[(0,x.jsxs)("span",{children:[n,S?"*":""]}),""!==P&&(0,x.jsx)("div",{className:Q.tooltipContainer,children:(0,x.jsx)(r.Z,{title:P,placement:"top-start",children:(0,x.jsx)("div",{className:Q.tooltip,children:(0,x.jsx)(h.Z,{})})})})]}),(0,x.jsxs)("div",{className:Q.textBoxContainer,children:[(0,x.jsx)(f,{id:d,name:u,fullWidth:!0,value:i,autoFocus:q,disabled:g,onChange:t,type:p,multiline:y,autoComplete:j,inputProps:J,error:""!==L,helperText:L,placeholder:F,className:Q.inputRebase,onKeyPress:X}),K&&(0,x.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:(0,x.jsx)(c.Z,{onClick:z?function(){z()}:function(){return null},size:"small",disableFocusRipple:!1,disableRipple:!1,disableTouchRipple:!1,children:K})}),D&&(0,x.jsx)("div",{className:"".concat(Q.overlayAction," ").concat(""!==n?"withLabel":""),children:D})]})]})})}))},21639:function(e,n,t){var a=t(23430),o=t(50390),i=t(30324);n.Z=function(e,n){var t=(0,o.useState)(!1),s=(0,a.Z)(t,2),l=s[0],r=s[1];return[l,function(t,a,o){r(!0),i.Z.invoke(t,a,o).then((function(n){r(!1),e(n)})).catch((function(e){r(!1),n(e)}))}]}},60656:function(e,n,t){var a=t(18489),o=t(50390),i=t(84402),s=t(78426),l=t(93085),r=t(7887),c=t(66946),d=t(14476),u=t(95467),m=t(21278),p=t(86509),h=t(4285),v=t(72462),x=t(62559);n.Z=(0,h.Z)((function(e){return(0,p.Z)((0,a.Z)({},v.Qw))}))((function(e){var n=e.isOpen,t=void 0!==n&&n,p=e.onClose,h=e.onCancel,v=e.onConfirm,Z=e.classes,f=void 0===Z?{}:Z,j=e.title,b=void 0===j?"":j,g=e.isLoading,C=e.confirmationContent,y=e.cancelText,N=void 0===y?"Cancel":y,P=e.confirmText,k=void 0===P?"Confirm":P,I=e.confirmButtonProps,T=void 0===I?{}:I,L=e.cancelButtonProps,E=void 0===L?{}:L,S=e.titleIcon,w=void 0===S?null:S;return(0,x.jsxs)(i.Z,{open:t,onClose:function(e,n){"backdropClick"!==n&&p()},className:f.root,sx:{"& .MuiPaper-root":{padding:"1rem 2rem 2rem 1rem"}},children:[(0,x.jsxs)(s.Z,{className:f.title,children:[(0,x.jsxs)("div",{className:f.titleText,children:[w," ",b]}),(0,x.jsx)("div",{className:f.closeContainer,children:(0,x.jsx)(u.Z,{"aria-label":"close",className:f.closeButton,onClick:p,disableRipple:!0,size:"small",children:(0,x.jsx)(m.Z,{})})})]}),(0,x.jsx)(l.Z,{className:f.content,children:C}),(0,x.jsxs)(r.Z,{className:f.actions,children:[(0,x.jsx)(c.Z,(0,a.Z)((0,a.Z)({className:f.cancelButton,onClick:h||p,disabled:g,type:"button"},E),{},{variant:"outlined",color:"primary",children:N})),(0,x.jsx)(d.Z,(0,a.Z)((0,a.Z)({className:f.confirmButton,type:"button",onClick:v,loading:g,disabled:g,variant:"outlined",color:"secondary",loadingPosition:"start",startIcon:(0,x.jsx)(o.Fragment,{}),autoFocus:!0},T),{},{children:k}))]})]})}))},51719:function(e,n,t){t.r(n),t.d(n,{default:function(){return k}});var a=t(23430),o=t(18489),i=t(50390),s=t(34424),l=t(86509),r=t(4285),c=t(72462),d=t(28948),u=t(44149),m=t(30324),p=t(8174),h=t(23473),v=t(66964),x=t(25594),Z=t(21639),f=t(60656),j=t(85615),b=t(62559),g=(0,s.$j)(null,{setErrorSnackMessage:u.Ih})((function(e){var n=e.deleteOpen,t=e.selectedPod,o=e.closeDeleteModalAndRefresh,s=e.setErrorSnackMessage,l=(0,i.useState)(""),r=(0,a.Z)(l,2),c=r[0],d=r[1],u=(0,Z.Z)((function(){return o(!0)}),(function(e){return s(e)})),m=(0,a.Z)(u,2),p=m[0],g=m[1];return(0,b.jsx)(f.Z,{title:"Delete Pod",confirmText:"Delete",isOpen:n,titleIcon:(0,b.jsx)(j.Nv,{}),isLoading:p,onConfirm:function(){c===t.name?g("DELETE","/api/v1/namespaces/".concat(t.namespace,"/tenants/").concat(t.tenant,"/pods/").concat(t.name)):s({errorMessage:"Tenant name is incorrect",detailedError:""})},onClose:function(){return o(!1)},confirmButtonProps:{disabled:c!==t.name||p},confirmationContent:(0,b.jsxs)(h.Z,{children:["To continue please type ",(0,b.jsx)("b",{children:t.name})," in the box.",(0,b.jsx)(x.ZP,{item:!0,xs:12,children:(0,b.jsx)(v.Z,{id:"retype-pod",name:"retype-pod",onChange:function(e){d(e.target.value)},label:"",value:c})})]})})})),C=t(12066),y=t(65771),N=t(13336),P=(0,s.$j)((function(e){return{loadingTenant:e.tenants.tenantDetails.loadingTenant}}),{setErrorSnackMessage:u.Ih}),k=(0,r.Z)((function(e){return(0,l.Z)((0,o.Z)((0,o.Z)((0,o.Z)({},c.oZ),c.VX),(0,c.Bz)(e.spacing(4))))}))(P((function(e){var n=e.classes,t=e.match,o=e.history,s=e.loadingTenant,l=(0,i.useState)([]),r=(0,a.Z)(l,2),c=r[0],h=r[1],v=(0,i.useState)(!0),Z=(0,a.Z)(v,2),f=Z[0],j=Z[1],P=(0,i.useState)(!1),k=(0,a.Z)(P,2),I=k[0],T=k[1],L=(0,i.useState)(null),E=(0,a.Z)(L,2),S=E[0],w=E[1],F=(0,i.useState)(""),B=(0,a.Z)(F,2),M=B[0],A=B[1],K=t.params.tenantName,R=t.params.tenantNamespace,D=c.filter((function(e){return e.name.toLowerCase().includes(M.toLowerCase())})),O=[{type:"view",onClick:function(e){o.push("/namespaces/".concat(R,"/tenants/").concat(K,"/pods/").concat(e.name))}},{type:"delete",onClick:function(e){e.tenant=K,e.namespace=R,w(e),T(!0)}}];return(0,i.useEffect)((function(){s&&j(!0)}),[s]),(0,i.useEffect)((function(){f&&m.Z.invoke("GET","/api/v1/namespaces/".concat(R,"/tenants/").concat(K,"/pods")).then((function(e){for(var n=0;n.\nimport React 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 { 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 \"../../../../../icons/HelpIcon\";\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 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 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 inputLabel: {\n ...fieldBasic.inputLabel,\n fontWeight: \"normal\",\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 overlayIcon = null,\n overlayObject = null,\n extraInputProps = {},\n overlayAction,\n noLabelMinWidth = false,\n pattern = \"\",\n autoFocus = false,\n classes,\n className = \"\",\n onKeyPress,\n}: InputBoxProps) => {\n let inputProps: any = { \"data-index\": index, ...extraInputProps };\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 return (\n \n \n {label !== \"\" && (\n \n \n {label}\n {required ? \"*\" : \"\"}\n \n {tooltip !== \"\" && (\n
\n \n \n );\n};\n\nexport default withStyles(styles)(InputBoxWrapper);\n","import { useState } from \"react\";\nimport api from \"../../../../common/api\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\n\ntype NoReturnFunction = (param?: any) => void;\ntype ApiMethodToInvoke = (method: string, url: string, data?: any) => void;\ntype IsApiInProgress = boolean;\n\nconst useApi = (\n onSuccess: NoReturnFunction,\n onError: NoReturnFunction\n): [IsApiInProgress, ApiMethodToInvoke] => {\n const [isLoading, setIsLoading] = useState(false);\n\n const callApi = (method: string, url: string, data?: any) => {\n setIsLoading(true);\n api\n .invoke(method, url, data)\n .then((res: any) => {\n setIsLoading(false);\n onSuccess(res);\n })\n .catch((err: ErrorResponseHandler) => {\n setIsLoading(false);\n onError(err);\n });\n };\n\n return [isLoading, callApi];\n};\n\nexport default useApi;\n","import React from \"react\";\nimport {\n Button,\n ButtonProps,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n} from \"@mui/material\";\nimport { LoadingButton } from \"@mui/lab\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport { deleteDialogStyles } from \"../FormComponents/common/styleLibrary\";\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...deleteDialogStyles,\n });\n\ntype ConfirmDialogProps = {\n isOpen?: boolean;\n onClose: () => void;\n onCancel?: () => void;\n onConfirm: () => void;\n classes?: any;\n title: string;\n isLoading?: boolean;\n confirmationContent: React.ReactNode | React.ReactNode[];\n cancelText?: string;\n confirmText?: string;\n confirmButtonProps?: Partial;\n cancelButtonProps?: Partial;\n titleIcon?: React.ReactNode;\n};\n\nconst ConfirmDialog = ({\n isOpen = false,\n onClose,\n onCancel,\n onConfirm,\n classes = {},\n title = \"\",\n isLoading,\n confirmationContent,\n cancelText = \"Cancel\",\n confirmText = \"Confirm\",\n confirmButtonProps = {},\n cancelButtonProps = {},\n titleIcon = null,\n}: ConfirmDialogProps) => {\n return (\n \n );\n};\n\nexport default withStyles(styles)(ConfirmDialog);\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 { IPodListElement } from \"../ListTenants/types\";\nimport InputBoxWrapper from \"../../Common/FormComponents/InputBoxWrapper/InputBoxWrapper\";\nimport Grid from \"@mui/material/Grid\";\nimport { connect } from \"react-redux\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport useApi from \"../../Common/Hooks/useApi\";\nimport ConfirmDialog from \"../../Common/ModalWrapper/ConfirmDialog\";\nimport { ConfirmDeleteIcon } from \"../../../../icons\";\n\ninterface IDeletePod {\n deleteOpen: boolean;\n selectedPod: IPodListElement;\n closeDeleteModalAndRefresh: (refreshList: boolean) => any;\n setErrorSnackMessage: typeof setErrorSnackMessage;\n}\n\nconst DeletePod = ({\n deleteOpen,\n selectedPod,\n closeDeleteModalAndRefresh,\n setErrorSnackMessage,\n}: IDeletePod) => {\n const [retypePod, setRetypePod] = useState(\"\");\n\n const onDelSuccess = () => closeDeleteModalAndRefresh(true);\n const onDelError = (err: ErrorResponseHandler) => setErrorSnackMessage(err);\n const onClose = () => closeDeleteModalAndRefresh(false);\n\n const [deleteLoading, invokeDeleteApi] = useApi(onDelSuccess, onDelError);\n\n const onConfirmDelete = () => {\n if (retypePod !== selectedPod.name) {\n setErrorSnackMessage({\n errorMessage: \"Tenant name is incorrect\",\n detailedError: \"\",\n });\n return;\n }\n invokeDeleteApi(\n \"DELETE\",\n `/api/v1/namespaces/${selectedPod.namespace}/tenants/${selectedPod.tenant}/pods/${selectedPod.name}`\n );\n };\n\n return (\n }\n isLoading={deleteLoading}\n onConfirm={onConfirmDelete}\n onClose={onClose}\n confirmButtonProps={{\n disabled: retypePod !== selectedPod.name || deleteLoading,\n }}\n confirmationContent={\n \n To continue please type {selectedPod.name} in the box.\n \n ) => {\n setRetypePod(event.target.value);\n }}\n label=\"\"\n value={retypePod}\n />\n \n \n }\n />\n );\n};\n\nconst connector = connect(null, {\n setErrorSnackMessage,\n});\n\nexport default connector(DeletePod);\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 } from \"react-redux\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport {\n containerForHeader,\n tableStyles,\n tenantDetailsStyles,\n} from \"../../Common/FormComponents/common/styleLibrary\";\nimport { niceDays } from \"../../../../common/utils\";\nimport { IPodListElement } from \"../ListTenants/types\";\nimport { setErrorSnackMessage } from \"../../../../actions\";\nimport api from \"../../../../common/api\";\nimport TableWrapper from \"../../Common/TableWrapper/TableWrapper\";\nimport { AppState } from \"../../../../store\";\nimport { setTenantDetailsLoad } from \"../actions\";\nimport { ErrorResponseHandler } from \"../../../../common/types\";\nimport DeletePod from \"./DeletePod\";\nimport { Grid, InputAdornment, TextField } from \"@mui/material\";\nimport SearchIcon from \"../../../../icons/SearchIcon\";\n\ninterface IPodsSummary {\n classes: any;\n match: any;\n history: any;\n loadingTenant: boolean;\n setTenantDetailsLoad: typeof setTenantDetailsLoad;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...tenantDetailsStyles,\n ...tableStyles,\n ...containerForHeader(theme.spacing(4)),\n });\n\nconst PodsSummary = ({\n classes,\n match,\n history,\n loadingTenant,\n}: IPodsSummary) => {\n const [pods, setPods] = useState([]);\n const [loadingPods, setLoadingPods] = useState(true);\n const [deleteOpen, setDeleteOpen] = useState(false);\n const [selectedPod, setSelectedPod] = useState(null);\n const [filter, setFilter] = useState(\"\");\n const tenantName = match.params[\"tenantName\"];\n const tenantNamespace = match.params[\"tenantNamespace\"];\n\n const podViewAction = (pod: IPodListElement) => {\n history.push(\n `/namespaces/${tenantNamespace}/tenants/${tenantName}/pods/${pod.name}`\n );\n return;\n };\n\n const closeDeleteModalAndRefresh = (reloadData: boolean) => {\n setDeleteOpen(false);\n setLoadingPods(true);\n };\n\n const confirmDeletePod = (pod: IPodListElement) => {\n pod.tenant = tenantName;\n pod.namespace = tenantNamespace;\n setSelectedPod(pod);\n setDeleteOpen(true);\n };\n\n const filteredRecords: IPodListElement[] = pods.filter((elementItem) =>\n elementItem.name.toLowerCase().includes(filter.toLowerCase())\n );\n\n const podTableActions = [\n { type: \"view\", onClick: podViewAction },\n { type: \"delete\", onClick: confirmDeletePod },\n ];\n\n useEffect(() => {\n if (loadingTenant) {\n setLoadingPods(true);\n }\n }, [loadingTenant]);\n\n useEffect(() => {\n if (loadingPods) {\n api\n .invoke(\n \"GET\",\n `/api/v1/namespaces/${tenantNamespace}/tenants/${tenantName}/pods`\n )\n .then((result: IPodListElement[]) => {\n for (let i = 0; i < result.length; i++) {\n let currentTime = (Date.now() / 1000) | 0;\n result[i].time = niceDays(\n (currentTime - parseInt(result[i].timeCreated)).toString()\n );\n }\n setPods(result);\n setLoadingPods(false);\n })\n .catch((err: ErrorResponseHandler) => {\n setErrorSnackMessage({\n errorMessage: \"Error loading pods\",\n detailedError: err.detailedError,\n });\n });\n }\n }, [loadingPods, tenantName, tenantNamespace]);\n\n return (\n \n {deleteOpen && (\n \n )}\n
Pods
\n \n \n \n \n ),\n }}\n onChange={(e) => {\n setFilter(e.target.value);\n }}\n variant=\"standard\"\n />\n \n \n {\n return input !== null ? input : 0;\n },\n },\n { label: \"Node\", elementKey: \"node\" },\n ]}\n isLoading={loadingPods}\n records={filteredRecords}\n itemActions={podTableActions}\n entityName=\"Pods\"\n idField=\"name\"\n />\n \n \n );\n};\n\nconst mapState = (state: AppState) => ({\n loadingTenant: state.tenants.tenantDetails.loadingTenant,\n});\n\nconst connector = connect(mapState, {\n setErrorSnackMessage,\n});\n\nexport default withStyles(styles)(connector(PodsSummary));\n"],"names":["inputStyles","makeStyles","theme","createStyles","inputFieldStyles","InputField","props","classes","InputProps","withStyles","fieldBasic","tooltipHelper","textBoxContainer","flexGrow","position","overlayAction","right","top","maxWidth","maxHeight","inputLabel","fontWeight","label","onChange","value","id","name","type","autoComplete","disabled","multiline","tooltip","index","error","required","placeholder","min","max","overlayIcon","overlayObject","extraInputProps","noLabelMinWidth","pattern","autoFocus","className","onKeyPress","inputProps","container","clsx","errorInField","inputBoxContainer","htmlFor","noMinWidthLabel","tooltipContainer","title","placement","fullWidth","helperText","inputRebase","onClick","size","disableFocusRipple","disableRipple","disableTouchRipple","onSuccess","onError","useState","isLoading","setIsLoading","method","url","data","api","then","res","catch","err","deleteDialogStyles","isOpen","onClose","onCancel","onConfirm","confirmationContent","cancelText","confirmText","confirmButtonProps","cancelButtonProps","titleIcon","open","event","reason","root","sx","padding","titleText","closeContainer","closeButton","content","actions","cancelButton","variant","color","confirmButton","loading","loadingPosition","startIcon","connect","setErrorSnackMessage","deleteOpen","selectedPod","closeDeleteModalAndRefresh","retypePod","setRetypePod","useApi","deleteLoading","invokeDeleteApi","ConfirmDialog","namespace","tenant","errorMessage","detailedError","DialogContentText","Grid","item","xs","InputBoxWrapper","target","connector","state","loadingTenant","tenants","tenantDetails","tenantDetailsStyles","tableStyles","containerForHeader","spacing","match","history","pods","setPods","loadingPods","setLoadingPods","setDeleteOpen","setSelectedPod","filter","setFilter","tenantName","params","tenantNamespace","filteredRecords","elementItem","toLowerCase","includes","podTableActions","pod","push","useEffect","result","i","length","currentTime","Date","now","time","niceDays","parseInt","timeCreated","toString","Fragment","reloadData","sectionTitle","actionsTray","TextField","searchField","disableUnderline","startAdornment","InputAdornment","SearchIcon","e","tableBlock","TableWrapper","columns","elementKey","width","renderFunction","input","records","itemActions","entityName","idField"],"sourceRoot":""}
\ No newline at end of file
diff --git a/portal-ui/build/static/js/189.108e9feb.chunk.js b/portal-ui/build/static/js/189.108e9feb.chunk.js
new file mode 100644
index 000000000..7043cbb19
--- /dev/null
+++ b/portal-ui/build/static/js/189.108e9feb.chunk.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkportal_ui=self.webpackChunkportal_ui||[]).push([[189],{10189:function(e,t,n){n.r(t),n.d(t,{default:function(){return nt}});var i,a=n(23430),l=n(18489),r=n(50390),o=n(34424),s=n(38342),c=n.n(s),d=n(25594),u=n(86509),x=n(4285),p=n(13512),f=n(72462);!function(e){e.singleValue="singleValue",e.linearGraph="linearGraph",e.areaGraph="areaGraph",e.barChart="barChart",e.pieChart="pieChart",e.singleRep="singleRep",e.simpleWidget="simpleWidget"}(i||(i={}));var g=n(28948),h=n(20426),m=n(73891),v=n(85615),j=n(62559),y=["#C4D4E9","#DCD1EE","#D1EEE7","#EEDED1","#AAF38F","#F9E6C5","#C83B51","#F4CECE","#D6D6D6"],b=function(e){return(0,g.v1)(e,"ns")},C=function(e){return parseInt(e).toString(10)},Z=[{id:1,title:"Uptime",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(v.oN,{}),labelDisplayFunction:g.v1},{id:50,title:"Capacity",data:[],dataOuter:[{name:"outer",value:100}],widgetConfiguration:{outerChart:{colorList:["#9c9c9c"],innerRadius:0,outerRadius:0,startAngle:0,endAngle:0},innerChart:{colorList:y,innerRadius:20,outerRadius:50,startAngle:90,endAngle:-200}},type:i.pieChart,innerLabel:"N/A",labelDisplayFunction:g.ae},{id:68,title:"Data Usage Growth",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.areaGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:52,title:"Object size distribution",data:[],widgetConfiguration:[{dataKey:"a",color:y[0],background:{fill:"#EEF1F4"},greatestColor:"#081C42"}],customStructure:[{originTag:"LESS_THAN_1024_B",displayTag:"Less than 1024B"},{originTag:"BETWEEN_1024_B_AND_1_MB",displayTag:"Between 1024B and 1MB"},{originTag:"BETWEEN_1_MB_AND_10_MB",displayTag:"Between 1MB and 10MB"},{originTag:"BETWEEN_10_MB_AND_64_MB",displayTag:"Between 10MB and 64MB"},{originTag:"BETWEEN_64_MB_AND_128_MB",displayTag:"Between 64MB and 128MB"},{originTag:"BETWEEN_128_MB_AND_512_MB",displayTag:"Between 128MB and 512MB"},{originTag:"GREATER_THAN_512_MB",displayTag:"Greater than 512MB"}],type:i.barChart},{id:66,title:"Buckets",data:[],innerLabel:"N/A",type:i.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:44,title:"Objects",data:[],innerLabel:"N/A",type:i.singleRep,color:"#0071BC",fillColor:"#ADD5E0"},{id:63,title:"API Data Received Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:61,title:"Total Open FDs",data:[],innerLabel:"N/A",type:i.singleRep,color:"#22B573",fillColor:"#A6E8C4"},{id:62,title:"Total Goroutines",data:[],innerLabel:"N/A",type:i.singleRep,color:"#F7655E",fillColor:"#F4CECE"},{id:77,title:"Node CPU Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:60,title:"API Request Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue},{id:70,title:"API Data Sent Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:17,title:"Internode Data Transfer",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:73,title:"Node IO",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:g.ae,xAxisFormatter:g.Ue},{id:80,title:"Time Since Last Heal Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(h.Z,{}),labelDisplayFunction:b},{id:81,title:"Time Since Last Scan Activity",data:"N/A",type:i.simpleWidget,widgetIcon:(0,j.jsx)(m.Z,{}),labelDisplayFunction:b},{id:71,title:"API Request Error Rate",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue},{id:76,title:"Node Memory Usage",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:74,title:"Drive Used Capacity",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,xAxisFormatter:g.Ue,yAxisFormatter:g.ae},{id:82,title:"Drives Free Inodes",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,disableYAxis:!0,xAxisFormatter:g.Ue},{id:11,title:"Node Syscalls",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:8,title:"Node File Descriptors",data:[],widgetConfiguration:[{dataKey:"",keyLabel:"",lineColor:"#000",fillColor:"#000"}],type:i.linearGraph,yAxisFormatter:C,xAxisFormatter:g.Ue},{id:500,mergedPanels:[{id:53,title:"Online",data:"N/A",type:i.singleValue},{id:69,title:"Offline",data:"N/A",type:i.singleValue}],title:"Servers"},{id:501,mergedPanels:[{id:9,title:"Online",data:"N/A",type:i.singleValue},{id:78,title:"Offline",data:"N/A",type:i.singleValue}],title:"Drives"},{id:502,mergedPanels:[{id:65,title:"Upload",data:"N/A",type:i.singleValue,labelDisplayFunction:g.ae},{id:64,title:"Download",data:"N/A",type:i.singleValue,labelDisplayFunction:g.ae}],title:"Network"}],w=function(e,t){if(0===e.length)return["","0"];if("mean"===t){var n=e.reduce((function(e,t){return e+parseFloat(t[1])}),0);return["",Math.floor(n/e.length).toString()]}var i=e.sort((function(e,t){return e[0]-t[0]}));return i[i.length-1]},N=function(e,t){if(!e)return t;var n=e.type;switch(t.type){case i.singleValue:case i.simpleWidget:if("stat"===n||"singlestat"===n){var a=c()(e,"targets[0].result[0].values",[]);null===a&&(a=[]);var r=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),o=w(a,r),s=t.labelDisplayFunction?t.labelDisplayFunction(o[1]):o[1];return(0,l.Z)((0,l.Z)({},t),{},{data:s})}break;case i.pieChart:if("gauge"===n){var d=c()(e,"targets[0].result",[]);null===d&&(d=[]);var u=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),x=d.length>0?d[0].values:[],p=w(x,u),f=d.map((function(e){var t=c()(e,"values",[]),n=Object.keys(e.metric),i=t.sort((function(e,t){return e[0]-t[0]})),a=e.metric[n[0]],l=i[i.length-1];return{name:a,value:parseInt(l)}})),h=t.labelDisplayFunction?t.labelDisplayFunction(p[1]):p[1];return(0,l.Z)((0,l.Z)({},t),{},{data:f,innerLabel:h})}break;case i.linearGraph:case i.areaGraph:if("graph"===n){var m=c()(e,"targets",[]);null===m&&(m=[]);var v=[],j=[];m.forEach((function(e,t){var n=c()(e,"result",[]),i=e.legendFormat;null===n&&(n=[]),n.forEach((function(e){var n=function(e,t){var n=Object.keys(e),i=new RegExp("{{(".concat(n.join("|"),")}}"),"g"),a=t.replace(i,(function(t){var n=t.replace(/({{|}})/g,"");return e[n]})),l=(a.match(/{{/g)||[]).length,r=(a.match(/}}/g)||[]).length,o=a.replace(/{{(.*?)}}/g,"");return l===r&&0!==l&&0!==r&&(n.forEach((function(t){a=a.replace(t,e[t])})),o=a),o}(e.metric,i),a="key_".concat(t).concat(n);v.push({dataKey:a,keyLabel:n,lineColor:"",fillColor:""});var l=c()(e,"values",[]);null===l&&(l=[]),l.forEach((function(e){var t=j.findIndex((function(t){return t.name===e[0]}));if(-1===t){var n={name:e[0]};n[a]=e[1],j.push(n)}else j[t][a]=e[1]}))}))}));var b=v.sort((function(e,t){return e.keyLabelt.keyLabel?1:0})).map((function(e,t){return(0,l.Z)((0,l.Z)({},e),{},{lineColor:y[t]||(0,g.C5)(e.keyLabel),fillColor:y[t]||(0,g.C5)(e.keyLabel)})})),C=j.sort((function(e,t){return e.name-t.name}));return(0,l.Z)((0,l.Z)({},t),{},{widgetConfiguration:b,data:C})}break;case i.barChart:if("bargauge"===n){var Z=c()(e,"targets[0].result",[]);null===Z&&(Z=[]);var N=function(e,t){return e[0]-t[0]},A=[];return A=t.customStructure?t.customStructure.map((function(e){var t=Z.find((function(t){var n=Object.keys(t.metric);return t.metric[n[0]]===e.originTag})),n=c()(t,"values",[]).sort(N),i=n[n.length-1]||["","0"];return{name:e.displayTag,a:parseInt(i[1])}})):Z.map((function(e){var t=Object.keys(e.metric),n=e.metric[t[0]],i=c()(e,"values",[]).sort(N),a=i[i.length-1]||["","0"];return{name:n,a:parseInt(a[1])}})),(0,l.Z)((0,l.Z)({},t),{},{data:A})}break;case i.singleRep:if("stat"===n){var E=c()(e,"targets[0].result[0].values",[]);null===E&&(E=[]);var S=c()(e,"options.reduceOptions.calcs[0]","lastNotNull"),F=w(E,S),k=E.sort((function(e,t){return e[0]-t[0]})),T=[];1===k.length&&T.push({value:0}),k.forEach((function(e){T.push({value:parseInt(e[1])})}));var L=t.labelDisplayFunction?t.labelDisplayFunction(F[1]):F[1];return(0,l.Z)((0,l.Z)({},t),{},{data:T,innerLabel:L})}}return t},A=function(e){var t=e.split(" "),n=function(){var t=e;return isNaN(parseFloat(e))||(t=(0,g.nk)(parseFloat(e))),(0,j.jsx)(r.Fragment,{children:t})};return 2!==t.length?n():g.Dl.includes(t[1])?(0,j.jsxs)("span",{className:"commonValue",children:[t[0],(0,j.jsx)("span",{className:"unitText",children:t[1]})]}):n()},E=n(4795),S=n(44149),F=n(30324),k=n(62449),T=n(98247),L=n(49044),B=(0,k.Z)({root:{backgroundColor:"transparent",paddingTop:0,paddingBottom:0,fontSize:22,textTransform:"uppercase",color:"#D0D0D0"},selected:{"& .MuiTab-wrapper":{color:"#07193E",fontWeight:"bold"}},indicator:{background:"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;",height:4},scroller:{maxWidth:1185,position:"relative","&::after":{content:'" "',backgroundColor:"#EEF1F4",height:4,width:"100%",display:"block"}}}),I=function(e){var t=e.selectedTab,n=e.onChange,i=e.tabOptions,a=B();return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(T.Z,{indicatorColor:"primary",textColor:"primary","aria-label":"cluster-tabs",variant:"scrollable",scrollButtons:"auto",value:t,onChange:function(e,t){n(t)},classes:{indicator:a.indicator,scroller:a.scroller},children:i.map((function(e,t){var n={label:e.label};return e.value&&(n=(0,l.Z)((0,l.Z)({},n),{},{value:e.value})),e.disabled&&(n=(0,l.Z)((0,l.Z)({},n),{},{disabled:e.disabled})),(0,r.createElement)(L.Z,(0,l.Z)((0,l.Z)({},n),{},{classes:{root:a.root,selected:a.selected},id:"simple-tab-".concat(t),"aria-controls":"simple-tabpanel-".concat(t),key:"tab-".concat(t,"-").concat(e.label)}))}))})})},R=n(16356),D=n(86192),W=n(6369),M=(0,k.Z)({root:{backgroundColor:"#fff",padding:0},title:(0,l.Z)({},f.NP.titleContainer),content:{maxWidth:"100%"}}),P=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{cardRoot:(0,l.Z)((0,l.Z)({},f.NP.singleValueContainer),{},{"&.MuiPaper-root":{borderRadius:10}}),metricText:{fontSize:70,lineHeight:1.1,color:"#07193E",fontWeight:"bold"},unitText:{fontSize:10,color:"#767676",fontWeight:"normal"},subHearderContainer:{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},subMessage:{fontSize:10,color:"#767676","&.bold":{fontWeight:"bold"}},headerContainer:{display:"flex",justifyContent:"space-between"},viewAll:{fontSize:10,color:"#C83B51",textTransform:"capitalize","& a, & a:hover, & a:visited, & a:active":{color:"#C83B51"}},extraMargin:{margin:"10px 20px 10px 0"}}))}))((function(e){var t=e.title,n=e.metricValue,i=e.metricUnit,a=e.subMessage,l=e.moreLink,o=e.rightComponent,s=e.extraMargin,c=void 0!==s&&s,d=e.classes,u=M(),x=function(){return(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)("div",{className:d.subHearderContainer,children:[(0,j.jsxs)("div",{className:d.leftSide,children:[(0,j.jsx)("div",{children:(0,j.jsxs)("span",{className:d.metricText,children:[n,(0,j.jsx)("span",{className:d.unitText,children:i})]})}),a&&(0,j.jsx)("div",{className:"".concat(d.subMessage," ").concat(a.fontWeight?a.fontWeight:""),children:a.message})]}),(0,j.jsx)("div",{className:d.rightSide,children:o})]})})},p=function(){return(0,j.jsx)(r.Fragment,{children:(0,j.jsxs)("div",{className:d.headerContainer,children:[(0,j.jsx)("span",{className:d.title,children:t}),l&&(0,j.jsx)(r.Fragment,{children:(0,j.jsx)("span",{className:d.viewAll,children:(0,j.jsx)(W.rU,{to:l,children:"View All"})})})]})})};return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(R.Z,{className:"".concat(d.cardRoot," ").concat(c?d.extraMargin:""),children:""!==n&&(0,j.jsx)(D.Z,{title:(0,j.jsx)(p,{}),subheader:(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(x,{})}),classes:{root:u.root,title:u.title,content:u.content}})})})})),z=function(e){var t=e.title,n=e.leftComponent,i=e.rightComponent;return(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(P,{title:t,metricValue:n,rightComponent:i})})},O=n(88970),G=n(27505),_=n(50990),U=n(62879),K=n(34107),V=n(65607),$=n(29503),H=n(18201),J=n(58089),Y=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.barChartConfiguration,l=e.classes;return t?(0,j.jsxs)("div",{className:l.customTooltip,children:[(0,j.jsx)("div",{className:l.timeStampTitle,children:i}),n&&n.map((function(e,t){return(0,j.jsxs)("div",{className:l.labelContainer,children:[(0,j.jsx)("div",{className:l.labelColor,style:{backgroundColor:a[t].color}}),(0,j.jsx)("div",{className:l.itemValue,children:(0,j.jsx)("span",{className:l.valueContainer,children:e.value})})]},"pltiem-".concat(t,"-").concat(i))}))]}):null})),q=n(47373),Q=n(32657),X=function(e){var t=e.y,n=e.payload;return(0,j.jsx)("text",{width:50,fontSize:"63%",textAnchor:"start",fill:"#333",transform:"translate(5,".concat(t,")"),fontWeight:700,dy:3,children:n.value})},ee=(0,o.$j)(null,{displayErrorMessage:S.Ih,openZoomPage:q.xG}),te=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{loadingAlign:{width:"100%",paddingTop:"15px",textAlign:"center",margin:"auto"}}))}))(ee((function(e){var t=e.classes,n=e.title,i=e.panelItem,l=e.timeStart,o=e.timeEnd,s=e.propLoading,c=e.displayErrorMessage,d=e.apiPrefix,u=e.zoomActivated,x=void 0!==u&&u,f=e.openZoomPage,g=(0,r.useState)(!0),h=(0,a.Z)(g,2),m=h[0],v=h[1],y=(0,r.useState)([]),b=(0,a.Z)(y,2),C=b[0],Z=b[1],w=(0,r.useState)(null),A=(0,a.Z)(w,2),E=A[0],S=A[1];(0,r.useEffect)((function(){s&&v(!0)}),[s]),(0,r.useEffect)((function(){if(m){var e=0;if(null!==l&&null!==o){var t=o.unix()-l.unix(),n=Math.floor(t/60);e=n<1?15:n}F.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(i.id,"/?step=").concat(e,"&").concat(null!==l?"&start=".concat(l.unix()):"").concat(null!==l&&null!==o?"&":"").concat(null!==o?"end=".concat(o.unix()):"")).then((function(e){var t=N(e,i);Z(t.data),S(t),v(!1)})).catch((function(e){c(e),v(!1)}))}}),[m,i,o,l,c,d]);var k=E?E.widgetConfiguration:[],T=0,L=0;if(1===k.length){var B=k[0];C.forEach((function(e,t){e[B.dataKey]>L&&(L=e[B.dataKey],T=t)}))}var I=(0,Q.Z)(),R=(0,p.Z)(I.breakpoints.up("md"));return(0,j.jsxs)("div",{className:x?"":t.singleValueContainer,children:[!x&&(0,j.jsxs)("div",{className:t.titleContainer,children:[n," ",(0,j.jsx)("button",{onClick:function(){f(i)},className:t.zoomChartIcon,children:(0,j.jsx)(J.Z,{})})]}),m&&(0,j.jsx)("div",{className:t.loadingAlign,children:(0,j.jsx)(H.Z,{})}),!m&&(0,j.jsx)("div",{className:x?t.zoomChartCont:t.contentContainer,children:(0,j.jsx)(O.h,{width:"99%",children:(0,j.jsxs)(G.v,{data:C,layout:"vertical",barCategoryGap:1,children:[(0,j.jsx)(_.K,{type:"number",hide:!0}),(0,j.jsx)(U.B,{dataKey:"name",type:"category",interval:0,tick:(0,j.jsx)(X,{}),tickLine:!1,axisLine:!1,width:150,hide:!R}),k.map((function(e){return(0,j.jsx)(K.$,{dataKey:e.dataKey,fill:e.color,background:e.background,barSize:x?25:12,children:1===k.length?(0,j.jsx)(r.Fragment,{children:C.map((function(t,n){return(0,j.jsx)(V.b,{fill:n===T?e.greatestColor:e.color},"chart-bar-".concat(n.toString()))}))}):null},"bar-".concat(e.dataKey))})),(0,j.jsx)($.u,{cursor:{fill:"rgba(255, 255, 255, 0.3)"},content:(0,j.jsx)(Y,{barChartConfiguration:k})})]})})})]})}))),ne=n(89472),ie=n(86072),ae=n(84930),le=n(84109),re=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.Rp))}))((function(e){var t=e.active,n=e.payload,i=e.label,a=e.linearConfiguration,l=e.yAxisFormatter,r=e.classes;return t?(0,j.jsxs)("div",{className:r.customTooltip,children:[(0,j.jsx)("div",{className:r.timeStampTitle,children:(0,g.Ue)(i,!0)}),n&&n.map((function(e,t){return(0,j.jsxs)("div",{className:r.labelContainer,children:[(0,j.jsx)("div",{className:r.labelColor,style:{backgroundColor:a[t].lineColor}}),(0,j.jsx)("div",{className:r.itemValue,children:(0,j.jsxs)("span",{className:r.valueContainer,children:[a[t].keyLabel,":"," ",l(e.value)]})})]},"lbPl-".concat(t,"-").concat(a[t].keyLabel))}))]}):null})),oe=(0,o.$j)(null,{displayErrorMessage:S.Ih,openZoomPage:q.xG}),se=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)({},f.NP),{},{containerElements:{display:"flex",flexDirection:"row",height:"100%",flexGrow:1},verticalAlignment:{flexDirection:"column"},chartCont:{position:"relative",height:140,width:"100%"},legendChart:{display:"flex",flexDirection:"column",flex:"0 1 auto",maxHeight:130,margin:0,overflowY:"auto",position:"relative",textAlign:"center",width:"100%",justifyContent:"flex-start",color:"#404143",fontWeight:"bold",fontSize:12},loadingAlign:{margin:"auto"}}))}))(oe((function(e){var t=e.classes,n=e.title,i=e.displayErrorMessage,l=e.timeStart,o=e.timeEnd,s=e.propLoading,c=e.panelItem,d=e.apiPrefix,u=e.hideYAxis,x=void 0!==u&&u,f=e.areaWidget,g=void 0!==f&&f,h=e.yAxisFormatter,m=void 0===h?function(e){return e}:h,v=e.xAxisFormatter,y=void 0===v?function(e){return e}:v,b=e.zoomActivated,C=void 0!==b&&b,Z=e.openZoomPage,w=(0,r.useState)(!0),A=(0,a.Z)(w,2),E=A[0],S=A[1],k=(0,r.useState)([]),T=(0,a.Z)(k,2),L=T[0],B=T[1],I=(0,r.useState)(0),R=(0,a.Z)(I,2),D=R[0],W=R[1],M=(0,r.useState)(null),P=(0,a.Z)(M,2),z=P[0],G=P[1];(0,r.useEffect)((function(){s&&S(!0)}),[s]),(0,r.useEffect)((function(){if(E){var e=0;if(null!==l&&null!==o){var t=o.unix()-l.unix(),n=Math.floor(t/60);e=n<1?15:n}F.Z.invoke("GET","/api/v1/".concat(d,"/info/widgets/").concat(c.id,"/?step=").concat(e,"&").concat(null!==l?"&start=".concat(l.unix()):"").concat(null!==l&&null!==o?"&":"").concat(null!==o?"end=".concat(o.unix()):"")).then((function(e){var t=N(e,c);B(t.data),G(t),S(!1);var n,i=0,a=(0,ne.Z)(t.data);try{for(a.s();!(n=a.n()).done;){var l=n.value;for(var r in l)if("name"!==r){var o=parseInt(l[r]);isNaN(o)&&(o=0),i5&&void 0!==arguments[5]&&arguments[5];switch(e.type){case i.singleValue:return(0,j.jsx)(ve,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.simpleWidget:return(0,j.jsx)(fe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,iconWidget:e.widgetIcon});case i.pieChart:return(0,j.jsx)(xe,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l});case i.linearGraph:case i.areaGraph:return(0,j.jsx)(se,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,hideYAxis:e.disableYAxis,xAxisFormatter:e.xAxisFormatter,yAxisFormatter:e.yAxisFormatter,apiPrefix:l,areaWidget:e.type===i.areaGraph,zoomActivated:r});case i.barChart:return(0,j.jsx)(te,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,apiPrefix:l,zoomActivated:r});case i.singleRep:var o=e.fillColor?e.fillColor:e.color;return(0,j.jsx)(he,{title:e.title,panelItem:e,timeStart:t,timeEnd:n,propLoading:a,color:e.color,fillColor:o,apiPrefix:l});default:return null}},ye=n(76352),be=(0,o.$j)(null,{onCloseAction:q.jv})((function(e){var t=e.value,n=e.modalOpen,i=e.timeStart,a=e.timeEnd,l=e.apiPrefix,o=e.onCloseAction;return t?(0,j.jsx)(ye.Z,{title:t.title,onClose:function(){o()},modalOpen:n,wideLimit:!1,noContentPadding:!0,children:(0,j.jsx)(r.Fragment,{children:je(t,i,a,!0,l,!0)})}):null})),Ce=n(17778),Ze=(0,o.$j)((function(e){return{zoomOpen:e.dashboard.zoom.openZoom,zoomWidget:e.dashboard.zoom.widgetRender}}),{displayErrorMessage:S.Ih}),we=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)((0,l.Z)((0,l.Z)({},f.OR),f.bN),{},{dashboardRow:{display:"flex",flexDirection:"row",justifyContent:"flex-start",flexWrap:"wrap",maxWidth:1180}}))}))(Ze((function(e){var t=e.classes,n=e.displayErrorMessage,i=e.apiPrefix,l=void 0===i?"admin":i,o=e.zoomOpen,s=e.zoomWidget,c=(0,r.useState)(null),u=(0,a.Z)(c,2),x=u[0],f=u[1],g=(0,r.useState)(null),h=(0,a.Z)(g,2),m=h[0],v=h[1],y=(0,r.useState)(!0),b=(0,a.Z)(y,2),C=b[0],w=b[1],A=(0,r.useState)(Z),S=(0,a.Z)(A,2),k=S[0],T=S[1],L=(0,r.useState)(0),B=(0,a.Z)(L,2),R=B[0],D=B[1],W=(0,Q.Z)(),M=(0,p.Z)(W.breakpoints.up("md")),P=(0,r.useCallback)((function(e,n){return null===n||void 0===n?void 0:n.map((function(n,i){var a=n.length,o=Math.floor(12/a);return!M&&a>=4?o=6:!M&&a>=3&&(o=12),o<1?o=1:o>12&&(o=12),(0,j.jsx)(d.ZP,{item:!0,xs:12,className:t.dashboardRow,children:n.map((function(e,n){var i=k.find((function(t){return t.id===e}));return(0,j.jsx)(d.ZP,{className:t.widgetPanelDelimiter,item:!0,xs:12,sm:o,md:o,lg:o,children:(0,j.jsx)(d.ZP,{item:!0,xs:12,children:i?(0,j.jsx)(r.Fragment,{children:i.mergedPanels?(0,j.jsx)(r.Fragment,{children:(0,j.jsx)(z,{title:i.title,leftComponent:je(i.mergedPanels[0],x,m,C,l),rightComponent:je(i.mergedPanels[1],x,m,C,l)})}):je(i,x,m,C,l)}):null})},"widget-".concat(e,"-").concat(n))}))},"line-".concat(e,"-").concat(i))}))}),[x,m,C,l,t.dashboardRow,t.widgetPanelDelimiter,k,M]),O=(0,r.useCallback)((function(){var e=0;if(null!==x&&null!==m){var t=m.unix()-x.unix(),i=Math.floor(t/60);e=i<1?15:i}F.Z.invoke("GET","/api/v1/".concat(l,"/info?step=").concat(e,"&").concat(null!==x?"&start=".concat(x.unix()):"").concat(null!==x&&null!==m?"&":"").concat(null!==m?"end=".concat(m.unix()):"")).then((function(e){if(e.widgets){var t=(i=e.widgets,Z.map((function(e){var t=i.find((function(t){return t.title.toLowerCase().trim()===e.title.toLowerCase().trim()}));return N(t,e)})));T(t)}else n({errorMessage:"Widget information could not be retrieved at this time. Please try again",detailedError:""});var i;w(!1)})).catch((function(e){n(e),w(!1)}))}),[x,m,n,l]);(0,r.useEffect)((function(){C&&O()}),[C,O]);var G=[[66,44,500,501],[80,81,1],[68,52],[63,70]];M?G.splice(1,0,[50,502]):(G.splice(1,0,[50]),G.splice(1,0,[502]));return(0,j.jsxs)(r.Fragment,{children:[o&&(0,j.jsx)(be,{modalOpen:o,timeStart:x,timeEnd:m,widgetRender:0,value:s,apiPrefix:l}),(0,j.jsx)(Ce.Z,{timeStart:x,setTimeStart:f,timeEnd:m,setTimeEnd:v,triggerSync:function(){w(!0)}}),(0,j.jsx)(d.ZP,{item:!0,xs:12,children:(0,j.jsx)(I,{selectedTab:R,onChange:function(e){D(e)},tabOptions:[{label:"Usage"},{label:"Traffic"},{label:"Resources"}]})}),(0,j.jsxs)(d.ZP,{item:!0,xs:12,className:t.widgetsContainer,children:[(0,j.jsx)(E.x,{index:0,value:R,children:P("Summary",G)}),(0,j.jsx)(E.x,{index:1,value:R,children:P("Traffic",[[60],[71,17],[73]])}),(0,j.jsx)(E.x,{index:2,value:R,children:P("Resources",[[76,77],[11,8],[82,74]])})]})]})}))),Ne=n(35721),Ae=n(81378),Ee=n(35531),Se=n(56805),Fe=n(8235),ke=function(e){var t=e.onlineCount,n=void 0===t?0:t,i=e.offlineCount,a=void 0===i?0:i,l=e.icon,r=void 0===l?null:l,o=e.label,s=void 0===o?"":o;return(0,j.jsx)(Se.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",minHeight:"200px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default"},children:(0,j.jsxs)(Se.Z,{sx:{flex:1,height:"200px",display:"flex",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"}},children:[(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"32px"},children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"16px",fontWeight:600,marginBottom:"24px"},children:s}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:{lg:"50px",md:"45px",xs:"35px"},fontWeight:600,"& .stat-text":{color:"#696969",fontSize:"12px"},"& .stat-value":{textAlign:"center"},"& .min-icon":{marginRight:"8px",height:"10px",width:"10px"}},children:[(0,j.jsxs)(Se.Z,{children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{fill:"#4CCB92"}},children:[(0,j.jsx)(v.J$,{})," ",(0,j.jsx)("div",{className:"stat-text",children:"Online"})]}),(0,j.jsx)(Se.Z,{className:"stat-value",children:n})]}),(0,j.jsxs)(Se.Z,{children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center","& .min-icon":{fill:"#C83B51"}},children:[(0,j.jsx)(v.J$,{})," ",(0,j.jsx)("div",{className:"stat-text",children:"Offline"})]}),(0,j.jsx)(Se.Z,{className:"stat-value",children:a})]})]})]}),(0,j.jsx)(Se.Z,{sx:{width:"20px",height:"20px",marginTop:"26px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:r})]})})},Te=n(31538),Le=n.n(Te),Be=n(48873),Ie=n(5211),Re=n(82618),De=n(55600),We=n(3602),Me=n(56943),Pe="#C83B51",ze="#4CCB92",Oe="#E7A219",Ge=function(e,t){return e<=t/2?Pe:2!==t&&e===t/2+1?Oe:e===t?ze:void 0},_e=function(e){switch(e){case"offline":return Pe;case"online":return ze;default:return Oe}},Ue=function(e,t){return e<=t/2?Pe:e===t/2+1?Oe:e===t?ze:void 0},Ke=function(e){var t=e.label,n=void 0===t?"":t,i=e.value,a=void 0===i?"":i,l=e.statusColor,r=void 0===l?"":l,o=e.hasStatus,s=void 0!==o&&o,c=e.icon,d=void 0===c?null:c;return(0,j.jsxs)(Se.Z,{sx:{alignItems:"center",padding:"5px",display:"flex",gap:"10px"},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",flexFlow:"column",maxWidth:"40px","&:first-of-type(svg)":{fill:"#848484"}},children:[d,s?(0,j.jsx)(Se.Z,{sx:{marginRight:"0px",justifyContent:"center",alignItems:"center",textAlign:"center","& svg.min-icon":{fill:r,width:"10px",height:"10px"}},children:(0,j.jsx)(v.J$,{})}):(0,j.jsx)(Se.Z,{sx:{width:"12px",height:"12px"}})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"flex-start",justifyContent:"flex-start",flexFlow:"column","& .stat-text":{color:"#5E5E5E",fontSize:"14px"},"& .stat-value":{color:"#07193E",display:"flex",fontWeight:500}},children:[(0,j.jsx)("div",{className:"stat-text",children:n}),(0,j.jsx)("div",{className:"stat-value",children:a})]})]})},Ve=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.SJ))}))((function(e){e.classes;var t=e.server,n=(e.index,Object.keys(c()(t,"network",{}))),i=n.length,a=t.drives?t.drives.length:0,l=n.reduce((function(e,n){return"online"===t.network[n]?e+1:e}),0),r=t.drives?t.drives.filter((function(e){return"ok"===e.state})).length:0;return(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"flex-start",flexFlow:"column",flex:1},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",marginBottom:"15px"},children:[(null===t||void 0===t?void 0:t.state)&&(0,j.jsx)(Se.Z,{sx:{marginRight:"8px","& .min-icon":{fill:_e(t.state),height:"14px",width:"14px"}},children:(0,j.jsx)(v.J$,{})}),(0,j.jsx)(Se.Z,{sx:{fontWeight:600,textTransform:"none"},children:t.endpoint||""})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",alignItems:"center",padding:"3px",gap:"15px",justifyContent:"space-between",width:"100%",paddingLeft:"20px",flexFlow:{sm:"row",xs:"column"}},children:[(0,j.jsx)(Ke,{statusColor:Ge(r,a),label:"Drives",icon:(0,j.jsx)(v.FU,{}),hasStatus:!0,value:"".concat(r,"/").concat(a)}),(0,j.jsx)(Ke,{statusColor:Ue(l,i),label:"Network",icon:(0,j.jsx)(v.B7,{}),hasStatus:!0,value:"".concat(l,"/").concat(i)}),(0,j.jsx)(Ke,{statusColor:"green",label:"Up time",icon:(0,j.jsx)(v.oN,{}),value:null!==t&&void 0!==t&&t.uptime?(0,g.v1)(t.uptime):"N/A"}),(0,j.jsx)(Ke,{statusColor:"green",label:"Version",icon:(0,j.jsx)(v.Db,{}),value:(0,j.jsx)(Se.Z,{sx:{background:"rgb(235, 236, 237)",color:"#000000",paddingLeft:"10px",paddingRight:"10px",borderRadius:"16px",fontSize:"12px",marginTop:"5px"},children:t.version?t.version:"N/A"})})]})]})})),$e=function(e){switch(e){case"offline":return Pe;case"ok":return ze;default:return Oe}},He=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},f.SJ))}))((function(e){e.classes;var t=e.drive;return(0,j.jsxs)(Se.Z,{sx:{display:"flex",flex:1,alignItems:"center",paddingBottom:"10px",borderBottom:{xs:"1px solid #eaeaea"}},children:[(0,j.jsx)(Se.Z,{sx:{"& .min-icon":{fill:"#848484"}},children:(0,j.jsx)(v.FU,{})}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column",marginLeft:"10px",flex:1},children:[(0,j.jsxs)(Se.Z,{sx:{fontSize:"14px",fontWeight:400,display:"flex",alignItems:"center","& .min-icon":{marginRight:"10px",height:"10px",width:"10px",fill:$e(t.state),flexShrink:0},"& .drive-endpoint":{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"normal",wordBreak:"break-all",fontSize:{md:"14px",xs:"10px"}}},children:[t.state&&(0,j.jsx)(v.J$,{}),(0,j.jsx)("div",{className:"drive-endpoint",children:t.endpoint||""})]}),(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",alignItems:"center",justifyContent:"space-between",paddingLeft:"20px",marginTop:"10px",flexFlow:{sm:"row",xs:"column"},"& .info-label":{color:"#8399AB"},"& .info-value":{color:"#073052",fontSize:"14px",fontWeight:500}},children:[(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Capacity:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.totalSpace?t.totalSpace.toString():"0")})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Used:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.usedSpace?t.usedSpace.toString():"0")})]}),(0,j.jsxs)(Se.Z,{sx:{display:"flex",flexFlow:"column"},children:[(0,j.jsx)("label",{className:"info-label",children:"Available:"}),(0,j.jsx)("div",{className:"info-value",children:(0,g.ae)(t.availableSpace?t.availableSpace.toString():"0")})]})]})]})]})})),Je=function(e){var t=e.data,n=r.useState(""),i=(0,a.Z)(n,2),l=i[0],o=i[1],s=function(e){o(e)};return(0,j.jsx)(Ie.Z,{sx:{width:"100%",flex:1},component:"nav","aria-labelledby":"nested-list-subheader",subheader:(0,j.jsxs)(Be.Z,{component:"div",sx:{borderBottom:"1px solid #F8F8F8"},children:["Servers (",t.length,")"]}),children:t.map((function(e,t){var n="".concat(e.endpoint,"-").concat(t),i=l===n;return(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(Re.Z,{disableRipple:!0,onClick:function(){s(i?"":n)},className:i?"expanded":"",sx:{display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid #eaeaea","&:hover":{background:"#F8F8F8"},"&.expanded":{borderBottom:"none"}},children:[(0,j.jsx)(Ve,{server:e,index:t}),(0,j.jsx)(Se.Z,{sx:{height:"25px",width:"25px",marginLeft:"25px",background:"#FBFAFA",borderRadius:"2px","&:hover":{background:"#fafafa"},display:{md:"block",xs:"none"}},children:i?(0,j.jsx)(We.Z,{}):(0,j.jsx)(Me.Z,{})})]}),i?(0,j.jsxs)(r.Fragment,{children:[(0,j.jsxs)(Be.Z,{component:"div",sx:{borderBottom:"1px solid #F8F8F8"},children:["Drives (",e.drives.length,")"]},"".concat(t,"-drive-details")),(0,j.jsx)(De.Z,{in:i,timeout:"auto",unmountOnExit:!0,sx:{width:"100%",flex:1,display:"flex",padding:{md:"20px 50px",xs:"15px 15px"},"& .MuiCollapse-wrapperInner":{display:"flex",flexFlow:"column",gap:"15px"}},children:e.drives.map((function(e,t){return(0,j.jsx)(He,{drive:e},"".concat(e.endpoint,"-").concat(t))}))})]},"".concat(e.endpoint,"-").concat(t)):null]},n)}))})},Ye=n(94187),qe=function(e){var t=e.counterValue,n=e.label,i=void 0===n?"":n,a=e.icon,l=void 0===a?null:a;return(0,j.jsx)(Se.Z,{sx:{fontFamily:"Lato,sans-serif",color:"#07193E",maxWidth:"300px",minHeight:"200px",display:"flex",marginLeft:"auto",marginRight:"auto",cursor:"default",position:"relative",width:"100%"},children:(0,j.jsxs)(Se.Z,{sx:{flex:1,height:"200px",display:"flex",width:"100%",padding:{sm:"0 8px 0 8px",xs:"0 10px 0 10px"},position:"absolute"},children:[(0,j.jsxs)(Se.Z,{sx:{flex:1,display:"flex",flexFlow:"column",marginTop:"32px",zIndex:10,overflow:"hidden"},children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"16px",fontWeight:600},children:i}),(0,j.jsx)(Ye.Z,{title:t,placement:"bottom",enterDelay:500,children:(0,j.jsx)(Se.Z,{sx:{fontSize:{xl:"55px",lg:"40px",md:"36px",sm:"22px",xs:"14px"},fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",maxWidth:{md:187,xs:200}},children:t})})]}),(0,j.jsx)(Se.Z,{sx:{width:"20px",height:"20px",marginTop:"26px",maxWidth:"26px","& .min-icon":{width:"16px",height:"16px"}},children:l})]})})},Qe=function(e){var t=e.usageValue,n=e.total,i=e.unit;return(0,j.jsxs)(Se.Z,{sx:{maxHeight:"110px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"19px",padding:"10px","& .unit-value":{fontSize:"50px",color:"#07193E"},"& .unit-type":{fontSize:"18px",color:"#5E5E5E",marginTop:"20px",marginLeft:"5px"},"& .usage-label":{display:"flex",alignItems:"center",fontSize:"16px",fontWeight:600,marginRight:"20px",marginTop:"-10px","& .min-icon":{marginLeft:"10px",height:16,width:16}}},children:[(0,j.jsxs)("div",{className:"usage-label",children:[(0,j.jsx)("span",{children:"Reported Usage"})," ",(0,j.jsx)(v.rH,{})]}),(0,j.jsx)(Ye.Z,{title:"".concat(t," Bytes"),children:(0,j.jsx)("label",{className:"unit-value",style:{fontWeight:600},children:n})}),(0,j.jsx)("label",{className:"unit-type",children:i})]})},Xe=function(e){var t=e.children,n=e.background,i=void 0===n?"#ffffff":n;return(0,j.jsx)(Se.Z,{sx:{border:"1px solid #f1f1f1",background:i,maxWidth:{sm:"100%",xs:"250px"}},children:t})},et=function(e){var t=e.usage,n=t&&t.usage?t.usage.toString():"0",i=function(e){return void 0===e?{total:"0",unit:"Mi"}:(0,g.Am)(e)}(n),a=function(e){return null!==e?e.servers.sort((function(e,t){var n=e.endpoint.toLowerCase(),i=t.endpoint.toLowerCase();return ni?1:0})):[]}(t||null),l=[];a.forEach((function(e){var t=e.drives.map((function(e){return e}));l=[].concat((0,Ee.Z)(l),(0,Ee.Z)(t))}));var o=Le()(a,"state"),s=o.offline,c=void 0===s?[]:s,d=o.online,u=void 0===d?[]:d,x=Le()(l,"state"),p=x.offline,f=void 0===p?[]:p,h=x.ok,m=void 0===h?[]:h;return(0,j.jsx)(Se.Z,{sx:{maxWidth:"1536px",margin:"auto"},children:(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:"1fr",gap:"27px",marginBottom:"40px",marginTop:"80px",marginLeft:"60px",marginRight:"60px"},children:[(0,j.jsxs)(Se.Z,{children:[(null===t||void 0===t?void 0:t.prometheusNotReady)&&(0,j.jsx)(Fe.Z,{iconComponent:(0,j.jsx)(v.a$,{}),title:"We can't retrieve advanced metrics at this time",help:(0,j.jsxs)(r.Fragment,{children:["MinIO Dashboard will display basic metrics as we couldn't connect to Prometheus successfully.",(0,j.jsx)("br",{})," ",(0,j.jsx)("br",{}),"Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."]})}),!(null!==t&&void 0!==t&&t.prometheusNotReady)&&(0,j.jsx)(Fe.Z,{iconComponent:(0,j.jsx)(v.a$,{}),title:"We can\u2019t retrieve advanced metrics at this time.",help:(0,j.jsxs)(Se.Z,{children:[(0,j.jsx)(Se.Z,{sx:{fontSize:"14px"},children:"MinIO Dashboard will display basic metrics as we couldn\u2019t connect to Prometheus successfully. Please try again in a few minutes. If the problem persists, you can review your configuration and confirm that Prometheus server is up and running."}),(0,j.jsx)(Se.Z,{sx:{paddingTop:"20px",fontSize:"14px","& a":{color:function(e){return e.colors.link}}},children:(0,j.jsx)("a",{href:"https://docs.min.io/minio/baremetal/monitoring/metrics-alerts/collect-minio-metrics-using-prometheus.html?ref=con#minio-metrics-collect-using-prometheus",target:"_blank",rel:"noreferrer",children:"Read more about Prometheus on our Docs site."})})]})})]}),(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr .2fr auto",gridTemplateColumns:"1fr",gap:"40px"},children:[(0,j.jsxs)(Se.Z,{sx:{display:"grid",gridTemplateRows:"1fr",gridTemplateColumns:{lg:"1fr 1fr 1fr 1fr ",sm:"1fr 1fr",xs:"1fr"},gap:"40px"},children:[(0,j.jsx)(Xe,{background:"linear-gradient(-15deg, #2781b0 0%, #ffffff 30%) 0% 0% no-repeat padding-box",children:(0,j.jsx)(qe,{label:"Buckets",icon:(0,j.jsx)(v.wN,{}),counterValue:t?(0,g.nk)(t.buckets):0})}),(0,j.jsx)(Xe,{background:"linear-gradient(-15deg, #4CCB92 0%, #ffffff 30%) 0% 0% no-repeat padding-box",children:(0,j.jsx)(qe,{label:"Objects",icon:(0,j.jsx)(v.xp,{}),counterValue:t?(0,g.nk)(t.objects):0})}),(0,j.jsx)(Xe,{children:(0,j.jsx)(ke,{onlineCount:u.length,offlineCount:c.length,label:"Servers",icon:(0,j.jsx)(v.SB,{})})}),(0,j.jsx)(Xe,{children:(0,j.jsx)(ke,{offlineCount:f.length,onlineCount:m.length,label:"Drives",icon:(0,j.jsx)(v.FU,{})})})]}),(0,j.jsx)(Xe,{children:(0,j.jsx)(Qe,{usageValue:n,total:i.total,unit:i.unit})}),(0,j.jsx)(Se.Z,{sx:{display:"grid",gridTemplateRows:"auto",gridTemplateColumns:"1fr",gap:"auto"},children:(0,j.jsx)(Xe,{children:(0,j.jsx)(Je,{data:a})})})]})]})})},tt=(0,o.$j)(null,{displayErrorMessage:S.Ih}),nt=(0,x.Z)((function(e){return(0,u.Z)((0,l.Z)({},(0,f.Bz)(e.spacing(4))))}))(tt((function(e){var t=e.classes,n=e.displayErrorMessage,i=(0,r.useState)(!0),l=(0,a.Z)(i,2),o=l[0],s=l[1],u=(0,r.useState)(null),x=(0,a.Z)(u,2),p=x[0],f=x[1],g=(0,r.useCallback)((function(){F.Z.invoke("GET","/api/v1/admin/info").then((function(e){f(e),s(!1)})).catch((function(e){n(e),s(!1)}))}),[f,s,n]);(0,r.useEffect)((function(){o&&g()}),[o,g]);var h=c()(p,"widgets",null);return(0,j.jsxs)(r.Fragment,{children:[(0,j.jsx)(Ne.Z,{label:"Metrics"}),o?(0,j.jsx)(d.ZP,{container:!0,children:(0,j.jsx)(d.ZP,{item:!0,xs:12,className:t.container,children:(0,j.jsx)(Ae.Z,{})})}):(0,j.jsx)(r.Fragment,{children:null!==h?(0,j.jsx)(d.ZP,{container:!0,className:t.container,children:(0,j.jsx)(we,{})}):(0,j.jsx)(et,{usage:p})})]})})))},4795:function(e,t,n){n.d(t,{x:function(){return s}});var i=n(18489),a=n(83738),l=n(50390),r=n(62559),o=["children","value","index"],s=function(e){var t=e.children,n=e.value,s=e.index,c=(0,a.Z)(e,o);return(0,r.jsx)("div",(0,i.Z)((0,i.Z)({role:"tabpanel",hidden:n!==s,id:"simple-tabpanel-".concat(s),"aria-labelledby":"simple-tab-".concat(s),style:{marginTop:"5px"}},c),{},{children:n===s&&(0,r.jsx)(l.Fragment,{children:t})}))}}}]);
+//# sourceMappingURL=189.108e9feb.chunk.js.map
\ No newline at end of file
diff --git a/portal-ui/build/static/js/189.108e9feb.chunk.js.map b/portal-ui/build/static/js/189.108e9feb.chunk.js.map
new file mode 100644
index 000000000..7cc1c62f9
--- /dev/null
+++ b/portal-ui/build/static/js/189.108e9feb.chunk.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"static/js/189.108e9feb.chunk.js","mappings":"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","sources":["screens/Console/Dashboard/Prometheus/types.ts","screens/Console/Dashboard/Prometheus/utils.tsx","screens/Console/Common/TabSelector/TabSelector.tsx","screens/Console/Dashboard/CommonCard.tsx","screens/Console/Dashboard/Prometheus/MergedWidgets.tsx","screens/Console/Dashboard/Prometheus/Widgets/tooltips/BarChartTooltip.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/Prometheus/Widgets/SingleRepWidget.tsx","screens/Console/Dashboard/Prometheus/Widgets/SingleValueWidget.tsx","screens/Console/Dashboard/Prometheus/widgetUtils.tsx","screens/Console/Dashboard/Prometheus/ZoomWidget.tsx","screens/Console/Dashboard/Prometheus/PrDashboard.tsx","screens/Console/Dashboard/BasicDashboard/StatusCountCard.tsx","screens/Console/Dashboard/BasicDashboard/Utils.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/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 {\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 HealIcon from \"../../../../icons/HealIcon\";\nimport DiagnosticsIcon from \"../../../../icons/DiagnosticsIcon\";\nimport { UptimeIcon } from \"../../../../icons\";\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: 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: colorsMain[0],\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 },\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\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 let chartSeries = get(payloadData, \"targets[0].result\", []);\n\n if (chartSeries === null) {\n chartSeries = [];\n }\n\n const metricCalc = get(\n payloadData,\n \"options.reduceOptions.calcs[0]\",\n \"lastNotNull\"\n );\n\n const valuesArray = chartSeries.length > 0 ? chartSeries[0].values : [];\n\n const totalValues = calculateMainValue(valuesArray, metricCalc);\n\n const values = chartSeries.map((elementValue: any) => {\n const values = get(elementValue, \"values\", []);\n const metricKeyItem = Object.keys(elementValue.metric);\n\n const sortResult = values.sort(\n (value1: any[], value2: any[]) => value1[0] - value2[0]\n );\n\n const metricName = elementValue.metric[metricKeyItem[0]];\n const value = sortResult[sortResult.length - 1];\n return { name: metricName, value: parseInt(value) };\n });\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, { 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 root: {\n backgroundColor: \"transparent\",\n paddingTop: 0,\n paddingBottom: 0,\n fontSize: 22,\n textTransform: \"uppercase\",\n color: \"#D0D0D0\",\n },\n selected: { \"& .MuiTab-wrapper\": { color: \"#07193E\", fontWeight: \"bold\" } },\n indicator: {\n background:\n \"transparent linear-gradient(90deg, #072B4E 0%, #081C42 100%) 0% 0% no-repeat padding-box;\",\n height: 4,\n },\n scroller: {\n maxWidth: 1185,\n position: \"relative\",\n \"&::after\": {\n content: '\" \"',\n backgroundColor: \"#EEF1F4\",\n height: 4,\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 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) 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\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 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 );\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, { Fragment, useEffect, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n Bar,\n BarChart,\n Cell,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { CircularProgress, useMediaQuery } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { IBarChartConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport BarChartTooltip from \"./tooltips/BarChartTooltip\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { IDashboardPanel } from \"../types\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport { openZoomPage } from \"../../actions\";\nimport { useTheme } from \"@mui/styles\";\n\ninterface IBarChartWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n apiPrefix: string;\n zoomActivated?: boolean;\n openZoomPage: typeof openZoomPage;\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 displayErrorMessage,\n apiPrefix,\n zoomActivated = false,\n openZoomPage,\n}: IBarChartWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [result, setResult] = useState(null);\n\n useEffect(() => {\n if (propLoading) {\n setLoading(true);\n }\n }, [propLoading]);\n\n useEffect(() => {\n if (loading) {\n let stepCalc = 0;\n if (timeStart !== null && timeEnd !== null) {\n const secondsInPeriod = timeEnd.unix() - timeStart.unix();\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.unix()}` : \"\"\n }${timeStart !== null && timeEnd !== null ? \"&\" : \"\"}${\n timeEnd !== null ? `end=${timeEnd.unix()}` : \"\"\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 displayErrorMessage(err);\n setLoading(false);\n });\n }\n }, [loading, panelItem, timeEnd, timeStart, displayErrorMessage, 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 );\n};\n\nconst connector = connect(null, {\n displayErrorMessage: setErrorSnackMessage,\n openZoomPage: openZoomPage,\n});\n\nexport default withStyles(styles)(connector(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 }\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, useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { CircularProgress, useMediaQuery } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\nimport createStyles from \"@mui/styles/createStyles\";\nimport withStyles from \"@mui/styles/withStyles\";\nimport ZoomOutMapIcon from \"@mui/icons-material/ZoomOutMap\";\nimport { ILinearGraphConfiguration } from \"./types\";\nimport { widgetCommon } from \"../../../Common/FormComponents/common/styleLibrary\";\nimport { IDashboardPanel } from \"../types\";\nimport { setErrorSnackMessage } from \"../../../../../actions\";\nimport { widgetDetailsToPanel } from \"../utils\";\nimport { ErrorResponseHandler } from \"../../../../../common/types\";\nimport api from \"../../../../../common/api\";\nimport LineChartTooltip from \"./tooltips/LineChartTooltip\";\nimport { openZoomPage } from \"../../actions\";\nimport { useTheme } from \"@mui/styles\";\n\ninterface ILinearGraphWidget {\n classes: any;\n title: string;\n panelItem: IDashboardPanel;\n timeStart: any;\n timeEnd: any;\n propLoading: boolean;\n displayErrorMessage: any;\n apiPrefix: string;\n hideYAxis?: boolean;\n yAxisFormatter?: (item: string) => string;\n xAxisFormatter?: (item: string) => string;\n areaWidget?: boolean;\n zoomActivated?: boolean;\n openZoomPage: typeof openZoomPage;\n}\n\nconst styles = (theme: Theme) =>\n createStyles({\n ...widgetCommon,\n containerElements: {\n display: \"flex\",\n flexDirection: \"row\",\n height: \"100%\",\n flexGrow: 1,\n },\n verticalAlignment: {\n flexDirection: \"column\",\n },\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 margin: \"auto\",\n },\n });\n\nconst LinearGraphWidget = ({\n classes,\n title,\n displayErrorMessage,\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) => item,\n zoomActivated = false,\n openZoomPage,\n}: ILinearGraphWidget) => {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState